Зміст
MPD5 PPPoE сервер за допомогою КупаГен
Конфіг MPD5
Для простоти, речі які Ви повинні замінити будуть у фігурних дужках в прикладі нижче:
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, сгенерирований при його додаванні в біллінг (приклад)
Налаштування RADIUS аттрибутів
Аттрибути ділятся на три типа:
- Призначаються всім користувачам
- Тільки активним
- Тілько не активним
З цього можна скласти наступну логіку.
Активні користувачі отримують доступ в інетрнет на швидкості тарифа.
Неактивні потрапляють до таблички 47. Логічно, що щ ними щось будуть робити згодом, наприклад доступ до ЛК, wallet garden та інше на що вистачить фантазії.
Трохи не тривіально, через те,що різні атрибути не можуть мати однакового імені в рамках одного сценарію. Тому робимо наступним чином:
Варто звернути увагу на подвійні лапки. Там немає помилки, аттрибути повинні бути заповнені саме так.
Для отримання більш докладної інформації, зверніться до офіційної документації mpd.
Налаштування сервісів
Відкриваємо редагування Сервісів та в залежності від типа NAS, який ми зазначили (PoD/CoA) будемо заповнлювати той чи інший.
Для MPD підходять оба типа: і PoD і CoA.
PoD добре поєднуєтся з опцієй “Тільки автиним користувачам”. Коли користувач становится неактивним, надсилаєм PoD та видаляємо данні з БД до того часу, поки він знову не стане активним.
Нижче приклади.
PoD
{PRINTF} "User-Name= {USERNAME}" | {SUDO} {RADCLIENT} {NASIP}:{NASPORT} disconnect {NASSECRET}
CoA
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}
Підготовка FreeRADIUS
Не забуваємо про словник для нашого NAS. Правим файл /usr/local/etc/raddb/dictionary.
Раскоментуємо рядок та перезапустимо freeradius.
$INCLUDE /usr/local/etc/raddb/dictionary_preset/mpd.dictionary
Конфігурація для тестування
eyJvcHRpb25zIjp7ImlkIjoiMSIsIm5hc2lkIjoiMSIsInVzZXJuYW1ldHlwZSI6ImxvZ2luIiwic2VydmljZSI6InBvZCIsIm9ubHlhY3RpdmUiOiIxIiwicG9ydCI6IjM3OTkifSwiYXR0cmlidXRlcyI6eyIxIjp7ImlkIjoiMSIsIm5hc2lkIjoiMSIsInNjZW5hcmlvIjoiY2hlY2siLCJtb2RpZmllciI6ImFsbCIsImF0dHJpYnV0ZSI6IkNsZWFydGV4dC1QYXNzd29yZCIsIm9wZXJhdG9yIjoiOj0iLCJjb250ZW50Ijoie1BBU1NXT1JEfSJ9LCIyIjp7ImlkIjoiMiIsIm5hc2lkIjoiMSIsInNjZW5hcmlvIjoicmVwbHkiLCJtb2RpZmllciI6ImFsbCIsImF0dHJpYnV0ZSI6IkZyYW1lZC1JUC1BZGRyZXNzIiwib3BlcmF0b3IiOiI9IiwiY29udGVudCI6IntJUH0ifSwiMyI6eyJpZCI6IjMiLCJuYXNpZCI6IjEiLCJzY2VuYXJpbyI6InJlcGx5IiwibW9kaWZpZXIiOiJhbGwiLCJhdHRyaWJ1dGUiOiJGcmFtZWQtTmV0bWFzayIsIm9wZXJhdG9yIjoiPSIsImNvbnRlbnQiOiIyNTUuMjU1LjI1NS4yNTUifSwiNCI6eyJpZCI6IjQiLCJuYXNpZCI6IjEiLCJzY2VuYXJpbyI6InJlcGx5IiwibW9kaWZpZXIiOiJhY3RpdmUiLCJhdHRyaWJ1dGUiOiJtcGQtbGltaXQiLCJvcGVyYXRvciI6Iis9IiwiY29udGVudCI6Ilwib3V0IzE9YWxsIHJhdGUtbGltaXQge1NQRUVERE9XTkJ9IHtTUEVFRERPV05CQ31cIiJ9LCI1Ijp7ImlkIjoiNSIsIm5hc2lkIjoiMSIsInNjZW5hcmlvIjoicmVwbHkiLCJtb2RpZmllciI6ImluYWN0aXZlIiwiYXR0cmlidXRlIjoibXBkLXRhYmxlLXN0YXRpYyIsIm9wZXJhdG9yIjoiKz0iLCJjb250ZW50IjoiNDcifSwiNiI6eyJpZCI6IjYiLCJuYXNpZCI6IjEiLCJzY2VuYXJpbyI6Imdyb3VwcmVwbHkiLCJtb2RpZmllciI6ImFjdGl2ZSIsImF0dHJpYnV0ZSI6Im1wZC1saW1pdCIsIm9wZXJhdG9yIjoiKz0iLCJjb250ZW50IjoiXCJpbiMxPWFsbCByYXRlLWxpbWl0IHtTUEVFRFVQQn0ge1NQRUVEVVBCQ31cIiJ9fSwic2VydmljZXMiOnsiMSI6eyJpZCI6IjEiLCJuYXNpZCI6IjEiLCJwb2QiOiJ7UFJJTlRGfSBcIlVzZXItTmFtZT0ge1VTRVJOQU1FfVwiIHwge1NVRE99IHtSQURDTElFTlR9IHtOQVNJUH06e05BU1BPUlR9IGRpc2Nvbm5lY3Qge05BU1NFQ1JFVH0iLCJjb2Fjb25uZWN0IjoiIiwiY29hZGlzY29ubmVjdCI6IiJ9fX0=
