Для простоти, речі які Ви повинні замінити будуть у фігурних дужках в прикладі нижче:
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=