Допустим установлен FreeRADIUS 2 как написано в этой статье — Установка и настройка биллинговой системы ABillS
Теперь скопируем файл dhcp.conf в конфигурацию FreeRADIUS:
sudo cp /usr/abills/misc/freeradius/v2/dhcp.conf /usr/local/freeradius/etc/raddb/sites-enabled/
Откроем его в редакторе и заменим %DHCP_SERVER_IP% на ip адрес сервера и укажем сетевой интерфейс:
sudo nano /usr/local/freeradius/etc/raddb/sites-enabled/dhcp.conf
Откроем в редакторе словарь:
sudo nano /usr/local/freeradius/share/freeradius/dictionary
Добавим строку:
$INCLUDE dictionary.dhcp
Запустим Freeradius в режиме отладки:
radiusd -X
Возможно Freeradius уже запущен и запустить еще один естественно не получится, смотрите мою статью — Решение ошибки Failed binding to authentication address * port 1812: Address already in use freeradius
После запуска должно отобразится что-то вроде:
Listening on authentication address * port 1812
Listening on accounting address * port 1813
Listening on dhcp interface enp2s0 address 192.168.99.1 port 67 as server dhcp
Ready to process requests.
Комбинацией клавиш Ctrl+C остановим radiusd и запустим в обычном режиме:
sudo /etc/init.d/radiusd start
Если понадобится, то можно анализировать пакеты через tcpdump:
sudo tcpdump port 67 or port 68 -e -n sudo netstat -tulpn | grep :67
Приступим к настройке ABillS, импортируем базу модуля Dhcphosts:
mysql -u root -p --default-character-set=utf8 -D abills < /usr/abills/db/Dhcphosts.sql
Копируем платный модуль в ABillS:
cp Mac_auth.pm /usr/abills/Abills/mysql/
В файле config.pl ABillS должен быть подключен модуль Dhcphosts:
Откроем файл конфигурации ABillS в текстовом редакторе:
nano /usr/abills/libexec/config.pl
И пропишем следующие параметры:
$AUTH{dhcp}='Mac_auth'; # использовать для DHCP leases записей базу $conf{DHCPHOSTS_LEASES}='db'; # включить авторизацию по порту и коммутатору $conf{DHCPHOSTS_PORT_BASE}=1;
Естественно должен быть подключен модуль Dhcphosts:
@MODULES = ( 'Dhcphosts' );
Настроим DHCP логи, откроем в текстовом редакторе файл:
/usr/local/freeradius/etc/raddb/modules/linelog
И добавим в самом конце:
linelog linelog-dhcp { filename = ${logdir}/linelog-dhcp.log format = "" reference = "%{%{reply:DHCP-Message-Type}:-%{request:DHCP-Message-Type}}" DHCP-Discover = "%S --> Transaction-ID: %{DHCP-Transaction-Id} DISCOVER: [%{DHCP-Client-Hardware-Address}] via (%{DHCP-Gateway-IP-Address}), hop count = %{DHCP-Hop-Count}, Relay = %{DHCP-Relay-Remote-Id}, Hostname = %{DHCP-Hostname}" DHCP-Offer = "%S <-- Transaction-ID: %{DHCP-Transaction-Id} OFFER: %{reply:DHCP-Your-IP-Address} to [%{DHCP-Client-Hardware-Address}] ..." DHCP-Request = "%S --> Transaction-ID: %{DHCP-Transaction-Id} REQUEST: [%{DHCP-Client-Hardware-Address}] via (%{DHCP-Gateway-IP-Address}), hop count = %{DHCP-Hop-Count}, Relay = %{DHCP-Relay-Remote-Id} ..." DHCP-Ack = "%S <-- Transaction-ID: %{DHCP-Transaction-Id} ACK: %{reply:DHCP-Your-IP-Address} to [%{DHCP-Client-Hardware-Address}] ..." DHCP-NAK = "%S <-- Transaction-ID: %{DHCP-Transaction-Id} NAK: [%{DHCP-Client-Hardware-Address}] for %{request:DHCP-Client-IP-Address}; ..." 0 = "%S -/- Transaction-ID: %{DHCP-Transaction-Id} %{request:DHCP-Message-Type} DROPPED: ..." }
Если что, можно создать файл:
touch /var/log/linelog-dhcp.log chown freerad:freerad /var/log/linelog-dhcp.log
Перезапустим FreeRADIUS чтобы применить изменения:
sudo /etc/init.d/radiusd restart
На ошибку в логах «No name specified for Post-Auth-Type block» можно не обращать внимания.
Возможно придется дать доступ администратору к модулю Dhcphosts в меню ABillS «Настройка» — «Администраторы».
В «Настройка» — «Сервер доступа» добавим коммутатор для авторизации по порту и коммутатору:
IP: IP адрес коммутатора
Name: Название
Type: dhcp DHCP FreeRadius in DHCP mode
Mac: Мак адресе коммутатора
Если используется L3 схема с Accel-ppp, то нужно также добавить DHCP Relay в сервера доступа.
Смотрите также мою статью:
IPTables правила для FreeRADIUS