Модуль является коммерческим


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

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

Преимущества модуля:

  • Работа в реальном времени, не нужны перезагрузки и формирования файлов конфигурации

  • Раздача динамических адресов Mikrotik

  • Отсутствие привязки к MAC адресу абонента

  • Авторизация учитывая параметры: коммутатор, порт, vlan. Параметры могут учитываться все или по отдельности, в зависимости от их указания в профайле абонента

  • Ведение гостевой сети для не авторизированных абонентов и абонентов с отрицательным балансом

  • Авторегистрация новых абонентов

  • Специально разработанный шейпер для данного модуля (ipoe_shapper.pl - для шейпера используется механизм dummynet)

  • Работает со всем оборудованием, которое поддерживает DHCP Option 82 (RFC 3046)

  • Работа с Mikrotik DHCP сервером

Как работает:

  • Абонентское устройство подключается к сети через коммутатор или несколько коммутаторов по технологии IPoE. При включении сетевого устройства отправляется запрос на получение IP адреса.

Возможны следующие схемы подключения:

Абонент - Коммутатор - Билинг сервер с Freeradius DHCP

Абонент - Коммутатор - Mikrotik (DHCP Relay) - Билинг сервер с Freeradius DHCP

  • Для активных абонентов существуют пулы адресов из которых они выдаются, конечно если не прописан адрес на абонента статически (то есть прописано 0.0.0.0). Адреса выдаются с прикреплённых к серверу доступа пулов адресов

  • Для должников и незарегистрированных абонентов выдаются адреса из пулов гостевых IP

  • По окончанию периода аренды адреса адрес абонента считается свободным и может выдаваться другому абоненту

  • Если абонент постоянно работает и, по правилам DHCP, через половину leases периода отправляет пакет подтверждения, то его сессия продолжается

  • Под это все сделан шейпер, который поднимает правила для активных абонентов, может поднимать на сервера FreeBSD, Linux, а также на коммутаторах и есть поддержка использовать независимые внешние программы для шейпера

  • Конечно же, поддержка Option 82 c возможностью задавать шаблоны распознавания параметров коммутаторов, так как не все производители оборудования придерживаются стандартов


Включение и настройка

$AUTH{dhcp}='Mac_auth2';

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

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

Настройка радиус

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

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

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

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

Заполнить %DHCP_SERVER_IP%

vim /usr/local/freeradius/etc/raddb/sites-enabled/dhcp.conf

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

Listening on dhcp address 192.168.1.41 port 67 as server dhcp


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

