Данный способ использует 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"
после чего можно добавлять данный скрипт в крон на необходимую частоту обновления кеша.