Это старая версия документа.
Dhcphosts
Модуль управления DHCP сервером и ведения статических адресов абонентов
Модуль автоматически создаёт конфигурационный файл для DHCP сервера и вносит в него всех пользователей системы, в которых активизирован сервис DHCP.
Возможности
- Автоматическое создание конфигурационного файла ISC DHCP
- Привязка IP к MAC
- Передача пользователям дополнительных маршрутов
- Система гостевого входа
- Option 82 (Vlan, PORT, Switch IP, Client MAC)
- static arp, ipguard (FreeBSD), ipsentinel (Linux)
- Управление DHCP на удалённом сервере
- Мониторинг выданных адресов
- Использование нескольких серверов доступа
- Гостевой вход
- Авто активация и включение активных абонентов (при использовании вместе с модулем Ipn)
Установка
Создать таблицы в базе.
# mysql --default-character-set=utf8 -D abills < db/Dhcphosts.sql
Подключение модуля. abills/libexec/config.pl
@MODULES = ( 'Dhcphosts' );
Настройка ISC DHCP
Настройка ISC DHCP
Проверка работоспособности
Сообщения
Jan 19 17:12:28 null dhcpd: DHCPDISCOVER from 00:07:e9:19:72:1b via fxp0: network ne3: no free leases
Пользователь не может авторизироваться, так как его MAC не в базе.
Jan 19 18:08:19 null dhcpd: DHCPDISCOVER from 00:07:e9:19:72:1b via fxp0 Jan 19 18:08:19 null dhcpd: DHCPOFFER on 10.128.10.10 to 00:07:e9:19:72:1b via fxp0 Jan 19 18:08:19 null dhcpd: DHCPREQUEST for 10.128.10.10 (10.128.0.1) from 00:07:e9:19:72:1b via fxp0 Jan 19 18:08:19 null dhcpd: DHCPACK on 10.128.10.10 to 00:07:e9:19:72:1b via fxp0
Пользователь успешно подключился
Ведение лога в базе данных (DHCP История)
# ln -s /usr/abills/Abills/modules/Dhcphosts/dhcp_log2db.pl /usr/abills/libexec/dhcp_log2db.pl
FreeBSD:
правим /etc/syslog.conf
если есть
!dhcpd *.* /var/log/dhcpd.log
то удаляем и вставляем
!dhcpd *.* |/usr/abills/libexec/dhcp_log2db.pl
Linux:
/etc/rc.local
tail -F /var/log/dhcpd.log | /usr/abills/libexec/dhcp_log2db.pl
# cd /usr/abills/libexec/ # ln -s ../Abills/modules/Dhcphosts/dhcp_log2db.pl # killall -1 syslogd
sudo
sudo будет использоваться для переконфигурации сервера.
# cd /usr/ports/security/sudo && make && make install && make clean
Прописываем возможность запуска сервиса системой. /usr/local/etc/sudoers
# Для FreeBSD: #Allow dhcpd operation without password for webserver user www ALL = NOPASSWD: /usr/local/etc/rc.d/isc-dhcpd
Option 82
При использовании Options 82 коммутаторы заводятся в системе как сервера доступа (NAS).
/ Система/ Сервер доступа/
Необходимые параметры:
- IP адрес. Если у коммутатора нет IP адреса можно использовать несуществующий так как он не принимает участия в авторизации
- Название
- Тип сервера доступа
other
- указать MAC адрес коммутатора в настройках NAS.
дополнительные настройки
Запросе IP адреса система по умолчанию проверяет следующие параметры:
- MAC коммутатора
- Порт коммутатора
- Vlan клиента
- MAC клиента если включена опция $conf{DHCPHOSTS_O82_USE_MAC}=1;
если параметр не прописан в билинге он игнорируется и по нему проверка не происходит
При использовании данной опции параметры конфигурации сетей должны быть не отмеченными
Deny unknown clients: Server is authoritative for this shared network:
Для использования индивидуальных настроек классов авторизации пользуйтесь шаблоном (Правку шаблона осуществлять только через / Система/ Другое/ Шаблоны
). Система использует данный шаблон только при включённой опции $conf{DHCPHOSTS_O82_CLASS_TPL}=1;
dhcphosts_dhcp_conf_o82_class.tpl
Если используются коммутаторы с разными параметрами Option 82 нужно создать несколько правил авторизации разделив их параметром or
Пример:
Dhcphosts_dhcphosts_dhcp_conf_o82_class.tpl
# LOGIN: %LOGIN% class \"%OPTION82_NAS_NAME%-%OPTION82_NAS_MAC%-port-%OPTION82_NAS_PORT%\" { match if (substring(option agent.circuit-id, 24, 14) = \"%OPTION82_NAS_MAC%\" and substring(option agent.circuit-id, 39, 5) = \"%OPTION82_NAS_PORT%\" and substring(option agent.circuit-id, 57, 3) = \"%CLIENT_VLAN%\") or ( substring(option agent.circuit-id, 54, 2)=\"%CLIENT_VLAN%\" and substring(option agent.circuit-id, 48, 5) = \"%OPTION82_NAS_PORT%\" and substring(option agent.circuit-id, 35, 12) = ucase(\"%OPTION82_NAS_MAC%\")); }
Структура шаблона конфигурации dhcpd.conf
Dhcphosts_dhcphosts_dhcp_conf_main.tpl главный конфигурационный файл в него вносятся все общие данные
а также 3 секции
- %OPTION82_CLASS% - секция выражений Options 82 (dhcphosts_dhcp_conf_o82_class.tpl)
- %NETWORKS% - Секция DHCP сетей (dhcphosts_dhcp_conf_subnet.tpl)
- %HOSTS% - секция статических хостов (dhcphosts_dhcp_conf_host.tpl)
Примеры шаблонов авторизации
Для foxgate-s-6224-s2
# LOGIN: %LOGIN% class "%OPTION82_NAS_NAME%-%OPTION82_NAS_MAC%-port-%OPTION82_NAS_PORT%" { match if option agent.circuit-id="Vlan%CLIENT_VLAN%+Ethernet0/0/%OPTION82_NAS_PORT%" and option agent.remote-id="%OPTION82_NAS_MAC%"; }
Лог
Если все правильно настроено в логе DHCP сервера Вы должны видеть следующие сообщения: /var/log/dhcpd.log
Oct 19 18:26:36 billing dhcpd: DHCPDISCOVER from 00:13:77:34:5f:a8 via vlan3 Oct 19 18:26:37 billing dhcpd: DHCPOFFER on 172.23.1.55 to 00:13:77:34:5f:a8 (Druid) via vlan3 Oct 19 18:26:40 billing dhcpd: Lease for 172.23.1.55 is connected to interface 0/3 (add 1 to port number!), VLAN on switch 1:32 Oct 19 18:26:40 billing dhcpd: Lease for 172.23.1.55 raw option-82 info is CID: 0.3 AID: ac.17.1.32 Oct 19 18:26:40 billing dhcpd: DHCPDISCOVER from 00:13:77:34:5f:a8 (Druid) via vlan3
Ошибки ISC-DHCP
Ошибки которые отображаются в файле /var/log/dhcpd.log
- Все сделал DHCP стартовал но не раздаёт адреса.
Скорее всего у Вас не одна из сетей не настроена слушать запросы на Ваших интерфейсах.
Алгоритм поиска ошибок: 1. перезапустить isc-dhcp (проверить слушает ли на каком-нибудь интерфейсе)
# service isc-dhcp restart
Ошибка:
No subnet declaration for em1 (no IPv4 addresses). ** Ignoring requests on em1. If this is not what you want, please write a subnet declaration in your dhcpd.conf file for the network segment to which interface em1 is attached. **
- Не прописаны подсети для клиентов. Писать в '/usr/local/etc/dhcpd.conf'
- Проверить прописан ли IP (alias) для указаного интерфейса в указаной подсети.
2. проверить лог '/var/log/dhcpd.log' (или log.messages)
3. Сделать дамп интерфейса:
tcp-dump port 67 tcpdump -i ВАШ_ИНТЕРФЕЙС -n port 67
- Пересечение адресов
/usr/local/etc/dhcpd.conf line 142: lease 10.133.3.26 is declared twice! pool { range 10.133.3.26; ^
Проверте не пересекаются ли у Вас ренжи (rage) выдаваемых адресов
IP guard
Дополнительное расширение для модуля Dhcphosts позволяет управлять самостоятельным присвоением IP-адресов пользователями. Сиcтема автоматически формирует список IP/MAC-адресов, с которых и которым можно работать в сети. Все остальные пользователи при подключении к сети получают сообщение, что их сетевой адрес уже используется другим устройством. Список ограничения доступа пере создаётся после изменения данных абонентов и ночным периодиком.
config.pl
$conf{DHCPHOSTS_IPGUARD_FORMAT}=«MAC»; | Формат пар для FreeBSD ipguard MAC - контролировать только MAC MAC/IP контролировать MAC и IP-связки |
---|---|
$conf{DHCPHOSTS_IPGUARD_DENY_TPL}=«»; | Формат записи запрещено для файла конфигурационного ipguard. Переменные %IP% - IP адрес %MAC% - MAC адрес %LOGIN% - Логин %DEPOSIT% - Депозит. Появляется только при влючённой опции $conf{DHCPHOSTS_DEPOSITCHECK} %UID% - ID-пользователя %EXPIRE% - Дате истечения аккаунта Примеры: Linux ipsentinel: $conf{DHCPHOSTS_IPGUARD_DENY_TPL}='%IP% %MAC% # %LOGIN%; %STATUS%; %DEPOSIT%'; FreeBSD ipguard: $conf{DHCPHOSTS_IPGUARD_DENY_TPL}=«»; |
$conf{DHCPHOSTS_IPGUARD_ACCEPT_TPL}=«»; | Формат записи разрешено для файла конфигурационного ipguard. Примеры: Linux ipsentinel: $conf{DHCPHOSTS_IPGUARD_ACCEPT_TPL}='%IP%@!%MAC% # %LOGIN%; %STATUS%; %DEPOSIT%'; FreeBSD ipguard: $conf{DHCPHOSTS_IPGUARD_ACCEPT_TPL}='%MAC% %IP% # %LOGIN%; %STATUS%; %DEPOSIT%'; |
Для внесение статических записей / System configuration/ DHCP Networks/ IP guard/ Static/. Правила, тут объявленные, появляются в конце списка общих правил.
FreeBSD
Для ОС FreeBSD программа IP Guard. На базе этой программы и производится контроль.
# cd /usr/ports/security/ipguard && make && make install && make clean # cp /usr/local/etc/rc.d/ipguard.sh.sample /usr/local/etc/rc.d/ipguard.sh # chmod +x /usr/local/etc/rc.d/ipguard.sh
вносим изменения в файлы /usr/local/etc/rc.d/ipguard.sh
iface=fxp1 daemon_flags="-n 2 -u 60 -x -f /usr/abills/var/ipguard"
Запускаем
# /usr/local/etc/rc.d/ipguard.sh start
Для просмотра MAC/IP-пар, которые попали в список разрешённых, нужно открыть меню системы
/ System configuration/ DHCP Networks/ IP guard/
Вид для $conf{DHCPHOSTS_IPGUARD_FORMAT}=«MAC»;
00:07:e9:19:72:1b 0.0.0.0 # Login: aa1 00:07:e9:19:72:12 0.0.0.0 # Login: aa1 00:07:e9:19:72:22 0.0.0.0 # Login: aa1
Вид для $conf{DHCPHOSTS_IPGUARD_FORMAT}=«MAC/IP»;
00:07:e9:19:72:1b 10.128.10.10 # Login: aa1 00:07:e9:19:72:12 10.128.10.11 # Login: aa1 00:07:e9:19:72:22 10.128.10.15 # Login: aa1
Linux
Для ОС Linux программа ipsentinel
Вид:
10.128.0.109@!00:00:00:00:11:00 # aa1 ACCEPT 10.11.11.12@!00:00:00:ee:aa:01 # aa1 ACCEPT 10.0.0.10 00:16:36:a1:6d:75 # aa1 DENY
ARP Static
Занесение статических записей в ARP таблицу
abills/libexec/config.pl
$conf{DHCPHOSTS_IPGUARD_FORMAT}="MAC/IP"; $conf{DHCPHOSTS_RECONFIGURE}="/usr/local/bin/sudo /usr/local/etc/rc.d/isc-dhcpd restart; ". '/bin/cat /usr/abills/var/ipguard | /usr/bin/awk \'$1 !~ /#/ { print $2 " " $1 } \' > /usr/abills/var/arp_static ;'. ' /usr/local/bin/sudo /usr/sbin/arp -ad ;'. ' /usr/local/bin/sudo /usr/sbin/arp -f /usr/abills/var/arp_static ';
/usr/local/etc/sudoers
www ALL = NOPASSWD: /usr/sbin/arp
Пример управления удалённым сервером доступа
- Создание dhcp конфигурационного файла на удалённом NAS.
- Переконфигурация DHPC-сервера.
- Создание статической ARP таблицы
$conf{DHCPHOSTS_RECONFIGURE}='/usr/bin/scp -o StrictHostKeyChecking=no -i /usr/abills/Certs/id_dsa.abills_admin '. '/usr/local/etc/dhcpd.conf '. 'abills_admin\@10.10.20.16:/usr/local/etc/dhcpd.conf; '. '/usr/bin/scp -o StrictHostKeyChecking=no -i /usr/abills/Certs/id_dsa.abills_admin /usr/abills/var/ipguard '. 'abills_admin\@10.10.20.16:/usr/abills/var/ipguard; '. '/usr/bin/ssh -o StrictHostKeyChecking=no -i /usr/abills/Certs/id_dsa.abills_admin abills_admin\@10.10.20.16 "/usr/local/bin/sudo /usr/local/etc/rc.d/isc-dhcpd restart;' . '/bin/cat /usr/abills/var/ipguard | /usr/bin/awk \'\$1 !~ /#/ { print \$2 \" \" \$1 }\' > /usr/abills/var/arp_static ;'. ' /usr/local/bin/sudo /usr/sbin/arp -ad ;'. ' /usr/local/bin/sudo /usr/sbin/arp -f /usr/abills/var/arp_static "';
Загрузка ARP таблицу на Mikrotik
$conf{DHCPHOSTS_RECONFIGURE}='/bin/cat /usr/abills/var/ipguard | /usr/bin/awk \'\$1 !~ /#/ { print "/ip arp add address=" \$2 " mac-address=" \$1 " interface=Norq-ETH " } \' | /usr/bin/ssh -t -i /usr//abills/Certs/id_dsa.abills_admin abills_admin@10.0.0.3';
чтобы контролировать связки MAC/IP также нужно включить на интерфейса read-only в секции обучения мак адресов
Гостевой аккаунт
Гостевой аккаунт предполагает возможность зарегистрированным и авторизированным (имеющим право пользоваться сетью с учётом их депозита или других параметров) пользователям пользоваться сетью и получать свои статические IP-адреса, в тоже время незарегистрированные и неавторизированные пользователи попадают в гостевую сеть. В последующем нужно настроить гостевую сеть с ограниченным доступом (доступ только к пользовательскому порталу и т.д. ).
Для включения формы заполнения данных пользователем внесите в конфигурационный файл следующие опции.
$conf{DV_IP_DISCOVERY}=«1:129.168.0.0/24;NET_ID:ADDRESS_RANGE»; | Регистрация IP/MAC адреса клиента для последующей выдачи статического адреса данному клиенту в сети. Система автоматически ищет следующий свободный адрес и присваивает его клиенту прописывая в таблице адресов DHCP. NET_ID - в какую сеть регистрировать клиента. ADDRESS_RANGE - диапазон адресов куда должен попадать незарегистрированный клиент. Если не указать эту опцию все клиенты попадают в общую сеть указанную в первом параметре. Шаблоны сравнения указываются через точку с запятой. |
---|
Настройка
/ System configuration/ DHCP Networks/ Создаются две сети для гостевого и для зарегистрированного доступа. В первой сети для гостевого доступа нужно указать рендж выдаваемых IP-адресов.
IP Range: | Указываем IP, которые должны выдаваться в гостевом режиме |
---|
Для авторизированной сети этот параметр оставить пустым.
Шаблон описания зарегистрированного пользователя dhcphosts_dhcp_conf_host.tpl
# dhcphosts_dhcp_conf_host.tpl # Login: %LOGIN% host %HOSTNAME% { hardware ethernet %MAC%; fixed-address %IP%; option routers %ROUTERS%; %BOOT_FILE% option routers 10.100.20.1; }
10.100.20.1 - шлюз для зарегистрированных/авторизированных пользователей
leases2db.pl
При использовании DHCP сервера на сервере отдельном от биллинга целесобразно использовать для синхронизации с биллингом и мониторинга - агент экспорта leases2db.pl, который занимается експортом данных из dhcpd.leases в базу данных биллинга.
Проверка и экспорт данных осуществляется через промежуток времени указанны при старте (по умолчанию каждые 20 секунд) при условии что за этот промежуток времени был изменён файл dhcpd.leases.
leases2db.pl должен быть запущен на сервер с DHCP сервером. Агент работает как демон и автоматически проверяет при старте присутствие дублирующих процессов.
Установка:
# cd /usr/abills/libexec/ # ln -s ../Abills/modules/Dhcphosts/leases2db.pl
Для старта используется команда
# /usr/abills/libexec/leases2db.pl -d LEASES=/var/db/dhcpd/dhcpd.leases
Стоп /usr/abills/libexec/leases2db.pl
# /usr/abills/libexec/leases2db.pl stop
Параметры:
-d | Запустить как демон |
---|---|
-h | помощь в использовании программы |
LEASES=… | путь к dhcpd.leases файлу |
UPDATE_TIME=… | Время обновления |
DEBUG=… | Режим отладки |
NAS_ID= | ИД сервера доступа (по умолчанию 0) |
Для включения в мониторинге просмотра данной информации нужно указать опцию $conf{DHCPHOSTS_LEASES}='db';
ABillS
Файл конфигурации abills/libexec/config.pl
$conf{DHCPHOSTS_DEPOSITCHECK}=0.00; | Указывается сумма на счёту при которой выдавать IP адрес пользователям. |
---|---|
$conf{DHCPHOSTS_EXT_DEPOSITCHECK}=0.00; | Указывается сумма на дополнительном счёту при которой выдавать IP адрес пользователям. Данный параметр имеет больший приоритет чем $conf{DHCPHOSTS_DEPOSITCHECK} |
$conf{DHCPHOSTS_CONFIG}='/usr/local/etc/dhcpd.conf'; | Файл конфигурации для DHCP-сервера. По умолчанию /usr/local/etc/dhcpd.conf .Обязательно поставьте на файл права, с которыми работает WEB-сервер. |
$conf{DHCPHOSTS_LEASES}='/var/db/dhcpd/dhcpd.leases'; | Расположение dhcpd.leases файла для мониторинга выдачи IP адресов. В данный файл не попадают статически прописанные на MAC адрес адреса. |
$conf{DHCPHOSTS_LOG_CLEAN_DAYS}=30; | Период хранения логов в базе. По умолчанию 30 |
$conf{DHCPHOSTS_USE_DV_STATUS}=1; | Использовать статусы сервиса Internet для модуля Dhcphosts. Статус модуля Dv используется если статус Dhcphosts включено |
$conf{DHCPHOSTS_RECONFIGURE}='/usr/local/bin/sudo /usr/local/etc/rc.d/isc-dhcpd restart'; | Команда для перезапуска DHCP-сервера. Так, как для запуска сетевого сервиса нужны права суперпользователя (по умолчанию root), система перезапускает демон, используя sudo. |
Команда $conf{DHCPHOSTS_RECONFIGURE} также выполняется после изменения параметров учётной записи абонента. При изменении учётной записи абонента система передаёт команде следующие значения переменных щаблона (переменные шаблона должны экранироваться знаками процента с двух сторон %переменна%), а также эти значения устанавливают как переменные окружения .
UID | |
ID | Номер записи DHCP |
HOSTNAME | |
NETWORK | |
IP | |
BOOT_FILE | |
NEXT_SERVER | |
EXPIRE | |
DISABLE | |
COMMENTS | |
OPTION_82 | |
PORTS | |
VID | |
NAS_ID |
Пример
Локальный Linux (Ubuntu/Debian) сервер
$conf{DHCPHOSTS_CONFIG}='/etc/dhcp/dhcpd.conf'; $conf{DHCPHOSTS_LEASES}='db'; $conf{DHCPHOSTS_RECONFIGURE}='/usr/bin/sudo /etc/init.d/isc-dhcp-server restart';
Сети
Управление абонентами
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{DHCPHOSTS_EXPR}='-'; | Так как производители оборудования (коммутаторов) не всегда придерживаются стандартов при формирование запросов DHCP Option 82 в системе была создана возможность задать регулярное выражение для получения нужных параметров из DHCP запроса . Использовать дополнительные выражения для получения корректных данных с запросов от коммутаторов в которых параметры опции 82 отличаются от стандартных. формат выражения через точку с запятой: радиус_пара:условия:переменные:hex2ansii;условия переменные…. радиус_пара - радиус пара запроса условия - условия поиска Perl выражение переменные - переменные результата VLAN PORT 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 |
После внесения каких либо изменений по модулю в конфигурационный файл перезагружайте 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: | Мак адресе коммутатора |
если нужна динамическая выдача адресов обязательно выберите пул для коммутатора
Включение шейпера (ipoe_shapper)
Ограничение пропускаемой полосы занимается /usr/abills/libexec/ipoe_shapper.pl.
Программа работает в режиме демона и каждый 10 секунд проверяет нет ли новых сессий в мониторинге биллинга и заносит IP адреса новых абонентов в таблицы шейпера.
В режиме IPN_SHAPPER программа для каждого нового подключения выполняет поднятие правил шейпера програмами IPN управления ($conf{IPN_FW_START_RULE},$conf{IPN_FW_STOP_RULE}). Также в этом режиме выполняются правила $conf{IPN_FILTER}
Параметры
-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
Отслеживать ошибки выдачи адресов можно через меню
/ Отчёт/ Internet/ Ошибка/
Привязка к серверам доступа осуществляется используя параметр DHCP-Gateway-IP-Address как IP сервера доступа, если этот параметр не найден используется параметр DHCP-Server-IP-Address. Будьте внимательны параметр Radius NAS-Identifier не учитывается и если у вас несколько серверов с одинаковым IP система может использовать любой их них в случайном порядке
Список ошибок авторизации
- User Not Exist '00:11:22:11:11:a1' /0not Option82
Скорее всего запрос к серверу идёт не по Option 82, а через DHCP Broadcast. Нужно настроить коммутатор на Option 82 (Настройка оборудования)
- Can't find Switch MAC '00:11:22:11:11:a1' or user port '24'
Не найден коммутатор или подключенный абонент к данному коммутатору. Если используется автворизация по MAC тогда только коммутатор.
Коммутаторы заводятся в секции /Сиcтема/ Сервер доступу/
- Can't find MAC, Switch MAC '00:11:22:11:11:a1' port '24'
Авторизация по MAC. MAC абонента не обнаружен
Мониторинг активных сессий
/ Мониторинг/ Internet/
Отображаются активные сессии абонентов
Мониторинг резерва адресов
/ Мониторинг/ DHCP/
Отображаются зарезервированные IP адреса и параметры подключения абонентов: коммутатора, порт, VLAN, MAC адрес
Настройка оборудования
10.0.0.1 | Адрес DHCP сервера |
---|
Команды для настройки коммутатора L2 (DES-3526/DES-3550):
http://www.dlink.co.il/ru/faq/62/228.html
#Маршрутизатор по умолчанию create iproute default 30.51.8.11 # адрес DHCP сервера config dhcp_relay add ipif System 10.0.0.1 config dhcp_relay option_82 state enable enable dhcp_relay #Создать acl чтоб dhcp запрос клиента не уходил дальше порта create access_profile ip udp src_port_mask 0xFFFF profile_id 3 config access_profile profile_id 3 add access_id 1 ip udp src_port 68 port 1 deny config access_profile profile_id 3 add access_id 2 ip udp src_port 68 port 2 deny config access_profile profile_id 3 add access_id 3 ip udp src_port 68 port 3 deny config access_profile profile_id 3 add access_id 4 ip udp src_port 68 port 4 deny config access_profile profile_id 3 add access_id 5 ip udp src_port 68 port 5 deny config access_profile profile_id 3 add access_id 6 ip udp src_port 68 port 6 deny config access_profile profile_id 3 add access_id 7 ip udp src_port 68 port 7 deny config access_profile profile_id 3 add access_id 8 ip udp src_port 68 port 8 deny config access_profile profile_id 3 add access_id 9 ip udp src_port 68 port 9 deny config access_profile profile_id 3 add access_id 10 ip udp src_port 68 port 10 deny config access_profile profile_id 3 add access_id 11 ip udp src_port 68 port 11 deny config access_profile profile_id 3 add access_id 12 ip udp src_port 68 port 12 deny config access_profile profile_id 3 add access_id 13 ip udp src_port 68 port 13 deny config access_profile profile_id 3 add access_id 14 ip udp src_port 68 port 14 deny config access_profile profile_id 3 add access_id 15 ip udp src_port 68 port 15 deny config access_profile profile_id 3 add access_id 16 ip udp src_port 68 port 16 deny config access_profile profile_id 3 add access_id 17 ip udp src_port 68 port 17 deny config access_profile profile_id 3 add access_id 18 ip udp src_port 68 port 18 deny config access_profile profile_id 3 add access_id 19 ip udp src_port 68 port 19 deny config access_profile profile_id 3 add access_id 20 ip udp src_port 68 port 20 deny config access_profile profile_id 3 add access_id 21 ip udp src_port 68 port 21 deny config access_profile profile_id 3 add access_id 22 ip udp src_port 68 port 22 deny config access_profile profile_id 3 add access_id 23 ip udp src_port 68 port 23 deny config access_profile profile_id 3 add access_id 24 ip udp src_port 68 port 24 deny
Dlink DES3200 Dhcp snooping
Пример включение дляпортов 1-10
enable address_binding dhcp_snoop
Укажите максимальное количество создаваемых в процессе автоизучения записей IP-MAC на портах 1-10, равное 1
config address_binding allow_dhcp_snoop 1-10 total_entries 1
Активизируйте функцию IP-MAC-Port Binding в режиме DHCP Snooping на портах 1-10
config address_binding ip_mac ports 1-10 state enable
Настройте возможность передачи нулевого IP-адреса (0.0.0.0) для корректной работы протокола DHCP
config address_binding ip_mac ports 1-10 allowzeroip enable
Настройте возможность передачи пакетов от DHCP-сервера
config address_binding ip_mac ports 1-10 forward_dhcppkt enable
Linksys SPS224G4
#
Edge Core
Тестировалось на ES3510MA. Дополнительно включена опция snooping.
ip dhcp snooping ip dhcp snooping vlan <Интерфейс/Vlan> ip dhcp snooping information option ip dhcp snooping information policy replace # на аплинковых портах обязательно указать статус доверенный: interface ethernet 1/10 ip dhcp snooping trust
Cisco
С включённой опцией Snooping
ip dhcp snooping interface <Интерфейс/Vlan> ip helper-address 10.0.0.1 ip dhcp relay information trusted
foxgate-s-6224-s2
hostname hostname1 #задаем hostname (в этом примере нужен будет для Option82) service dhcp ip forward-protocol udp bootps ip dhcp relay information option ip dhcp snooping enable p dhcp snooping binding enable ip dhcp snooping information enable no ip dhcp snooping binding enable ip dhcp snooping information option remote-id standard ip dhcp snooping information option subscriber-id format hex vlan 100 # создаем vlan100 interface ethernet 0/0/1-24 # выбираем порты с 1 по 24 switchport access vlan 100 # назначаем портам доступ только для vlan100 interface ethernet 0/0/26 # выбираем порт 26 switchport mode trunk switchport trunk allowed vlan 100 ip dhcp snooping trust interface Vlan100 ip address 192.168.100.2 255.255.255.0
ZTE 2928E
set port statistics mode ingress set dhcp snooping-and-option82 enable set dhcp option82 add port 1 set dhcp option82 sub-option port 1 circuit-ID on cisco set dhcp option82 add port 2 set dhcp option82 sub-option port 2 circuit-ID on cisco ..... set dhcp option82 add port 25 set dhcp option82 add port 26 set dhcp option82 add port 27 set dhcp port 28 server set dhcp snooping add port 28 set dhcp option82 add port 28
Huawei s2326tp-ei
Версия прошивки: s2300ei-v100r006c05.cc
# !Software Version V100R006C05 # vlan batch 100 800 # dhcp enable dhcp snooping enable dhcp option82 format extend # http server load flash:/s2300ei-v100r006c05.web.zip # vlan 100 description ManageSwitch vlan 800 description client_vlan dhcp snooping enable dhcp snooping trusted interface GigabitEthernet0/0/1 dhcp option82 rebuild enable interface Ethernet0/0/24 interface Ethernet0/0/24 port link-type access port default vlan 800 dhcp snooping enable # interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 100 800
dhcp_tools.pl
Набор дополнительных утилит для работы с DHCP
- автоматическое занесения IP/MAC адресов пользователей в модуль Dhcphosts.
Работает в двух режимах:
- Занесение IP/MAC связок пользователей из файла.
Формат файла:
LOGIN[TAB]IP[TAB]MAC[TAB]PORTS[TAB]NAS_ID[TAB]OPTION_82[TAB]VID[TAB]HOSTNAME
- Режим ARP монитора система вытаскивает IP/MAC связки из arp таблицы сравнивает их с онлайн пользователями и заносит в базу
- Перенос абонентов из одной сети в другую.
# dhcp_tools.pl ADDRESS_SHIFT="NEW_NETWORK_ID:SRC_NET:DST_NET"
NEW_NETWORK_ID | номер в какую сеть перенести абонентов |
---|---|
SRC_NET | Поточная сеть абонентов. Маска сети /24 (255.255.255.0) |
DST_NET | Новая сеть абонентов. Маска сети /24 (255.255.255.0) |
Аргументы программы
NETWORK | ИД сети для ARG grab. |
---|---|
FILE | Режим парсера файла |
ADDRESS_SHIFT | Перенос абонентов из одной сети в другую |
DEBUG | Режим отладки |
Ошибки
- Dlink DES 3026 номера портов начинаются с 0 до 25