Существует возможность запустить eltex-radius в docker-контейнере. Для этого необходимо подготовить файл с переменными окружения .env, eltex-radius.env и docker-compose.yml.
1) Выключить сервис eltex-radius, если он включен с помощью команды service eltex-radius stop
. В случае, если сервис был ранее установлен, необходимо отключить его запуск при перезагрузке сервера командой systemctl disable eltex-radius.service
2) В EMS-Администрирование-Настройка сервера-системные модули убрать галочку с пункта перезапускать Radius (потребуется настроить динамическое изучение клиентов eltex-radius).
3) Предварительно установить docker, docker-compose если он еще не установлен.
4) Создать отдельную папку, в которой будут храниться все конфигурационные файлы докер-контейнера (здесь и далее - eltex-radius):
eltex@eltex:~$ mkdir -p eltex-radius/certs/ eltex@eltex:~$ cd eltex-radius |
5) Создать файлы docker-compose.yml, .env и eltex-radius.env со следующим содержанием:
version: '3' services: eltex-radius: container_name: eltex-radius network_mode: host image: hub.eltex-co.ru/softwlc/eltex-radius:<SoftWLC version>-<tag> env_file: eltex-radius.env volumes: # Eltex OUI list - /usr/share/oui-base/oui-freeradius.txt:/usr/share/oui-base/oui-freeradius.txt:ro # Eltex-Radius-NBI certificates - ./eltex-radius/certs/ca/wireless-ca.crt:/etc/eltex-radius/certs/ca/default.pem:ro - ./eltex-radius/certs/server.crt:/etc/eltex-radius/certs/server.crt:ro - ./eltex-radius/certs/server.key:/etc/eltex-radius/certs/server.key:ro |
Вместо <SoftWLC version>-<tag> необходимо указать актуальную версию SoftWLC и версию пакета, которую можно посмотреть по ссылке. |
# ! Настройки приложения ! # # Ports on which server will listen RADIUS_AUTH_PORT=1812 RADIUS_ACCT_PORT=1813 RADIUS_INNER_TUNNEL_PORT=18121 # MySQL database RADIUS_DB_HOST=localhost RADIUS_DB_PORT=3306 RADIUS_DB_LOGIN=radius RADIUS_DB_PASSWORD=radpass RADIUS_DB_NAME=radius # PCRF # If you setting RADIUS_PCRF_ENABLED=0, then you also should enable accounting port listening in "default" server RADIUS_PCRF_HOST=127.0.0.1 RADIUS_PCRF_PORT=7080 RADIUS_PCRF_ENABLED=1 # EAP RADIUS_CA_CERT_NAME=default.pem RADIUS_TLS_KEY_PASSWORD=eltex # Proxying RADIUS_PROXY_AUTH=0 RADIUS_PROXY_DOMAIN_REGEX=^(.+\.)?enterprise\.root$ RADIUS_PROXY_HOST=127.0.0.1 RADIUS_PROXY_PORT=18121 RADIUS_PROXY_SECRET=eltex # Ubiquity vendor detection RADIUS_UBI_VENDOR_REGEX=Apple|Ubiquiti RADIUS_VENDOR_GROUP_ENABLED=1 # Settings of runtime NAS discovery RADIUS_DYNAMIC_CLIENTS=false RADIUS_DYNAMIC_CLIENT_SUBNET=192.168.0.0/16 RADIUS_DYNAMIC_CLIENT_LIFETIME=3600 RADIUS_DYNAMIC_CLIENT_RATE_LIMIT=false # Proxy SSID RADIUS_PROXY_SSID_ENABLED=0 RADIUS_PROXY_SSID_VALUE=EAP_TLS RADIUS_PROXY_SSID_HOST=127.0.0.1 RADIUS_PROXY_SSID_PORT=18122 RADIUS_PROXY_SSID_SECRET=eltex # Status-Server settings RADIUS_STATUS_HOST=127.0.0.1 RADIUS_STATUS_PORT=18123 RADIUS_STATUS_CLIENT_HOST=127.0.0.1 RADIUS_STATUS_CLIENT_SECRET=eltex #TIMEZONE TZ=Asia/Novosibirsk |
В файле eltex-radius.env необходимо переопределить следующие параметры:
Т.к. Eltex-EMS не выполняет рестарт eltex-radius запущенного в контейнера - необходимо обязательно включить динамическое изучение клиентов, в противном случае запросы ТД, добавленных в таблицу nas после последнего перезапуска радиуса будут отклоняться. |
Включить динамическое изучение клиентов:
Если не установлены пакет eltex-oui-list, установить его.
Перед запуском необходимо перейти на хост с установленным eltex-radius-nbi и убедиться, что серверный сертификат подписан надежным алгоритмом с помощью команды
Необходимо рассмотреть параметр Signature Algorithm, и в случае, если этот параметр равен
|
Необходимо скопировать CA certificate, server certificate, server private key с хоста, где установлен пакет eltex-radius-nbi в соответствующие директории для docker-контейнера (здесь - eltex-radius/certs/ca для ca-certificate (wireless-ca.crt), eltex-radius/certs для server.crt и server.key) можно с помощью скрипта update_certificates.sh
Пример вызова: SOFTWLC_HOST=<пользователь хоста с nbi>@<ip адрес хоста с nbi> bash ./update-certificates.sh
В случае однохостовой установки можно запустить скрипт без параметров: ./update-certificates.sh
#!/bin/bash set -e if [ -z "$CERTS_DIR" ]; then CERTS_DIR=./eltex-radius/certs fi if [ -z "$ENV_FILE" ]; then ENV_FILE=./eltex-radius.env fi if [ -z "$SOFTWLC_HOST" ]; then SOFTWLC_HOST=$USER@$HOSTNAME fi mkdir -p $CERTS_DIR/ca scp $SOFTWLC_HOST:/var/lib/eltex-radius-nbi/setup_er_eap.sh ./ sed -n '3,/SERVER_KEY_PASSWORD/p' setup_er_eap.sh > setup_er_eap.env source ./setup_er_eap.env echo "$CA_CERT" > $CERTS_DIR/ca/wireless-ca.crt chmod 644 $CERTS_DIR/ca/wireless-ca.crt echo "$SERVER_CERT" > $CERTS_DIR/server.crt echo "$SERVER_KEY" > $CERTS_DIR/server.key chmod 644 $CERTS_DIR/server.* if [ -f $ENV_FILE ]; then sed -i -e "s/^\(RADIUS_TLS_KEY_PASSWORD\)=.*/\1=$SERVER_KEY_PASSWORD/" $ENV_FILE fi echo "CA certificate, server certificate and server private key were updated successfully." echo "To override tls_key_password in your eltex-radius docker container use this environment variable: RADIUS_TLS_KEY_PASSWORD=$SERVER_KEY_PASSWORD" |
Необходимо разрешить доступ до БД mysql с любого адреса, закомментировав параметр bind-address и перезапустить сервис mysql
sudo sed -i -e "s/\(bind-address.*=.*\)/#\1/" /etc/mysql/mysql.conf.d/mysqld.cnf sudo systemctl restart mysql.service |
Запуск контейнера выполняется командой docker-compose up -d
Необходимо добавить сервер, на котором запущен eltex-radius, в качестве nas-клиента в EMS. В поле Адрес указываем IP адресом хоста, на котором запущен EMS.
Добавить Radius в дерево EMS, указать IP адрес хоста, на котором запущен docker-compose.
Перезагрузить docker-compose командой docker-compose restart
1) Для настройки проксирования необходимо скопировать некоторые конфигурационные файлы с самого контейнера с помощью следующих команд:
mkdir -p ./eltex-radius/config docker cp eltex_eltex-radius_1:/etc/eltex-radius/proxy.conf ./eltex-radius/config/proxy.conf mkdir -p ./eltex-radius/config/servers docker cp eltex_eltex-radius_1:/etc/eltex-radius/servers/default ./eltex-radius/config/servers/default mkdir -p ./eltex-radius/config/policy.d docker cp eltex_eltex-radius_1:/etc/eltex-radius/policy.d/proxy ./eltex-radius/config/policy.d/proxy |
2) Привести настройки docker-compose.yml к следующиему виду, добавив несколько волюмов с конфигурационной информацией. В случае настроки проксирования авторизации+аккаунтинга необходимо раскомментировать порт 1813:
version: '3' services: eltex-radius: container_name: eltex-radius network_mode: host image: hub.eltex-co.ru/softwlc/eltex-radius:<SoftWLC version>-<tag> env_file: eltex-radius.env volumes: # Eltex OUI list - /usr/share/oui-base/oui-freeradius.txt:/usr/share/oui-base/oui-freeradius.txt:ro # Eltex-Radius-NBI certificates - ./eltex-radius/certs/ca/wireless-ca.crt:/etc/eltex-radius/certs/ca/default.pem:ro - ./eltex-radius/certs/server.crt:/etc/eltex-radius/certs/server.crt:ro - ./eltex-radius/certs/server.key:/etc/eltex-radius/certs/server.key:ro # Eltex-radius configs - ./eltex-radius/config/proxy.conf:$/etc/eltex-radius/proxy.conf:ro - ./eltex-radius/config/servers/default:/etc/eltex-radius/servers/default:ro - ./eltex-radius/config/policy.d/proxy:/etc/eltex-radius/policy.d/proxy:ro |
3) Остальная настройка проксирования выполняется согласно инструкции для deb-пакета.
3) Перезагрузить docker-compose командой docker-compose restart
Для запуска eltex-radius в docker-compose в отладочном режиме необходимо в файле docker-compose.yml добавить блок command:
version: '3' services: eltex-radius: container_name: eltex-radius network_mode: host image: hub.eltex-co.ru/softwlc/eltex-radius:<SoftWLC version>-<tag> env_file: eltex-radius.env # ViewRADIUSD startup options here: # https://freeradius.org/radiusd/man/radiusd.html command: ["-X"] # DEBUG volumes: # Eltex OUI list - /usr/share/oui-base/oui-freeradius.txt:/usr/share/oui-base/oui-freeradius.txt:ro # Eltex-Radius-NBI certificates - ./eltex-radius/certs/ca/wireless-ca.crt:/etc/eltex-radius/certs/ca/default.pem:ro - ./eltex-radius/certs/server.crt:/etc/eltex-radius/certs/server.crt:ro - ./eltex-radius/certs/server.key:/etc/eltex-radius/certs/server.key:ro # Eltex-radius configs - ./eltex-radius/config/proxy.conf:/etc/eltex-radius/proxy.conf:ro - ./eltex-radius/config/servers/default:/etc/eltex-radius/servers/default:ro - ./eltex-radius/config/policy.d/proxy:/etc/eltex-radius/policy.d/proxy:ro |
Запустить eltex-radius командой docker-compose up -d.
Также для отладки возможно использование утилиты eraddebug с помощью следующей команды:
docker-compose exec eltex-radius eraddebug
Подробную информацию можно узнать в v1.26_Снятие radius debug
Переменная | Значение по умолчанию |
RADIUS_AUTH_PORT | 1812 |
RADIUS_ACCT_PORT | 1813 |
RADIUS_INNER_TUNNEL_PORT | 18121 |
RADIUS_DB_HOST | localhost |
RADIUS_DB_PORT | 3306 |
RADIUS_DB_LOGIN | radius |
RADIUS_DB_PASSWORD | radpass |
RADIUS_DB_NAME | radius |
RADIUS_PCRF_HOST | 127.0.0.1 |
RADIUS_PCRF_PORT | 7080 |
RADIUS_PCRF_ENABLED | 1 |
RADIUS_CA_CERT_NAME | default.pem |
RADIUS_TLS_KEY_PASSWORD | eltex |
RADIUS_PROXY_AUTH | 0 |
RADIUS_PROXY_DOMAIN_REGEX | ^(.+\.)?enterprise\.root$ |
RADIUS_PROXY_HOST | 127.0.0.1 |
RADIUS_PROXY_PORT | 18121 |
RADIUS_PROXY_SECRET | eltex |
RADIUS_UBI_VENDOR_REGEX | Apple|Ubiquiti |
RADIUS_VENDOR_GROUP_ENABLED | 1 |
RADIUS_DYNAMIC_CLIENTS | false |
RADIUS_DYNAMIC_CLIENT_SUBNET | 192.168.0.0/16 |
RADIUS_DYNAMIC_CLIENT_LIFETIME | 3600 |
RADIUS_DYNAMIC_CLIENT_RATE_LIMIT | false |
RADIUS_PROXY_SSID_ENABLED | 0 |
RADIUS_PROXY_SSID_VALUE | EAP_TLS |
RADIUS_PROXY_SSID_HOST | 127.0.0.1 |
RADIUS_PROXY_SSID_PORT | 18122 |
RADIUS_PROXY_SSID_SECRET | eltex |
RADIUS_STATUS_HOST | 127.0.0.1 |
RADIUS_STATUS_PORT | 18123 |
RADIUS_STATUS_CLIENT_HOST | 127.0.0.1 |
RADIUS_STATUS_CLIENT_SECRET | eltex |
TZ | Asia/Novosibirsk |