$conf{NAS_PORT_AUTH}=1;Авторизовать абонента с учётом его порта подключения (SWITCH,PORT). Мак адрес не учитывается. Система следит чтобы на порту было не больше 1 авторизированного абонента
$conf{NAS_SECOND_MAC_AUTH}=1;Данная опция расширяет параметр $conf{NAS_PORT_AUTH}=1; Если не находится абонента по порту и комутатору система повторно ищет подходящего абонента по MAC адресу.
$conf{DHCPHOSTS_SWITCH_MAC_AUTH}='1,2,…';Список коммутаторов, в которых принудительно авторизировать по MAC адресу при включённой опции $conf{NAS_PORT_AUTH}
$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{AUTH_EXPR_DEBUG}=1;Режимы отладки 
1 - Режим сессий (файл: /tmp/rad_dhcp
2 - Режим ответов авторизации. (Файл: /tmp/rad_reply) 
3 - Режим выражений для проверки параметров Option 82 (Файл /tmp/dhcphosts_expr)
$conf{AUTH_EXPR}='-';Регулярные выражения
$conf{AUTH_PARAMS}=1;

Авторизация по совокупности заполненных параметров USER_MAC,PORT,VLAN,NAS_ID 
При использовании данной опции отключите $conf{NAS_PORT_BASE}


При включении этой опции внимательно следите чтобы не дублировались комбинации NAS PORT VLAN. При нахождении нескольких учеток по параметрам авторизации система не будет авторизировать такие запросы. Лучший выход из ситуации назначать номер порта -1  для всех учеток где не определен номер порта.


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

Например

$conf{AUTH_PARAMS}='USER_MAC,VLAN';

Система будет искать по MAC  абонента и VLAN


Доступные поля:

NAS_MAC
USER_MAC
VLAN
SERVER_VLAN
PORT
$conf{INTERNET_GUEST_STATIC_IP}=1;По умолчанию, через каждый алайв период система выдаёт гостевому абоненту новые IP адрес. При включении данной опции система постоянно выдаёт тот же IP что прописан в аккаунте (IP/DHCP)
$conf{INTERNET_STATUS_NEG_DEPOSIT}=1;Выдавать гостевой IP  для абонентов заблокированных по статусу услуги.

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

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

Дополнительные 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:MAC адрес коммутатора


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


Включение шейпера (ipoe_shapper)

Ограничение пропускаемой полосы занимается /usr/abills/libexec/ipoe_shapper.pl.
Программа работает в режиме демона и каждые 10 секунд проверяет нет ли новых сессий в мониторинге биллинга и заносит IP адреса новых абонентов в таблицы шейпера
В режиме IPN_SHAPPER программа для каждого нового подключения выполняет поднятие правил шейпера програмами IPN управления ($conf{IPN_FW_START_RULE}). Также в этом режиме выполняются правила $conf{IPN_FILTER}.

Программа не следит за депозитом или возможность доступа абонента, она выполняете поднятие шейпера для активных абонентов. Функции авторизации возложены на авторизатор, а функции слежения на программу billd.

Правила шейпера при завершении сессии возложены на контролер сессий billd.

Параметры

-dЗапускать в режиме демона (По умолчанию включено)
LOG_FILE=…Путь к файлу логов
UPDATE_TIME=…Период проверки новых подключений указывается в секундах (По умолчанию 10 секунд)
DEBUG=…Режим отладки 1-7 (Default: 8)
NAS_IDS=Номер сервера доступа, для которого поднимать правила шейпера (По умолчанию: Все)
IPN_SHAPPERВключить режим поднятия шейпера правилами IPN


cd /usr/abills/libexec/
ln -s ../Abills/modules/Dhcphosts/ipoe_shapper.pl ipoe_shapper.pl 

Включение:
перед включением убедитесь что скрипт поднятия шейпера установлен /usr/local/etc/rc.d/shaper_start.sh

/etc/rc.conf

abills_dhcp_shaper="YES"
abills_dhcp_shaper_nas_ids="1,2"  #список серверов доступа для контроля программой ipoe_shaper

интерфейс шейпера (опционально)

abills_ipn_if='em0';

Другие параметры shaper_start.sh

Отслеживать ошибки выдачи адресов можно через меню Отчёт>Интернет+>Ошибка
Привязка к серверам доступа осуществляется используя параметр DHCP-Gateway-IP-Address как IP сервера доступа, если этот параметр не найден используется параметр DHCP-Server-IP-Address.

Будьте внимательны параметр Radius NAS-Identifier не учитывается, и если у вас несколько серверов с одинаковым IP, система может использовать любой их них в случайном порядке


Включили сервер, но запросы в radius не попадают

Включили сервер но запросы в радиус не попадают

radiusd -X  

пусто

хотя в tcpdump они есть

tcpdump -vvvv  -i enp0s25 -n port 67
tcpdump: listening on enp0s25, link-type EN10MB (Ethernet), capture size 262144 bytes

14:04:11.786327 IP (tos 0xe0, ttl 255, id 2997, offset 0, flags [none], proto UDP (17), length 328)
    172.18.1.1.67 > 192.168.0.3.67: [udp sum ok] BOOTP/DHCP, Request from 00:00:00:00:11:11, length 300, hops 1, xid 0xb12938e9, Flags [none] (0x0000)
          Gateway-IP 172.18.1.1
          Client-Ethernet-Address 00:00:00:00:11:11
          Vendor-rfc1048 Extensions
            Magic Cookie 0x63825363
            DHCP-Message Option 53, length 1: Discover
            Client-ID Option 61, length 7: ether 00:00:00:00:11:11
            Hostname Option 12, length 4: "nout"
            Vendor-Class Option 60, length 8: "MSFT 5.0"
            Parameter-Request Option 55, length 12:
              Subnet-Mask, Domain-Name, Default-Gateway, Domain-Name-Server
              Netbios-Name-Server, Netbios-Node, Netbios-Scope, Router-Discovery
              Static-Route, Classless-Static-Route, Classless-Static-Route-Microsoft, Vendor-Option
            END Option 255, length 0
            PAD Option 0, length 0, occurs 17

скорее всего не доступен (не пингуется адрес Gateway-IP 172.18.1.1)

Gateway-IP 172.18.1.1