Для простоти, речі які Ви повинні замінити будуть у фігурних дужках в прикладі нижче:
startup:
#local console access
set user {CHANGEME_USERNAME} {CHANGEME_PASSWORD} admin
set console self 127.0.0.1 5005
set console open
#send netflow to billing
set netflow peer {BILLING_IP} 42111
set netflow timeouts 15 1800
set netflow version 5
#CoA/PoD access
set radsrv peer {BILLING_IP} {NASSECRET}
set radsrv self {LISTEN_IP} {NASPORT}
set radsrv open
default:
create bundle template B
set bundle enable compression
set bundle enable encryption
set iface idle 0
set iface disable proxy-arp
set iface enable tcpmssfix
set iface enable netflow-in
set iface enable netflow-out
set ipcp yes vjcomp
set ipcp ranges {DEFAULT_GATEWAY}/32 0.0.0.0/0
set ipcp dns {DNS1} {DNS2}
set ccp yes mppc
set mppc yes compress
set mppc yes e40
set mppc yes e56
set mppc yes e128
set mppc yes stateless
set ecp disable dese-bis dese-old
log -echo -ipv6cp -radius -rep
load common
common:
create link template PPPoE pppoe
set link enable no-orig-auth
set link max-children 300
set auth max-logins 0
load radius
load pppoe
radius:
set radius server {BILLING_IP} {NASSECRET} 1812 1813
set radius timeout 3
set radius me localhost
set auth acct-update 300
set auth enable radius-auth
set auth enable radius-acct
set radius enable message-authentic
pppoe:
set link action bundle B
set link enable multilink
set link yes acfcomp protocomp
set link disable chap pap eap
set link enable chap chap-msv1 chap-msv2 chap-md5
set link keep-alive 10 60
create link template vtnet1 PPPoE
set pppoe iface {LOCAL_IFACE}
set link enable incoming
set pppoe service *
Малий довідник:
{LISTEN_IP} - локальний IP NAS до якого білінг може звернутись через зазначений порту {PORT} (за звичай 3799).
{NAS_SECRET} - пароль для нашого NAS, сгенерирований при його додаванні в біллінг (приклад)
Аттрибути ділятся на три типа:
З цього можна скласти наступну логіку.
Активні користувачі отримують доступ в інетрнет на швидкості тарифа.
Неактивні потрапляють до таблички 47. Логічно, що щ ними щось будуть робити згодом, наприклад доступ до ЛК, wallet garden та інше на що вистачить фантазії.
Трохи не тривіально, через те,що різні атрибути не можуть мати однакового імені в рамках одного сценарію. Тому робимо наступним чином:
Варто звернути увагу на подвійні лапки. Там немає помилки, аттрибути повинні бути заповнені саме так.
Для отримання більш докладної інформації, зверніться до офіційної документації mpd.
Відкриваємо редагування Сервісів та в залежності від типа NAS, який ми зазначили (PoD/CoA) будемо заповнлювати той чи інший.
Для MPD підходять оба типа: і PoD і CoA.
PoD добре поєднуєтся з опцієй “Тільки автиним користувачам”. Коли користувач становится неактивним, надсилаєм PoD та видаляємо данні з БД до того часу, поки він знову не стане активним.
Нижче приклади.
{PRINTF} "User-Name= {USERNAME}" | {SUDO} {RADCLIENT} {NASIP}:{NASPORT} disconnect {NASSECRET}
CoA Connect:
{PRINTF} "User-Name={USERNAME}\nmpd-limit+="\""in#1=all rate-limit {SPEEDDOWNB} {SPEEDDOWNBC}"\""\nmpd-limit+="\""out#1=all rate-limit {SPEEDUPB} {SPEEDUPBC}"\" | {SUDO} {RADCLIENT} {NASIP}:{NASPORT} coa {NASSECRET}
CoA Disconnect:
{PRINTF} "User-Name= {USERNAME}\n mpd-table-static+=47" | {SUDO} {RADCLIENT} {NASIP}:{NASPORT} coa {NASSECRET}
Не забуваємо про словник для нашого NAS. Правим файл /usr/local/etc/raddb/dictionary.
Раскоментуємо рядок та перезапустимо freeradius.
$INCLUDE /usr/local/etc/raddb/dictionary_preset/mpd.dictionary
eyJvcHRpb25zIjp7ImlkIjoiMSIsIm5hc2lkIjoiMSIsInVzZXJuYW1ldHlwZSI6ImxvZ2luIiwic2VydmljZSI6InBvZCIsIm9ubHlhY3RpdmUiOiIxIiwicG9ydCI6IjM3OTkifSwiYXR0cmlidXRlcyI6eyIxIjp7ImlkIjoiMSIsIm5hc2lkIjoiMSIsInNjZW5hcmlvIjoiY2hlY2siLCJtb2RpZmllciI6ImFsbCIsImF0dHJpYnV0ZSI6IkNsZWFydGV4dC1QYXNzd29yZCIsIm9wZXJhdG9yIjoiOj0iLCJjb250ZW50Ijoie1BBU1NXT1JEfSJ9LCIyIjp7ImlkIjoiMiIsIm5hc2lkIjoiMSIsInNjZW5hcmlvIjoicmVwbHkiLCJtb2RpZmllciI6ImFsbCIsImF0dHJpYnV0ZSI6IkZyYW1lZC1JUC1BZGRyZXNzIiwib3BlcmF0b3IiOiI9IiwiY29udGVudCI6IntJUH0ifSwiMyI6eyJpZCI6IjMiLCJuYXNpZCI6IjEiLCJzY2VuYXJpbyI6InJlcGx5IiwibW9kaWZpZXIiOiJhbGwiLCJhdHRyaWJ1dGUiOiJGcmFtZWQtTmV0bWFzayIsIm9wZXJhdG9yIjoiPSIsImNvbnRlbnQiOiIyNTUuMjU1LjI1NS4yNTUifSwiNCI6eyJpZCI6IjQiLCJuYXNpZCI6IjEiLCJzY2VuYXJpbyI6InJlcGx5IiwibW9kaWZpZXIiOiJhY3RpdmUiLCJhdHRyaWJ1dGUiOiJtcGQtbGltaXQiLCJvcGVyYXRvciI6Iis9IiwiY29udGVudCI6Ilwib3V0IzE9YWxsIHJhdGUtbGltaXQge1NQRUVERE9XTkJ9IHtTUEVFRERPV05CQ31cIiJ9LCI1Ijp7ImlkIjoiNSIsIm5hc2lkIjoiMSIsInNjZW5hcmlvIjoicmVwbHkiLCJtb2RpZmllciI6ImluYWN0aXZlIiwiYXR0cmlidXRlIjoibXBkLXRhYmxlLXN0YXRpYyIsIm9wZXJhdG9yIjoiKz0iLCJjb250ZW50IjoiNDcifSwiNiI6eyJpZCI6IjYiLCJuYXNpZCI6IjEiLCJzY2VuYXJpbyI6Imdyb3VwcmVwbHkiLCJtb2RpZmllciI6ImFjdGl2ZSIsImF0dHJpYnV0ZSI6Im1wZC1saW1pdCIsIm9wZXJhdG9yIjoiKz0iLCJjb250ZW50IjoiXCJpbiMxPWFsbCByYXRlLWxpbWl0IHtTUEVFRFVQQn0ge1NQRUVEVVBCQ31cIiJ9fSwic2VydmljZXMiOnsiMSI6eyJpZCI6IjEiLCJuYXNpZCI6IjEiLCJwb2QiOiJ7UFJJTlRGfSBcIlVzZXItTmFtZT0ge1VTRVJOQU1FfVwiIHwge1NVRE99IHtSQURDTElFTlR9IHtOQVNJUH06e05BU1BPUlR9IGRpc2Nvbm5lY3Qge05BU1NFQ1JFVH0iLCJjb2Fjb25uZWN0IjoiIiwiY29hZGlzY29ubmVjdCI6IiJ9fX0=