====== Установка и настройка Freeradius cache ====== Данный способ использует [[billing/freeradius_api]] ===== Установка ===== * [[#tab-debian|Debian]] * [[#tab-radhat|Centos]] Установим базовый пакет Freeradius apt install freeradius freeradius-utils Переименуем оригинальную директорию с настройками радиуса: mv /etc/freeradius/3.0 /etc/freeradius/3.0.original теперь скачаем подготовленный {{ :billing:freeradius.tar.gz |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" после чего можно добавлять данный скрипт в крон на необходимую частоту обновления кеша. Установим базовый пакет Freeradius yum install freeradius freeradius-utils Переименуем оригинальную директорию с настройками радиуса: mv /etc/freeradius/3.0 /etc/freeradius/3.0.original теперь скачаем подготовленный {{ :billing:raddb.tar.gz |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" после чего можно добавлять данный скрипт в крон на необходимую частоту обновления кеша.