Jump to content
Калькуляторы

Вопрос про dhcpd.conf Вопрос про dhcpd.conf, возмоджности eval

Интересует сравнительно небольшая по числу абонентов инсталляция 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 в продакшене.

 

Share this post


Link to post
Share on other sites

Любой скрипт, создающий правильный конфиг из удобных данных?

Share this post


Link to post
Share on other sites

А зачем вам вообще мак свича?

зачем анализировать это поле?

Вот живой пример

 

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 by Negator

Share this post


Link to post
Share on other sites

проблемы две, точнее два неудобства:

 

1. На каждого абонента придётся создавать класс, в котром указывать идентификатор свича (remote-id=MAC). Т.е. если в свиче 20 юзеров, то в конфигепридётся 20 раз указать МАС свича. Неужели нет способа указывать МАС один раз ? зачем такая избыточность ? :-).

 

2. Приходится использовать именно MAC, т.к. не все свичи умеют отдавать ip в качестве remote-id. Например, с2950 не умеет ничего кроме МАС адреса и это не повод выбрасывать, номральный свич. Сменил свич - вперёд менять конфиг и искать там 20 раз этот МАС. Там и мак-то ещё в странной форме записи - без нулей. с2960 тоже не умеет ip отдавать, там можно чё-то наконфигурять, даже слово какое-то может отдавать (написать в это слово ойпи свича можно :-)), но не ойпи в чистом виде. В общем. в сети оборудование разное, поэтому для унификации нужно юзать МАС.

 

Инсталляция не большая, городить огород с dhcpd+patch + радиус и СУБД слишком сложно. Просто хочу нормальные конфиги :-).Видимо, действительно придётся писать скрипт, который генерит конфиг ...

Share this post


Link to post
Share on other sites

>Видимо, действительно придётся писать скрипт, который генерит конфиг

 

Нормальная практика, полезную информацию хранить в базе и редактировать через web, да через тот же phpPgAdmin. И сделать отдельную страничку с кнопочкой "сгенирить конфиг и зарелодить dhcpd". Релод через веб-сервер рекомендую делать через sudo, весьма удобно

Share this post


Link to post
Share on other sites

[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 минут дергаем скрипт... Ничего релоадить не надо, оно само ;)

Share this post


Link to post
Share on other sites
проблемы две, точнее два неудобства:

 

1. На каждого абонента придётся создавать класс, в котром указывать идентификатор свича (remote-id=MAC). Т.е. если в свиче 20 юзеров, то в конфигепридётся 20 раз указать МАС свича. Неужели нет способа указывать МАС один раз ? зачем такая избыточность ? :-).

 

2. Приходится использовать именно MAC, т.к. не все свичи умеют отдавать ip в качестве remote-id. Например, с2950 не умеет ничего кроме МАС адреса и это не повод выбрасывать, номральный свич. Сменил свич - вперёд менять конфиг и искать там 20 раз этот МАС. Там и мак-то ещё в странной форме записи - без нулей. с2960 тоже не умеет ip отдавать, там можно чё-то наконфигурять, даже слово какое-то может отдавать (написать в это слово ойпи свича можно :-)), но не ойпи в чистом виде. В общем. в сети оборудование разное, поэтому для унификации нужно юзать МАС.

 

Инсталляция не большая, городить огород с dhcpd+patch + радиус и СУБД слишком сложно. Просто хочу нормальные конфиги :-).Видимо, действительно придётся писать скрипт, который генерит конфиг ...

Еще раз. Мы не анализируем remote-id, мы смотрим с какого IP пришел этот запрос. Нам вообще remote-id не нужно

 

Share this post


Link to post
Share on other sites
проблемы две, точнее два неудобства:

 

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, и нужно выдавать ойпи - такая задачка.

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this