====== 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, сгенерирований при його додаванні в біллінг ([[http://wiki.ubilling.net.ua/doku.php?id=multigen#%D0%BA%D0%BE%D0%BD%D1%84%D0%B8%D0%B3%D1%83%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%BE%D0%B2_%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B0|приклад]]) \\
===== Налаштування RADIUS аттрибутів =====
Аттрибути ділятся на три типа:
- Призначаються всім користувачам
- Тільки активним
- Тілько не активним
З цього можна скласти наступну логіку. \\
Активні користувачі отримують доступ в інетрнет на швидкості тарифа. \\
Неактивні потрапляють до таблички 47. Логічно, що щ ними щось будуть робити згодом, наприклад доступ до ЛК, wallet garden та інше на що вистачить фантазії. \\
Трохи не тривіально, через те,що різні атрибути не можуть мати однакового імені в рамках одного сценарію. Тому робимо наступним чином:
{{:mgmpdpppoe2.jpg?500|}}
\\
Варто звернути увагу на подвійні лапки. Там немає помилки, аттрибути повинні бути заповнені саме так. \\
Для отримання більш докладної інформації, зверніться до офіційної документації mpd. \\
===== Налаштування сервісів=====
{{:services.jpg?500|}} \\
Відкриваємо редагування Сервісів та в залежності від типа 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=