=====Freeradius DHCP==== __**Freeradius DHCP не может одновременно работать с isc-dhcp, по этому перед запуском Freeradius DHCP отключите isc dhcp, если он включён**__ \\ {{http://abills.net.ua/img/dhcp_freeradius.gif}} \\ Для более гибкой раздачи IP адресов был разработан новый механизм выдачи адресов используя функции DHCP FreeRadius. Преимущества модуля: * Работа в реальном времени, не нужны перезагрузки и формирования файлов конфигурации * Раздача динамических адресов Mikrotik * Отсутствие привязки к MAC адресу абонента * Авторизация учитывая параметры: коммутатор, порт, vlan. Параметры могут учитываться все или по отдельности в зависимости от их указания в профайле абонента * Ведение гостевой сети для не авторизированных абонентов и абонентов с отрицательным балансом * Авторегистрация новых абонентов * Специально разработанный шейпер для данного модуля (ipoe_shapper.pl - для шейпера используется механизм dummynet). * Работает со всем оборудованием которое поддерживает DHCP Option 82 (RFC 3046) * [[abills:docs:nas:mikrotik:dhcp|Работа с Mikrotik DHCP сервером ]] **Как работает** \\ * Абонентское устройство подключается к сети через комутатор или несколько комутаторов по технологии IPoE. При включении сетевого устройства отправляется запрос на получение IP адреса. возможны следующие схемы подключения: ** Абонент - Коммутатор - Билинг сервер с Freeradius DHCP ** ** Абонент - Коммутатор - Mikrotik (DHCP Relay) - Билинг сервер с Freeradius DHCP ** * для активных абонентов существуют пулы адресов из которых они выдаются, конечно если не прописан адрес на абонента статически (то есть прописано 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 # 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{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}='-'; | [[abills:docs:modules:dhcphosts_expr:ru|Регулярные выражения]] | ^$conf{AUTH_PARAMS}=1; |Авторизация по совокупности заполненных параметров MAC,PORT,VLAN,NAS_ID \\ **При использовании данной опции отключите $conf{DHCPHOSTS_PORT_BASE} ** | ^$conf{DHCPHOSTS_GUEST_STATIC_IP}=1; |По умолчанию через каждый алайв период система выдаёт гостевому абоненту новые IP адрес. При включении данной опции система постоянно выдаёт тот же IP что прописан в аккаунте (IP/DHCP) | **После внесения каких либо изменений по модулю в конфигурационный файл перезагружайте RADIUS** * [[abills:docs:modules:dhcphosts_expr:ru|Примеры Выражений]] Данные о домене, 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: | Мак адресе коммутатора | **если нужна динамическая выдача адресов обязательно выберите пул для коммутатора ** ====Включение шейпера (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'; другие параметры [[abills:docs:manual:shaper_start|shaper_start.sh]] **Отслеживать ошибки выдачи адресов можно через меню**\\ '' / Отчёт/ Internet/ Ошибка/ '' \\ \\ Привязка к серверам доступа осуществляется используя параметр **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 =====Дополнительно===== * [[abills:docs:other:freeradiusdhcp_linux|Freeradius DHCP + Linux]] * [[abills:docs:other:freeradiusdhcp_stepbystep|Freeradius DHCP + FreeBSD]]