Jump to content

Recommended Posts

Posted

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

 

Posted (edited)

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

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

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

 

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
Posted

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

 

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

 

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

 

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

Posted

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

 

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

Posted

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

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

 

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

 

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

 

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

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

 

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

 

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.