Авторизация через DHCP или использование Options 82

783 views
Skip to first unread message

Viktor

unread,
Jun 14, 2009, 2:14:24 PM6/14/09
to NoDeny
Может быть кто то прикручивал к биллингу авторизацию через DHCP?
Просто на данный момент мало кто использует тупые свичи которые не
имеют этой функции. Или планируется ли сделать эту фичу?

Данный вопрос происходит из того, что авторизация через PPPoE не самый
лучший вариант из-за того, что у клиента возникает паразитный
интерфейс и все идет через тоннель PPPoE до сервера авторизации, что
не есть лучший вариант - при росте клиентов ставить 10Гбит/с карточки
или ставить кучу этих серверов не выход. Или есть какой то другой
вариант (прописывать роутинг руками у клиентов - НЕ ВАРИАНТ - это
крайне НЕПРАВИЛЬНО). Использование авторизатора так же несет несколько
проблем связанных с клиентами - многие не понимают с чего им надо
скачивать какую то программулину.

Как следствие использование авторизации через DHCP вообще избавляет
клиента от знания сетевых настроек.

Viktor

unread,
Jun 14, 2009, 2:29:05 PM6/14/09
to NoDeny
Подробнее про протокол можно прочитать тут. http://xgu.ru/wiki/DHCP_option_82

Для тех кто не в курсе могу добавить что многие коммутаторы позволяют
использовать опцию 82 как авторизацию т.к. при не авторизованном порту
с него принимаются только пакеты DHCP клиента и только если в ответ от
DHCP сервера клиент получает ответ коммутатор открывает этот порт для
любого трафика.

Валентин Настенко

unread,
Jun 15, 2009, 6:53:31 AM6/15/09
to nod...@googlegroups.com
Насколько я понял проблема только в специфичном конфиге ДХЦП ? так просто поправь модуль дхцп для этого и работай

14 июня 2009 г. 21:29 пользователь Viktor <fresh...@gmail.com> написал:

elite

unread,
Jun 15, 2009, 9:23:35 AM6/15/09
to NoDeny

On 15 июн, 13:53, Валентин Настенко <versus...@gmail.com> wrote:
> Насколько я понял проблема только в специфичном конфиге ДХЦП ? так просто
> поправь модуль дхцп для этого и работай
>

