billing:freeradius_cache

Установка и настройка Freeradius cache

Данный способ использует Freeradius API

Установим базовый пакет Freeradius
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"

после чего можно добавлять данный скрипт в крон на необходимую частоту обновления кеша.

Установим базовый пакет Freeradius
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"

после чего можно добавлять данный скрипт в крон на необходимую частоту обновления кеша.

  • billing/freeradius_cache.txt
  • Последнее изменение: 10 мес. назад
  • Александр Дудяк