Установка и настройка Freeradius cache
Данный способ использует Freeradius API
Установка
apt install freeradius freeradius-utils
Переименуем оригинальную директорию с настройками радиуса:
mv /etc/freeradius/3.0 /etc/freeradius/3.0.original
теперь скачаем подготовленный freeradius сервер в режиме cache
wget -O freeradius.tar.gz https://wiki.mikbill.pro/_media/billing/freeradius.tar.gz
распакуем архив и переместим его в конфиг радиуса
tar -xzvf freeradius.tar.gz /bin/cp -Rf freeradius/* /etc/freeradius
добавим необходимые атрибуты в /usr/share/freeradius/dictionary
ATTRIBUTE DHCP-Router-IP-Address 241 ipaddr ATTRIBUTE DHCP-Mask 242 integer ATTRIBUTE L4-Redirect 243 integer ATTRIBUTE L4-Redirect-ipset 244 string ATTRIBUTE DHCP-Option82 245 octets #ATTRIBUTE DHCP-Agent-Circuit-Id 1 octets #ATTRIBUTE DHCP-Agent-Remote-Id 2 octets ATTRIBUTE AccelRemoteId 246 octets ATTRIBUTE AccelCircuitId 247 octets #ATTRIBUTE DHCP-Attr-272 272 ipaddr
создаем скрипт загрузи кеша с API биллинга
#!/bin/bash API_DOMAIN="https://admin.ispnet.demo" API_NAME="freeradius" API_KEY="1234567890" API_URL="${API_DOMAIN}/ajax/index/${API_NAME}/key/${API_KEY}" BRAS="accelv2" PATTERN_LOCAL_MAC="{{local_mac}}" PATTERN_MAC_ONU="{{dev_mac}}" RAD_DIR="/etc/freeradius/3.0" RAD_SERVICE="freeradius" TMP_DIR="/tmp/${API_NAME}/" WGET_APP="wget --content-disposition --no-check-certificate -q" MV_APP=$(which mv) function restart_freeradius() { service ${RAD_SERVICE} restart } function download() { # $1 - filename # $2 - url $WGET_APP -O "${TMP_DIR}/${1}" "${2}" if [ $? -ne 0 ]; then echo "error on downloading request: ${2}" return 1 fi lines_count=$(wc -l "${TMP_DIR}/${1}" | awk '{ print $1 }') if [ "${lines_count}" > "3" ]; then echo "move ${TMP_DIR}/${1} to ${RAD_DIR}/${1}" $MV_APP "${TMP_DIR}/${1}" "${RAD_DIR}/${1}" else echo "empty file: ${TMP_DIR}/${1}" fi } if [ ! -d "${RAD_DIR}" ]; then echo "wrong path to freeradius config dir: ${RAD_DIR}" exit 1 fi if [ ! -d "${TMP_DIR}" ]; then mkdir -p "${TMP_DIR}" fi download "users" "${API_URL}/request/cache/type/${BRAS}/pattern/${PATTERN_MAC_ONU}" download "clients.conf" "${API_URL}/request/config/file/clients" restart_freeradius
Заменяем на свои значения:
API_DOMAIN="https://admin.ispnet.demo" API_KEY="1234567890"
после чего можно добавлять данный скрипт в крон на необходимую частоту обновления кеша.
yum install freeradius freeradius-utils
Переименуем оригинальную директорию с настройками радиуса:
mv /etc/freeradius/3.0 /etc/freeradius/3.0.original
теперь скачаем подготовленный freeradius сервер в режиме cache
wget -O freeradius.tar.gz https://wiki.mikbill.pro/_media/billing/raddb.tar.gz
распакуем архив и переместим его в конфиг радиуса
tar -xzvf freeradius.tar.gz /bin/cp -Rf raddb/* /etc/raddb/
добавим необходимые атрибуты в /usr/share/freeradius/dictionary
ATTRIBUTE DHCP-Router-IP-Address 241 ipaddr ATTRIBUTE DHCP-Mask 242 integer ATTRIBUTE L4-Redirect 243 integer ATTRIBUTE L4-Redirect-ipset 244 string ATTRIBUTE DHCP-Option82 245 octets #ATTRIBUTE DHCP-Agent-Circuit-Id 1 octets #ATTRIBUTE DHCP-Agent-Remote-Id 2 octets ATTRIBUTE AccelRemoteId 246 octets ATTRIBUTE AccelCircuitId 247 octets #ATTRIBUTE DHCP-Attr-272 272 ipaddr
создаем скрипт загрузи кеша с API биллинга
#!/bin/bash API_DOMAIN="https://admin.ispnet.demo" API_NAME="freeradius" API_KEY="1234567890" API_URL="${API_DOMAIN}/ajax/index/${API_NAME}/key/${API_KEY}" BRAS="accelv2" PATTERN_LOCAL_MAC="{{local_mac}}" PATTERN_MAC_ONU="{{dev_mac}}" RAD_DIR="/etc/raddb" RAD_SERVICE="radiusd" TMP_DIR="/tmp/${API_NAME}/" WGET_APP="wget --content-disposition --no-check-certificate -q" MV_APP=$(which mv) function restart_freeradius() { service ${RAD_SERVICE} restart } function download() { # $1 - filename # $2 - url $WGET_APP -O "${TMP_DIR}/${1}" "${2}" if [ $? -ne 0 ]; then echo "error on downloading request: ${2}" return 1 fi lines_count=$(wc -l "${TMP_DIR}/${1}" | awk '{ print $1 }') if [ "${lines_count}" > "3" ]; then echo "move ${TMP_DIR}/${1} to ${RAD_DIR}/${1}" $MV_APP "${TMP_DIR}/${1}" "${RAD_DIR}/${1}" else echo "empty file: ${TMP_DIR}/${1}" fi } if [ ! -d "${RAD_DIR}" ]; then echo "wrong path to freeradius config dir: ${RAD_DIR}" exit 1 fi if [ ! -d "${TMP_DIR}" ]; then mkdir -p "${TMP_DIR}" fi download "users" "${API_URL}/request/cache/type/${BRAS}/pattern/${PATTERN_MAC_ONU}" download "clients.conf" "${API_URL}/request/config/file/clients" restart_freeradius
Заменяем на свои значения:
API_DOMAIN="https://admin.ispnet.demo" API_KEY="1234567890"
после чего можно добавлять данный скрипт в крон на необходимую частоту обновления кеша.