Не совсем так. Надо в биллинг вносить дополнительные данные (номер
порта и номер коммутатора, к которому подключен клиент, чтобы на
основании этих данных DHCP-сервер мог выдать ip-адрес.

Viktor

unread,
Jun 15, 2009, 11:13:01 AM6/15/09
to NoDeny
Вот в том то и дело что скрипт генерации конфига должен понимать все
полностьючто необходимо, это привязка клиента, точнее основной и
алиасных записей должны четко привязываться к порту.

elite

unread,
Jun 15, 2009, 2:19:16 PM6/15/09
to NoDeny
а насчет влан на пользователя не думали?

Viktor

unread,
Jun 22, 2009, 9:49:28 AM6/22/09
to NoDeny
ВЛАН на пользоателя не совсем правильное решение ибо коммутация чем
раньше происходит тем лучше. Не лучший выход траф соседей гонять через
голову.

s...@ukr.net

unread,
Jun 22, 2009, 11:56:13 AM6/22/09
to NoDeny
> ВЛАН на пользоателя не совсем правильное решение ибо коммутация чем
> раньше происходит тем лучше. Не лучший выход траф соседей гонять через
> голову.
у pppoe тот же недостаток. Как промежуточное решение "влан на клиента"
имхо имеет хорошие положительные моменты:
- единообразная настройка конечных свичей
- отсутствие необходимости рулить ими в динамике
- более/менее хорошая защищенность
- не надо никаких хитрых фич типа опции 82
Все что надо:
- пробросить вланы на агрегирующий сервак
- на серваке в фаерволе настроить привязку вилан=мак=ip

Viktor

unread,
Jun 23, 2009, 1:11:27 AM6/23/09
to NoDeny
ВЛАН на клиента это те же грабли как и PPPoE просто палка мягкая.
Опять же произойдет потеря в производительности локальной сети. Плюс
возникает проблема поднятия сотен и сотен виртульных интерфейсов
которые должна будет переварить система. Вообщем смысл в одном -
маршрутизацией в локальной сети должно заниматься коммутационное
оборудование 3-го уровня а не как на сервер. У него и своих задач
хватает. в том числе вообще весь траф в .т.ч и пиринговый слать через
3-ий уровень. Особенно возникает в этом необходимость когда чисто
локальный траф на пиринг составляет 4-8 Тб в сутки. Если загонять все
ВЛАНы пользователей в одну гигабитную дырку это не правильно.

Василь Богаченко

unread,
Jun 23, 2009, 1:58:20 AM6/23/09
to nod...@googlegroups.com
У нас одна подсеть - один влан. Несколько сетей гоняются через сервер,
несколько через циску. Цыска работает и в Л2 и в Л3 режимах. Так что
если циска знает куда отправить пакет из Л3 то отправляет, если нет -
бросает на сервер. На сервере поднят дхцп и выдает адреса нескольким
подсетям по макам, в том числе и тем что за циской которая работает
релеем.

2009/6/23 Viktor <fresh...@gmail.com>:

Валентин Настенко

unread,
Jun 23, 2009, 4:29:24 AM6/23/09
to nod...@googlegroups.com
Что мешает добавить эти записи (порт, коммутатор) в дополнительные поля и в скрипте генерирования конфига дхцп, который пристуствует в нодени 49/50 учесть эти данные?
 

15 июня 2009 г. 18:13 пользователь Viktor <fresh...@gmail.com> написал:

Alexander Zanozin

unread,
Jun 23, 2009, 5:39:42 AM6/23/09
to nod...@googlegroups.com
А где находится скрипт генерирования конфига дхцп??

23 июня 2009 г. 11:29 пользователь Валентин Настенко <versus.ua@gmail.com> написал:

Валентин Настенко

unread,
Jun 23, 2009, 8:34:45 AM6/23/09
to nod...@googlegroups.com
23 июня 2009 г. 12:39 пользователь Alexander Zanozin <a.za...@googlemail.com> написал:

А где находится скрипт генерирования конфига дхцп??

Скрипт называется nomake.pl, лежит с папке сателитов, ему подсовывается соответствующий шаблон,
по которому будет сформирован итоговый конфиг:

perl nomake.pl -v dhcp.txt

Опция -v выводит действия на экран (verbose).

Вот пример шаблона:

<file>dhcpd.conft</file>
<reload>/usr/local/etc/rc.d/isc-dhcpd restart</reload>
allow unknown-clients;
option domain-name-servers 10.0.221.1, 192.168.21.250;
...
...
subnet 192.168.23.0 netmask 255.255.255.0 {
        max-lease-time 1209600;
        default-lease-time 1209600;
        range 192.168.23.2 192.168.23.215;
        option routers 192.168.23.1;
        option subnet-mask 255.255.255.0;
        option broadcast-address 192.168.23.255;
        option ntp-servers 10.0.221.1;
<filtr net:192.168.23.0/24>
        host <lat_login> {
                hardware ethernet <mac>;
                fixed-address <ip>;
        }
</filtr>

}

subnet 192.168.24.0 netmask 255.255.255.0 {
        max-lease-time 1209600;
        default-lease-time 1209600;
        option broadcast-address 192.168.24.255;
        option routers 192.168.24.1;
        range 192.168.24.2 192.168.24.209;
<filtr net:192.168.24.0/24>
        host <lat_login> {
                hardware ethernet <mac>;
                fixed-address <ip>;
        }
</filtr>
}

По типу html-тегов задаются указания, в примере:

<file>dhcpd.conf</file>  - имя выходного файла

<reload>/usr/local/etc/rc.d/isc-dhcpd restart</reload> - какая команда
будет запущена, если конфиг изменится. В данном примере рестарт dhcp-
сервера

Далее идут т.н фильтры, заключенные в <filtr ...> ... </filtr>

Для чего они нужны? Допустим у нас есть условия, при которых в конфиг
нужно внести либо тот либо другой фрагмент. В текущем примере, у нас
есть 2 эзернет сегмента 192.168.23.0 и 192.168.24.0, в которых dchp-
сервер будет выдавать различные данные. Поэтому применяется фильтр
<filtr net:192.168.23.0/24>, что указывает в текущем месте формировать
данные клиентов только для тех, кто попадает в сеть 192.168.23.0.

Пока существует один вид фильтра - по попаданию в сеть, у него код
`net`. Иные фильтры пока не придумал ибо пока не нужны. Жду ваших
предложений.

Далее по тексту все <mac>, <ip>, <pass> и т.д заменяются на
соответствующие данные клиента.

Шаблон для мак адреса необходимо завести в вэб админке:

Операции -  настройки - дополнительные поля - Создать новое

в форме выбрать шаблон: Технические данные

название: Мак Адрес

алиас: _mac

тип поля: строковое однострочное

поставить галочки убирать пробелы в начале конце и может быть пустым, если может быть пустым

сохраняем и вносим значения клиентам через кнопку дополнительные данные - технические данные поле мак адрес.


Вот пример результирующего конфига:

...
...
общие параметры
...
...

subnet 192.168.23.0 netmask 255.255.255.0 {
        max-lease-time 1209600;
        default-lease-time 1209600;
        range 192.168.23.2 192.168.23.215;
        option routers 192.168.23.1;
        option subnet-mask 255.255.255.0;
        option broadcast-address 192.168.23.255;
        option ntp-servers 10.0.221.1;

        host paparaci {
                hardware ethernet 00:12:34:56:79:981;
                fixed-address 192.168.23.7;
        }

        host XXXXXXXXXXXXXXXXXXXX {
                hardware ethernet 00:44:55:66:77:88;
                fixed-address 192.168.23.99;
        }

}

subnet 192.168.24.0 netmask 255.255.255.0 {
        max-lease-time 1209600;
        default-lease-time 1209600;
        option broadcast-address 192.168.24.255;
        option routers 192.168.24.1;
        range 192.168.24.2 192.168.24.209;

        host ji {
                hardware ethernet 00:44:55:66:77:88;
                fixed-address 192.168.24.6;
        }

        host  lalala  {
                hardware ethernet 11:44:55:66:77:88;
                fixed-address 192.168.24.9;
        }




в шаблоне

hardware ethernet <_mac>;

надо заменить на

hardware ethernet <dopdata-_mac>;

для корректной работы скрипта

скрипт nomake.pl работает в режиме демона и сам отслеживает изменения и обновляет конфиг для дхцп сервера.

elite

unread,
Jun 23, 2009, 9:26:42 AM6/23/09
to NoDeny

Никто же не заставляет терминировать вланы на серваке, их надо
терминировать на L3 свиче на агрегации.

elite

unread,
Jul 6, 2009, 4:47:39 PM7/6/09
to NoDeny
Получается, что при использовании опшн 82 никакой авторизации
средствами биллинга не требуется, т.к. мы знаем, что конкретному
пользователю соответствует конкретный ip-адрес и использовать другой
адрес пользователь не может. Получается, вся задача сводится к
формированию конфига dhcp-сервера с учетом синтаксиса для опшн 82. Эту
операцию и хотелось бы автоматизировать биллингом

s...@ukr.net

unread,
Jul 6, 2009, 5:28:47 PM7/6/09
to NoDeny
авторизация - только часть всего процесса. Никто не мешает юзеру
подделать ip и мак. Здесь надо юзать портсекурити, основанный на опции
82. Пишут, что такое существует, я не проверял

Валентин Настенко

unread,
Jul 7, 2009, 4:07:00 AM7/7/09
to nod...@googlegroups.com
Конфиг любой сложности можно сформировать текущим модулем генерации, с учетом дополнительных полей, в которые можно так же включить и порты и номера свичей.
Если существуют сложности с переводом рабочего конфига дхцп  на данный скрипт, то присылайте рабочие конфиги дхцп попробуем разобраться вместе.


6 июля 2009 г. 23:47 пользователь elite <mai...@gmail.com> написал:

elite

unread,
Jul 7, 2009, 11:08:44 AM7/7/09
to NoDeny

Ну это само собой подразумевается - использование option 82 + dhcp
snooping
И еще желательно предусмотреть возможность взаимодействия со свичами,
чтобы в случае появления незнакомого мак-адреса клиента перенаправляло
на страничку авторизации и только после авторизации разрешало работу.

Viktor

unread,
Jul 7, 2009, 1:46:47 PM7/7/09
to NoDeny
Да. И если авторизация по логину и паролю прошла то мак автоматом
прописался в БД на этот порт. А так же что бы модуль мониторинга мог
видеть что порт поднят или нет, а так же рисовалось бы это все на
карте (типа количество подключенных клиентов в данной точке,
например...) вообщем такое видел в других биллингах - очень удобно...

elite

unread,
Jul 7, 2009, 3:22:13 PM7/7/09
to NoDeny

Ну да, нужна система мониторинга сети. Только тут возникает
"небольшая" проблема - свичи как бы разные, и синтаксис команд у них
достаточно сильно отличается... :(

Alexey Golets

unread,
Jul 8, 2009, 10:10:33 AM7/8/09
to nod...@googlegroups.com
Ну для таких целей есть SNMP
И некоторые вещи давно стандартизированы.
Типа опроса состояния порта и таблицы мак адресов.

2009/7/7 elite <mai...@gmail.com>:

Reply all
Reply to author
Forward
0 new messages