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 {LISTEN_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 аттрибутов

Аттрибуты делятся на три типа:

  1. Назначаются всем пользователям
  2. Только активным
  3. Только не активным

Из этого можно составить примерно следующую логику.
Активные пользователи получают доступ в интернет на скорости тарифа.
Неактивные попадют в табличку 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} 
mgmpdppp.txt · Последние изменения: 2018/07/16 04:41 — l1ght
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki