Установка FreeRADIUS
Если FreeRADIUS уже установлен на сервере, создайте дополнительный экземпляр freeradius-dhcp
, используя соответствующее руководство: Создание дополнительного экземпляра сервера FreeRADIUS
Установка пакета производится из репозитория компании Латера (deb.hydra-billing.com
). Данный репозиторий подключается сотрудниками компании Латера в рамках технической поддержки. Отличие от штатного пакета freeradius в том, что он собран со всеми необходимыми для работы модулями. Рекомедуется также установить пакет freeradius-utils, содержащий программы-клиенты и утилиты для работы с сервером.
user@server:~$ sudo aptitude update && \ sudo aptitude install freeradius freeradius-utils
Настройка FreeRADIUS для работы в качестве DHCP-сервера
Изменение основной конфигурации
В файле конфигурации /etc/freeradius-dhcp/sites-available/dhcp-hydra
необходимо указать в специально отмеченных строках IP-адрес внешнего интерфейса сервера, на котором установлена данная копия FreeRADIUS. Пример готовой конфигурации представлен ниже:
После изменения файла конфигурации необходимо отключить все остальные конфигурации и включить нужную:
user@server:~$ sudo rm /etc/freeradius-dhcp/sites-enabled/default && \ sudo rm /etc/freeradius-dhcp/sites-enabled/inner-tunnel && \ cd /etc/freeradius-dhcp/sites-enabled && \ sudo ln -s ../sites-available/dhcp-hydra .
В файле /etc/freeradius-dhcp/radiusd.conf
следует полностью закомментировать или удалить все (по умолчанию их две) секции listen
, а также изменить значение параметра proxy_request
:
Подключение модуля hard-dhcp
В модуле /etc/freeradius-dhcp/modules/perl
необходимо включить использование модуля hard-dhcp.pm
:
perl { # # The Perl script to execute on authorize, authenticate, # accounting, xlat, etc. This is very similar to using # 'rlm_exec' module, but it is persistent, and therefore # faster. # module = ${confdir}/hard-dhcp.pm ... }
Настройка логирования
Для логирования DHCP-запросов необходимо в конец файла /etc/freeradius-dhcp/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: ..." }
Настройка параметров подключения к агенту HARD
Параметры подключения необходимо указать в файле /etc/freeradius-dhcp/hard-dhcp.pm следующим образом:
... # Параметры для связи с HARD use constant HARD_API_URL => "http://<hard_ip_addr>:<hard_port>/<plugin_name>/<plugin_object>"; # API URL use constant HARD_AUTH_USER => "<hard_login>"; # Логин use constant HARD_AUTH_PASSWORD => "<hard_password>"; # Пароль ...
<hard_ip_addr>
— IP-адрес, на котором агент HARD принимает запросы;<hard_port>
— номер порта, на котором агент HARD принимает запросы;<plugin_name>
— название используемого плагина агента HARD;<plugin_object>
— название объекта указанного плагина, которому будут передаваться запросы;<hard_login>
— логин для подключения к агенту HARD;<hard_pasword>
— пароль для подключения к агенту HARD.
Пример:
... # Параметры для связи с HARD use constant HARD_API_URL => "http://localhost:11080/dhcp/main"; # API URL use constant HARD_AUTH_USER => "hydra"; # Логин use constant HARD_AUTH_PASSWORD => "q123"; # Пароль ...
Настройка используемой RADIUS-службы
В файле /etc/freeradius-dhcp/hard-dhcp.pm также необходимо указать сетевую RADIUS-службу, которая будет использоваться с данным сервером:
# Код сетевой службы RADIUS в АСР use constant HYDRA_AAA_SERV => "<radius_serivce_code>";
<radius_serivce_code>
— код сетевой RADIUS-службы.
Пример:
# Код сетевой службы RADIUS в АСР use constant HYDRA_AAA_SERV => "RADIUS-DHCP";
Запуск
Управлять состоянием сервера вручную можно с помощью инициализационного скрипта /etc/init.d/freeradius-dhcp:
user@server:~$ sudo /etc/init.d/freeradius-dhcp <command>
Вместо <command> следует использовать одну из команд:
start
— запуск сервера,stop
— остановка сервера ,restart
— проверка конфигурации и перезапуск сервера,reload
— проверка конфигурации и отправка серверу сигнала о необходимости перезагрузки конфигурации,configtest
— проверка конфигурации,debug
— запуск в режиме отладки (наиболее подходящий для настройки сервера режим работы).