Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents


Warning

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 возможностью задавать шаблоны распознавания параметров коммутаторов, так как не все производители оборудования придерживаются стандартов


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

Code Block
languagebash
titleconfig.pl Прописать ниже переменной %AUTH=();
$AUTH{dhcp}='Mac_auth2';

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

Code Block
languagebash
cp Mac_auth2.pm /usr/abills/Abills/mysql/

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

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

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

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

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

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

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

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

Code Block
languagebash
Listening on dhcp address 192.168.1.41 port 67 as server dhcp


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

$conf{NAS_PORT_AUTH}=1;Авторизовать абонента с учётом его порта подключения (SWITCH,PORT). Мак адрес не учитывается. Система следит чтобы на порту было не больше 1 автоматизированного абонента
$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;Авторизация по совокупности заполненных параметров MAC,PORT,VLAN,NAS_ID 
При использовании данной опции отключите $conf{NAS_PORT_BASE}
$conf{INTERNET_GUEST_STATIC_IP}=1;По умолчанию, через каждый алайв период система выдаёт гостевому абоненту новые IP адрес. При включении данной опции система постоянно выдаёт тот же IP что прописан в аккаунте (IP/DHCP)

После внесения каких либо изменений по модулю в конфигурационный файл перезагружайте 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 адрес коммутатора


Warning

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


Включение шейпера (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


Code Block
languagebash
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

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

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

Code Block
languagebash
abills_ipn_if='em0';

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

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

Warning

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


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

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

Code Block
languagebash
radiusd -X  

пусто

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

Code Block
languagebash
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)

Code Block
languagebash
Gateway-IP 172.18.1.1