Это старая версия документа.


Freeradius DHCP

Freeradius DHCP не может одновременно работать с isc-dhcp, по этому перед запуском Freeradius DHCP отключите isc dhcp, если он включён


Для более гибкой раздачи IP адресов был разработан новый механизм выдачи адресов используя функции DHCP FreeRadius. Преимущества модуля:

  • Работа в реальном времени, не нужны перезагрузки и формирования файлов конфигурации
  • Раздача динамических адресов Mikr
  • Отсутствие привязки к MAC адресу абонента
  • Авторизация учитывая параметры: коммутатор, порт, vlan. Параметры могут учитываться все или по отдельности в зависимости от их указания в профайле абонента
  • Ведение гостевой сети для не авторизированных абонентов и абонентов с отрицательным балансом
  • Авторегистрация новых абонентов
  • Специально разработанный шейпер для данного модуля (ipoe_shapper.pl - для шейпера используется механизм dummynet).
  • Работает со всем оборудованием которое поддерживает DHCP Option 82 (RFC 3046)

Как работает

  • для активных абонентов существуют пулы адресов из которых они выдаются, конечно если не прописан адрес на абонента статически (то есть прописано 0.0.0.0). Адреса выдаются с прикреплённых к серверу доступа пулов адресов.
  • для должников и незарегистрированных абонентов выдаются адреса из пулов гостевых IP
  • по окончанию периода оренды адреса адрес абонента считается свободным и может выдаваться другому абоненту
  • если абонент постоянно работает и по правилам DHCP через половину лиз периода отправляет пакет подтверждения то его сесия продолжается
  • под это все сделан шейпер который поднимает правила для активных абонентов, может поднимать на сервера FreeBSD, Linux, а также на коммутаторах и есть поддержка использовать независимые внешние программы для шейпера
  • конечно же поддержка Option 82 c возможностью задавать шаблоны распознавания параметров коммутаторов, так как не все производители оборудования придерживаются стандратов

Включение и настройка
config.pl Прописать ниже переменной %AUTH=();

$AUTH{dhcp}='Mac_auth';

Скопировать модуль каталог билинга

cp Mac_auth.pm /usr/abills/Abills/mysql/

по умолчанию система контролирует дублирование маков, чтобы это обойти нужно в ( Настройки / SQL Commander ) сделать

ALTER TABLE dhcphosts_hosts DROP KEY mac;
ALTER TABLE dhcphosts_hosts DROP KEY ip;

настройка радиус
Скопировать файл конфигурации в конфигурационный каталог /usr/local/etc/

#  cp /usr/abills/misc/freeradius/v2/dhcp.conf raddb/sites-enabled/

Убедитесь то в raddb/dictionary подключён модуль dictionary.dhcp
если не подключён , - добавьте строку :

$INCLUDE     /usr/local/share/freeradius/dictionary.dhcp

Обязательно внесите изменения в dictionary.dhcp

  • удалить секцию
ATTRIBUTE      DHCP-Relay-Agent-Information            82      tlv

BEGIN-TLV       DHCP-Relay-Agent-Information
...
END-TLV         DHCP-Relay-Agent-Information
  • добавить секцию
ATTRIBUTE      DHCP-Relay-Agent-Information            82       octets
ATTRIBUTE      DHCP-Agent-Circuit-Id               0x0152       octets
ATTRIBUTE      DHCP-Agent-Remote-Id                0x0252       octets


Если все прошло успешно при старте radiusd -X программа покажет что открыла 67 порт для dhcp запросов.

Listening on dhcp address 192.168.1.41 port 67 as server dhcp



Дополнительные опции

$conf{DHCPHOSTS_PORT_BASE}=1; Авторизоваться абонента с учётом его порта подключения (SWITCH,PORT). Мак адрес не учитывается. Система следит что бы на порту было не больше 1 автоматизированного абонента.
$conf{DHCPHOSTS_SWITCH_MAC_AUTH}='1,2,…'; Список коммутаторов в которых принудительно авторизировать по мак адресу при включённой опции $conf{DHCPHOSTS_PORT_BASE}
$conf{DHCPHOSTS_GUEST_POOLS}='VLAN:POOL_ID:EXT_PARAMS' Объявление гостевого пула адресов. Данный пул выдаётся не авторизированным абонентам и абонентам с отрицательным балансом.
Параметры:

