Была поставлена задача поднять PPPoE сервер для внутренний сети. Необходимо это было для раздачи Интернета пользователям. Авторизация по логину-паролю из биллинга, в нашем случае это UTM5. Учёт трафика с помощью NetFlow v5. Естественно, необходим шейпер, т.е. ограничение скорости в зависимости от тарифа.
Настраивать всё это дело мы будем на операционной системе FreeBSD. Версия не имеет значения. У меня работает и на 7.x и на 8.х и на девятой версии. На десятке планирую завести в ближайшем будущем (что-то по началу на неё много негативных отзывов было в плане сетевой архитектуры, сейчас уже отшлифовали скорее всего)
Устанавливаем сам демон mpd5
1 |
cd /usr/ports/net/mpd5 && make config |
Ставим галочку напротив ng_car. Это и есть встроенный шейпер в демон mpd5 на FreeBSD. Этим крайне удобна имеено это программа, очень много функций уже реализовано непосредственно в самом mpd5. Ненужно костылить своими скриптами 🙂
Можно устанавливать
1 |
make install clean |
Как только соберётся mpd, идем в директорию с конфиг-файлами и создаём нужные нам. Дефолтные оставляем в сторонке, на всякий случай.
1 |
cd /usr/local/etc/mpd5/ |
Создаём пустые конфиги
1 |
touch mpd.conf radius.cnf |
Редактируем mpd.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
startup: set user admin ghjcnjmpd admin set console self 127.0.0.1 5005 set console open # set web self 0.0.0.0 5006 # set web open set global max-children 800 default: load pptp_standart load pppoe_server pptp_standart: # set ippool add pool1 192.168.101.1 1.1.1.1/32 # set iface disable on-demand create bundle template B2 set iface disable proxy-arp set iface idle 0 set iface enable tcpmssfix set ipcp yes vjcomp set ipcp ranges 192.168.101.1/32 192.168.96.0/19 set ipcp dns 192.168.1.1 192.168.1.2 set bundle enable compression set ccp yes mppc set mppc yes e40 set mppc yes e128 set mppc yes stateless create link template L2 pptp set link action bundle B2 set link enable multilink set link yes acfcomp protocomp set link no pap chap set link enable chap load radius set link keep-alive 10 60 set link mtu 1460 set pptp self 0.0.0.0 set link enable incoming set pptp disable windowing set pptp enable always-ack set link enable peer-as-calling pppoe_server: # set ippool add blah 192.168.96.1/32 192.168.127.254/32 create bundle template B # set ipcp ranges 192.168.101.1/32 ippool blah set ipcp ranges 192.168.101.1/32 192.168.96.0/19 set ipcp dns 192.168.1.1 192.168.1.2 set ipcp no vjcomp set iface enable tcpmssfix set ipcp no req-pri-dns set ipcp no req-sec-dns set ipcp no req-pri-nbns set ipcp no req-sec-nbns set iface disable proxy-arp set ccp yes mppc set mppc yes e40 set mppc yes e56 set mppc yes e128 set mppc yes stateless # set link yes acfcomp protocomp create link template L pppoe set link action bundle B # set link no multilink set link enable multilink set link no shortseq set link no chap eap pap # set link enable pap set link enable chap-msv1 chap-msv2 chap-md5 set pppoe acname pppoed load radius create link template vlan10 L set pppoe iface vlan10 set link enable incoming |
С таким конфигом работают 2 сервиса одновременно. PPTP и PPPoE. Разрешено подключаться как с шифрованием так и без оного.
Для вывода PPPoE в различные вланы копируем/редактируем последние 3 строчки. К примеру, вывод на 11 влан
1 2 3 |
create link template vlan11 L set pppoe iface vlan11 set link enable incoming |
В таком виде PPPoE сервис на FreeBSD, с некоторыми изменениями, у меня работает уже много лет.
Не забываем открыть 1723 порт для PPTP соединений в фаерволле.