Перейти к содержимому
Калькуляторы

Вопрос про 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 в продакшене.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот тут гляньте:

http://forum.dlink.ru/viewtopic.php?t=61648

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

 

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-порт

 

Изменено пользователем Negator

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

 

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

 

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.