VLAN - Влан абонента
POOL_ID - Номер пула адресов в системе ABillS (заводится / Система/ Сервер доступа/ IP Pools)
EXT_PARAMS - Дополнительные радиус параметры для данного пула. Система предоставляет возможность заводить на каждый Vlan свой гостевой пул. Правила пулов разделяются точкой с запятой (;).

Пример:
$conf{DHCPHOSTS_GUEST_POOLS}='0:3:DHCP-Router-Address=10.22.0.1,DHCP-Subnet-Mask=255.255.252.0,DHCP-Domain-Name-Server=192.168.111.254';
$conf{DHCPHOSTS_LEASES}='db'; Включение в мониторинга leases сессий
$conf{DHCP_FREERADIUS_DEBUG}=1; Режимы отладки
1 - Режим сессий (файл: /tmp/rad_dhcp)
2 - Режим ответов авторизации. (Файл: /tmp/rad_reply)
3 - Режим выражений для проверки параметров Option 82 (Файл /tmp/dhcphosts_expr)
$conf{AUTH_EXPR}='-'; Так как производители оборудования (коммутаторов) не всегда придерживаются стандартов при формирование запросов DHCP Option 82 в системе была создана возможность задать регулярное выражение для получения нужных параметров из DHCP запроса . Использовать дополнительные выражения для получения корректных данных с запросов от коммутаторов в которых параметры опции 82 отличаются от стандартных.
формат выражения через точку с запятой:
радиус_пара:условия:переменные:hex2ansii;условия переменные….

радиус_пара - радиус пара запроса
условия - условия поиска Perl выражение
переменные - переменные результата VLAN PORT NAS_MAC MAC MAC_DEC (если мак не нужно преобразовывать в шестнадцатеричный из десятеричного) PORT_DEC (если не нужно преобразовывать порт из десятеричного в шестнадцатеричный формата)
hex2ansii - если указан єтот параметр система перед вычислением нужных переменных преобразует строку с шестнадцатеричного формата в текстовый


система при получении параметра проверяет нужно ли использовать внешние выражения если да начинает проходится по списку при попадании в параметры перебор прекращается и система подставляет выбранные VLAN PORT MAC MAC_DEC (если мак не нужно приобразовывать в десятичный форма из шестнадцатиричного) PORT_DEC (если не нужно приобразовывать порт из десятеричного шестнадцатиричного формата) в DHCP-Agent-Circuit-Id и DHCP-Agent-Remote-Id дальше уже идут стандартные процедуры работы с DHCP. При включении выражений система отключает шаблон по умолчанию для распознавания коммутаторов
$conf{DHCPHOSTS_AUTH_PARAMS}=1; Авторизация по совокупности заполненных параметров MAC,PORT,VLAN,NAS_ID
При использовании данной опции отключите $conf{DHCPHOSTS_PORT_BASE}
$conf{DHCPHOSTS_GUEST_STATIC_IP}=1; По умолчанию через каждый алайв период система выдаёт гостевому абоненту новые IP адрес. При включении данной опции система постоянно выдаёт тот же IP что прописан в аккаунте (IP/DHCP)

После внесения каких либо изменений по модулю в конфигурационный файл перезагружайте RADIUS

Данные о домене, DNS, NetMask, шлюзе система берёт в настройках DHCP сетей (/ Настройка / DHCP Сети/), или можно их у казать в радиус парах сервера доступа (/Настройка /Сервер доступа).

Дополнительные Radius Пары (указываются в Настройка /Настройка /Сервер доступа)

DHCP-Domain-Name-Server='8.8.8.8' адрес DNS сервера
DHCP-Subnet-Mask=255.255.255.255 маска сети
DHCP-Server-IP-Address='10.2.0.1' Адрес шлюза
DHCP-Router-Address='10.2.0.1' Адрес шлюза
Assign-Ports='1,24,25,' Определение разрешённых портов коммутатора. По умолчанию разрешены все порты

Настройка сервера доступа

/Настройка/ Сервер доступу/

IP: IP адрес коммутатора.
Name: Название
Alive: Время длительности перед повторным запросом IP (По умолчанию 600)
Type: dhcp
Mac: Мак адресе коммутатора

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