wtyd Posted April 4, 2010 · Report post Интересует сравнительно небольшая по числу абонентов инсталляция dhcpd с использованием option 82. Как бы всё работает, но конфиг уж очень неудобный получается: приходится в *каждом* class в его match определять и МАС свича и порт. МАС, а не ip - потому что все свичи умеют МАС, но ip отдавать умеют не все. Порты кстати у цыско с нуля начинаются, а у других мутаторов с 1 - тоже неудобно и хочется заменить переменной, но не знаю как. Суть вопроса: можно ли каким-либо образом указывать в конфиге МАС свича один раз, чтобы потом ссылаться на него в каждом матче ? Т.е. что-то типа переменных или макросов интересует. Или допустим с помощью eval написать что-то типа: # матчим свич if suffix(option agent.remote-id,6) = 0:1:2:47:7c:0 { # первый порт с2950 if match if suffix( option agent.circuit-id, 1 ) = 0 { fixed-address 192.168.12.2; } # второй порт с2950 if match if suffix( option agent.circuit-id, 1 ) = 1 { fixed-address 10.23.44.8; } } ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - вот именно так у меня не получилось даже с одним портом. Вообще любые варианты упрощения конфига интересуют, не обязательно с классами или eval. Про dhcpd+patch+radius+pgsql я читал на этом форуме, но IMHO это что-то монстрообразное. Если бы там примеры для mysql были, то я может быть и посмотрел бы :-), но не капенгаген в pgsql :-). А для mysql есть хотябы dialupadmin, кривой он но жить можно. Остаётся ещё просто freeradius, но они сами не рекомендуют пользовать их dhcp в продакшене. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
ixi Posted April 5, 2010 · Report post Любой скрипт, создающий правильный конфиг из удобных данных? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
BuHast Posted April 5, 2010 · Report post Вот тут гляньте: http://forum.dlink.ru/viewtopic.php?t=61648 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Negator Posted April 5, 2010 (edited) · Report post А зачем вам вообще мак свича? зачем анализировать это поле? Вот живой пример class "2543" { match if concat(binary-to-ascii(10, 8, ".", packet(24, 4)), ":", binary-to-ascii(10, 8, "", substring(option agent.circuit-id, 5, 1))) = "10.40.5.79:6"; } соответственно 10.40.5.79 -IP свича 6-порт Edited April 5, 2010 by Negator Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
wtyd Posted April 5, 2010 · Report post проблемы две, точнее два неудобства: 1. На каждого абонента придётся создавать класс, в котром указывать идентификатор свича (remote-id=MAC). Т.е. если в свиче 20 юзеров, то в конфигепридётся 20 раз указать МАС свича. Неужели нет способа указывать МАС один раз ? зачем такая избыточность ? :-). 2. Приходится использовать именно MAC, т.к. не все свичи умеют отдавать ip в качестве remote-id. Например, с2950 не умеет ничего кроме МАС адреса и это не повод выбрасывать, номральный свич. Сменил свич - вперёд менять конфиг и искать там 20 раз этот МАС. Там и мак-то ещё в странной форме записи - без нулей. с2960 тоже не умеет ip отдавать, там можно чё-то наконфигурять, даже слово какое-то может отдавать (написать в это слово ойпи свича можно :-)), но не ойпи в чистом виде. В общем. в сети оборудование разное, поэтому для унификации нужно юзать МАС. Инсталляция не большая, городить огород с dhcpd+patch + радиус и СУБД слишком сложно. Просто хочу нормальные конфиги :-).Видимо, действительно придётся писать скрипт, который генерит конфиг ... Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
s.lobanov Posted April 5, 2010 · Report post >Видимо, действительно придётся писать скрипт, который генерит конфиг Нормальная практика, полезную информацию хранить в базе и редактировать через web, да через тот же phpPgAdmin. И сделать отдельную страничку с кнопочкой "сгенирить конфиг и зарелодить dhcpd". Релод через веб-сервер рекомендую делать через sudo, весьма удобно Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
martin74 Posted April 5, 2010 · Report post [root@dhcp1 ~]# cat /usr/local/sbin/sync.sh #!/bin/bash /usr/bin/rsync -az --password-file=/etc/rsync.password rsync://executor@10.0.0.1/dhcp/dhcpd.conf /etc/dhcpd.conf # проверка на перезапуск служб из за измененных конфигов # dhcp /usr/bin/md5sum --check --status /var/lib/sync/dhcp RETVAL=$? if [ $RETVAL != 0 ]; then /etc/init.d/dhcpd restart /usr/bin/md5sum /etc/dhcpd.conf > /var/lib/sync/dhcp fi и раз в 5 минут дергаем скрипт... Ничего релоадить не надо, оно само ;) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Negator Posted April 6, 2010 · Report post проблемы две, точнее два неудобства: 1. На каждого абонента придётся создавать класс, в котром указывать идентификатор свича (remote-id=MAC). Т.е. если в свиче 20 юзеров, то в конфигепридётся 20 раз указать МАС свича. Неужели нет способа указывать МАС один раз ? зачем такая избыточность ? :-). 2. Приходится использовать именно MAC, т.к. не все свичи умеют отдавать ip в качестве remote-id. Например, с2950 не умеет ничего кроме МАС адреса и это не повод выбрасывать, номральный свич. Сменил свич - вперёд менять конфиг и искать там 20 раз этот МАС. Там и мак-то ещё в странной форме записи - без нулей. с2960 тоже не умеет ip отдавать, там можно чё-то наконфигурять, даже слово какое-то может отдавать (написать в это слово ойпи свича можно :-)), но не ойпи в чистом виде. В общем. в сети оборудование разное, поэтому для унификации нужно юзать МАС. Инсталляция не большая, городить огород с dhcpd+patch + радиус и СУБД слишком сложно. Просто хочу нормальные конфиги :-).Видимо, действительно придётся писать скрипт, который генерит конфиг ... Еще раз. Мы не анализируем remote-id, мы смотрим с какого IP пришел этот запрос. Нам вообще remote-id не нужно Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
wtyd Posted April 8, 2010 · Report post проблемы две, точнее два неудобства: 1. На каждого абонента придётся создавать класс, в котром указывать идентификатор свича (remote-id=MAC). Т.е. если в свиче 20 юзеров, то в конфигепридётся 20 раз указать МАС свича. Неужели нет способа указывать МАС один раз ? зачем такая избыточность ? :-). 2. Приходится использовать именно MAC, т.к. не все свичи умеют отдавать ip в качестве remote-id. Например, с2950 не умеет ничего кроме МАС адреса и это не повод выбрасывать, номральный свич. Сменил свич - вперёд менять конфиг и искать там 20 раз этот МАС. Там и мак-то ещё в странной форме записи - без нулей. с2960 тоже не умеет ip отдавать, там можно чё-то наконфигурять, даже слово какое-то может отдавать (написать в это слово ойпи свича можно :-)), но не ойпи в чистом виде. В общем. в сети оборудование разное, поэтому для унификации нужно юзать МАС. Инсталляция не большая, городить огород с dhcpd+patch + радиус и СУБД слишком сложно. Просто хочу нормальные конфиги :-).Видимо, действительно придётся писать скрипт, который генерит конфиг ... Еще раз. Мы не анализируем remote-id, мы смотрим с какого IP пришел этот запрос. Нам вообще remote-id не нужно Вам не нужно, нам нужно :-). Если вы не смотрите на remote-id, значит вы используете dhcp-relay. dhcp-snooping в чистом виде (а именно толкько в чистом виде он нормально работает на имеющемся у нас оборудовании) не передаёт ip-адрес, только вставляет remote-id и circuit-id. Вот, имея только эти два id, и нужно выдавать ойпи - такая задачка. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...