Настройка связки FreeRADIUS + DHCP + PostgreSQL
Привестствую дорогие товарищи!
Имеется у меня идея реализации аутентификации на основе протокола 802.1x.
Есть 3 сети, общее количество пользователей ~300. Все пользователи подключены к коммутаторам 2-го уровня с поддержкой протокола 802.1x.
У всех пользователей IP жестко привязан к MAC-у. Так как парк машин довольно большой, то вполне логично использовать DHCP в котором имеются записи IP+MAC, шлюз для конкретной сети и DNS серверы.
В общем, иммется база пользователей, на postgresql, в ней вся информация необходимая для freeradius.
FreeRADIUS настроен и отлично авторизует пользователей по следующим параметрам: Login, password, MAC, NAS-Port.
Осталось только после авторизации отправить настройки клиенту, вот тут-то и незадача, все DHCP сервера которые я смотрел не умеют работать с postgresql, впрочем как и с любой другой СУБД.
Вот тут я прочитал о интересной реализации: http://www.netpatch.ru/dhcp2radius.html.
Но! Как только я дочитал до конца, я понял что это мягко говоря полная чушь! Разработчики все перепутали: логин с МАС-ом, NAS-Port с IP сервером. И это нельзя изменить...
Конечно во freeradius появился свой DHCP, но он, как и заявляют разработчики, очень экспериментален и не расчитан для работы с проводными сетями.
Поэтому у меня такое видение картины: клиент авторизуется и коммутатор открывает ему порт, затем клиент посылает запрос на получение настроек и DHCP работающий на том же сервере ему их выдает.
Но как я писал выше, логичней держать все в базе, что я и делаю, вот только осталось найти этот самый DHCP которй умеет работать с СУБД, хотя бы через ODBC.
Товарищи, подскажите какие-нибудь рабочие варианты, как лучше сделать...
- Для комментирования войдите или зарегистрируйтесь
В принципе необязательно
В принципе необязательно искать DHCP, который умеет работать с СУБД. Можно на основе базы данных сгенерить конфиг для dhcpd, например (net-misc/dhcp). Задача довольно несложная: Пишется заголовок конфига, он как правило крайне редко меняется, а далее, надо циклом пройти все записи в базе и сформировать секции 'host' для каждой записи. После закрыть крайнюю скобку.
Типа:
Я понимаю, что решение выходит за рамки "установи - настрой - работай"... Тут надо уметь программировать. Но я думаю, что у каждого линуксоида найдется знакомый программист :) А задача в общем-то простая как сапог.
Когда я писал пост, я как раз
Когда я писал пост, я как раз думал над этим. Простой скрипт, скажем написанный на bash, делает запрос к базе и генерит файлик с привязкой IP-MAC.
Вот только мудрить с конфигом я бы не стал, просто в конец конфига DHCP добавил бы:
Но это явный костыль, хотелось бы родного решения, к тому же каждый раз после изменения этого файла, надо будет перезапускать DHCP сервер.
Если ничего не помогает, прочти наконец инструкцию...
Я использую у себя очень
Я использую у себя очень похожую схему. Потому и предложил такой вариант. Никаких проблем с перезагрузкой DHCP. Все отлично работает, и этих перезагрузок пользователь вообще не замечает. Схема проверена более, чем пятью годами непрерывной эксплуатации. У меня в кроне (раз в 5 минут) висит скрипт, что-то типа такого:
Самое главное, сделать проверку при внесении в поле 'login' на предмет отсутствия пробелов, нелатинских символов и пр. У меня были такие грабли - dhcpd не признает пробелы и нелатинские символы, и соответственно, не стартует, если встречает их в конфиге.
Ну с этим у меня уж точно
Ну с этим у меня уж точно проблем не будет, так как все данные храняться в PostgreSQL, логины имеют только цифры и создаются биллингом.
Если ничего не помогает, прочти наконец инструкцию...