======Настройка MPD5===== Описывается конфигурация сервиса MPD для приёма PPTP/PPPoE соединений, и конфигурации трёх видов шейперов доступных в ABillS \\ До начала конфигурации сервиса нужно настроить Freeradius версии 2 и ABillS\\ Содержание:\\ * [[abills:docs:nas:mpd5:ru&#ustanovka|Установка]] * [[abills:docs:nas:mpd5:ru&#nastrojka|Настройка]] * [[abills:docs:nas:mpd5:ru&#nastrojka_freeradius|Настройка Freeradius]] * [[abills:docs:nas:mpd5:ru&#nastrojka_abills|Настройка ABillS]] * [[abills:docs:nas:mpd5:ru&#narezka_skorosti|Нарезка скорости (MPD ng_car, ipfw + ng_car, ipfw+dummynet)]] * [[abills:docs:nas:mpd5:ru&#nastrojka_nat|Настройка NAT]] ====Установка===== # cd /usr/ports/net/mpd5/ && make install clean ====Настройка===== **/usr/local/etc/mpd5/mpd.conf** startup: set global enable tcp-wrapper # Настройка консоли управления через телнет #set console self %MPD_CONSOLE_IP% 5005 #set user %MPD_CONSOLE_USER% %MPD_CONSOLE_PASSWORD% admin #set console open # Управление (сброс сессии) через Radius POD set radsrv peer %BILLING_IP% %POD_PASSWORD% # set radsrv self %NAS_IP% 3799 set radsrv open #set web self 0.0.0.0 5006 #set web open # Опции отправки Netflow статистики на сервер билинга set netflow peer %MPD_NETFLOW_IP% %MPD_NETFLOW_PORT% set netflow self %MPD_NETFLOW_SOURCE_IP% %MPD_NETFLOW_SOURCE_PORT% set netflow timeouts 15 15 set netflow hook 9000 #set netflow node netflow log -echo -radius -rep default: load pptp_server load pppoe_server pptp_server: # Пул адресов с которого відавать если радиус не відал адрес set ippool add pool1 %MPD_IPPOOL_FIRST% %MPD_IPPOOL_LAST% # Create clonable bundle template named B create bundle template B set iface enable proxy-arp set iface idle 1800 set iface enable tcpmssfix # Включение внешнего шейпера, если используете внутренний mpd шейпер ($conf{mpd_filter}=1) данные строки стоит закоментировать set iface up-script "/usr/abills/libexec/linkupdown mpd up" set iface down-script "/usr/abills/libexec/linkupdown mpd down" set ipcp yes vjcomp # Specify IP address pool for dynamic assigment. set ipcp ranges 192.168.100.1/32 ippool pool1 set ipcp dns %DNS_SERVER% # Включение шифрование трафика set bundle enable compression set ccp yes mppc set mppc yes e40 set mppc yes e128 set mppc yes stateless create link template L pptp set link action bundle B set link enable peer-as-calling # Calling-Station-Id в формате "10.0.4.16 / 00:18:f3:5a:9f:6a / em0" # set link enable report-mac set link enable multilink set link yes acfcomp protocomp set link no pap chap set link enable chap set link keep-alive 10 60 set link mtu 1460 # настройка PPTP # IP адрес сервера pptp если не указан использовать любой из адресов # set pptp self %VPN_SERVER_IP% set link enable incoming load radius #Настрофка PPPoE сервиса pppoe_server: create link template P pppoe set link disable multilink set link disable pap eap chap set link enable chap-md5 load radius set pppoe service * set link enable peer-as-calling set ippool add pool12 192.168.16.2 192.168.19.254 #Включить PPPoE сервис на интерфейсе ##MULTI_SECTION:PPPOE_INTERFACES #%PPPOE_INTERFACE% %DESCRIBE% create bundle template %PPPOE_INTERFACE% set iface idle 1800 set iface enable tcpmssfix # Включение внешнего шейпера, если используете внутренний mpd шейпер ($conf{mpd_filter}=1) данные строки стоит закоментировать set iface up-script "/usr/abills/libexec/linkupdown mpd up" set iface down-script "/usr/abills/libexec/linkupdown mpd down" set ipcp dns %DNS_SERVER% set ipcp ranges 10.10.0.1 ippool pool1 create link template %PPPOE_INTERFACE% P set link action bundle %PPPOE_INTERFACE% set pppoe iface %PPPOE_INTERFACE% set link enable incoming ##END_MULTI_SECTION # Настройка параметров работы с Radius radius: #IP, пароль и порты RADIUS-сервера set radius server %RADIUS_AUTH_SERVER% %RADIUS_SECRET% %RADIUS_AUTH_PORT% %RADIUS_ACCT_PORT% set radius retries 3 set radius timeout 10 set auth acct-update 300 set auth enable radius-auth set auth enable radius-acct set auth disable internal Переменные используеміе в конфигурационном файле. Данные переменные стоит заменить значениями конфигурации Управление через Telnet |%MPD_CONSOLE_IP% | IP адресе для подключения к mpd | |%MPD_CONSOLE_PORT%| Консольный порт. по умочанию 5005 | |%MPD_CONSOLE_USER% | Консольный пользователь | |%MPD_CONSOLE_PASSWORD%| Пароль авторизации консоли | Управление через RADIUS COA POD |%BILLING_IP% | IP адрес билинга с которого будет осуществлятся управление | |%POD_PASSWORD%| Пароль доступа | |%NAS_IP% |IP адрес MPD | |%POD_PORT%| Порт управления. По умолчанию 3799 | Отправка статистики по Netflow |%MPD_NETFLOW_IP% | IP Netflow анализатора | |%MPD_NETFLOW_PORT%| порт Netflow анализатора | |%MPD_NETFLOW_SOURCE_IP% | IP от которого будет идти поток | |%MPD_NETFLOW_SOURCE_PORT%| порт от которого будет идти поток | |%MPD_IPPOOL_FIRST% | Первый аресс пула адресов по умолчанию | |%MPD_IPPOOL_LAST% | Последний аресс пула адресов по умолчанию | |%DNS_SERVER% | DNS сервер | |%VPN_SERVER_IP% | IP VPN (PPTP) сервера. Если адрес не укзан система слушает запросі на всех адресах | |%PPPOE_INTERFACE% | PPPoE интерфейс прослушки сервиса | |%RADIUS_AUTH_SERVER% | IP адреса радиус сервера | |%RADIUS_SECRET% | Секретный ключ радиус сервера | |%RADIUS_AUTH_PORT% | Порт авторизации. По умолчанию 1812 | |%RADIUS_ACCT_PORT% | Порт акаунтинга. По умолчанию 1813 | Авто включение сервиса при старте системы \\ **/etc/rc.conf ** mpd_enable="YES" ====Настройка Freeradius==== Включить дополнительный словарь # cat /usr/abills/misc/mpd/mpd.dictionary >> /usr/local/etc/raddb/dictionary Для корректной авторизации MPD нужно в Freeradius прописать IP адрес и секретный ключ авторизации сервера доступа \\ Начиная с 0.7x используется ''sql'' модуль Freeradius и отдельно прописывать ничего в **clients.conf** не нужно, достаточно добавить сервер доступа в ABillS. \\ адрес MPD 127.0.0.1 \\ **/usr/local/etc/raddb/clients.conf** client 127.0.0.1 { secret = radsecret shortname = short } Перезагрузить RADIUS сервер ====Настройка ABillS==== Для авторизации сервиса MPD также нужно завести сервера доступа в системе ABillS.\\ {{:abills:docs:nas:mpd5:nas.png|добавление сервера доступа}} **/ Система/ Сервера доступа/** ^IP: | IP адрес авторизации | ^Тип: | Тип сервера доступа. mpd5 | ^Alive: | Время обновления статистики. Рекомендуемое значение 300 | ^Пользователь: | **admin** \\ Используется для выполнения команд через telnet, и синхронизации сессий с удалённым сервером | ^IP:PORT: | **127.0.0.1:3799:5005** \\ 127.0.0.1 - IP-адрес сервера доступа\\ 3799 - порт контроля NAS-сервера через Radius CoA/PoD\\ 5005 - Порт консольного управления (опционально). Разрешает управлять сервером через ([[http://abills.net.ua/wiki/doku.php/abills:docs:manual:admin:form_nas#console|консоль биллинга]]) | ^Пароль:| Пароль управления и сброса с линии | После заведения сервера доступа заводятся пулы адресов которые будут выдаваться клиентам при авторизации. На один сервер доступа можно завести несколько пулов адресов или использовать один пул на несколько серверов доступа. Также можно использовать последовательность пулов при выдаче адресов используя приоритет. Пули с самым низким приоритетом выдаются в первую очередь. Ни в коме случае нельзя использовать в статических адресах клиентов адреса которые попадают в динамический пул иначе будет конфликт адресов {{:abills:docs:nas:mpd5:ippools.png|пулы адресов}} |Название | Название пула | |First IP | Первый IP пула | |Количество | количество адресов в пуле | |Приоритет | Приоритет. Пулы с самым маленьким приоритетом выдают адреса первыми | |Статический | Статический пул. Используется для выдачи адресов абонентам статически | |Скорость | Общая скорость все активных абонентов пула. (данная опция работает с модулем pool_speed) | ====Нарезка скорости==== В системе реализовано три вида механизмов нарезки скорости (Шейпер) - Внутренний механизм mpd использующий для обрезки скорости механизм ng_car - Внешний шейпер биллинга использующий механизм ipfw + ng_car - Внешний шейпер биллинга использующий механизм ipfw + dummynet Каждый из механизмов имеет свои особенности которые описаны ниже ===Внутренний механизм mpd использующий для обрезки скорости механизм ng_car === Данный механизм является самым оптимальным по отношению к используемым ресурсам. его эффективно использовать если есть один класс трафика или несколько классов с небольшим количеством сетей (до 30). Включается данный механизм опцией конфигурационного файла биллинга\\ **/usr/abills/libexec/config.pl ** $conf{mpd_filters}=1; При включении данной опции параметры скорости при авторизации преобразуются и передаются через radius пары.\\ Для изменения скорости на "лету" без переподключения абонента нужно запускать программу billd с указанием сервера доступа на котором её запускаете \\ \\ **Пример:** # /usr/abills/libexec/billd checkspeed MPD_FILTERS=1 NAS_IDS=xxx Программа просматривает поточную скорость соединения и при несоответствии со скоростью биллинга преобразует её в нужную.\\ Если стоит только задача просмотреть скорость без изменения нужно добавить в аргументы программы опцию SHOW_SPEED=1 \\ === Изменения скорости "на лету" (CoA): === Поскольку через механизм CoA получить значение скорости в текущей реализации MPD невозможно, данная схема предусматривает планирование смены скорости с помощью cron. **Пример:** 9 1 * * * root /usr/abills/libexec/billd change_mpd_speed NAS_IDS='23;29' TP_IDS='26;27;28' ===Внешний шейпер биллинга использующий механизм ipfw + ng_car=== Данный механизм является более гибким в работе так как разрешает добавить или исключить определённые сети сети из шейпера, а также использовать неограниченное количество пиринговых сетей и направлений в этих сетях. \\ **Принципы работы** \\ При старте системы программой /usr/local/etc/rc.d/shaper_start.sh создаются ipfw правила перенаправления в ng_car ноду. При поднятии сессии программа /usr/abills/libexec/linkupdown заносит IP адрес абонента в 10 и 11 таблицу ipfw, если у абонента нет правил обрезки скорости он заносится в 9 таблицу. После старта системы правила пере направления должны выглядеть следующим образом. # ipfw show # Пиринговые сети с ID 2 08000 0 0 pipe tablearg ip from table(14) to table(2,2) in recv ng* 08010 0 0 pipe tablearg ip from table(2,2) to table(15) out xmit ng* # Пиринговые сети с ID 1 09000 0 0 pipe tablearg ip from table(12) to table(2,1) in recv ng* 09010 0 0 pipe tablearg ip from table(2,1) to table(13) out xmit ng* # Глобальный трафик 10000 0 0 pipe tablearg ip from table(10) to any in recv ng* 10010 0 0 pipe tablearg ip from any to table(11) out xmit ng* # Авторизованные абоненты без заданной скорости (анлим) 10020 0 0 allow ip from table(9) to any in recv ng* 10025 0 0 allow ip from any to table(9) out xmit ng* **Настройка** Включение режима в биллинге **/usr/abills/libexec/config.pl** $conf{ng_car}=1; Установка и настройка контролера шейпера в биллинге # cp /usr/abills/misc/freebsd/shaper_start.sh /usr/local/etc/rc.d/ **/etc/rc.conf** abills_shaper_enable="YES" **Проверка установленной скорости и изменении скорости на лету**\\ Для изменения скорости на "лету" без переподключения абонента нужно запускать программу billd с указанием сервера доступа на котором её запускаете \\ \\ **Пример:** # /usr/abills/libexec/billd checkspeed NAS_ID=xxx Программа просматривает поточную скорость соединения и при несоответствии со скоростью биллинга преобразует её в нужную.\\ Если стоит только задача просмотреть скорость без изменения нужно добавить в аргументы программы опцию SHOW_SPEED=1 \\ ===Внешний шейпер биллинга использующий механизм ipfw + dummynet=== Данная схема является альтернативой схемы "ipfw + ng_car" использующая для контроля скорости механизм ipfw + dummynet\\ \\ **Принципы работы** \\ При старте системы программой /usr/local/etc/rc.d/shaper_start.sh создаются ipfw правила заворачивания трафика в pipe, а также создаются pipe правила для скоростей указанных в тарифных планах и индивидуальных скоростях пользователей. При поднятии сессии программа /usr/abills/libexec/linkupdown заносит IP адрес абонента в 10 и 11 таблицу ipfw, если у абонента нет правил обрезки скорости он заносится в 9 таблицу. После старта системы правила пере направления должны выглядеть следующим образом. # ipfw show # Пиринговые сети с ID 2 08000 0 0 pipe tablearg ip from table(14) to table(2,2) in recv ng* 08010 0 0 pipe tablearg ip from table(2,2) to table(15) out xmit ng* # Пиринговые сети с ID 1 09000 0 0 pipe tablearg ip from table(12) to table(2,1) in recv ng* 09010 0 0 pipe tablearg ip from table(2,1) to table(13) out xmit ng* # Глобальный трафик 10000 0 0 pipe tablearg ip from table(10) to any in recv ng* 10010 0 0 pipe tablearg ip from any to table(11) out xmit ng* 10020 0 0 allow ip from table(9) to any in recv ng* 10025 0 0 allow ip from any to table(9) out xmit ng* **Настройка** Включение режима в биллинге. При работе данной схеме в конфигурационном файле **/usr/abills/libexec/config.pl** не должно быть опций $conf{ng_car}=1; $conf{mpd_filters}=1; Установка и настройка контролера шейпера в биллинге # cp /usr/abills/misc/ipfw/shaper_start.sh /usr/local/etc/rc.d/ **/etc/rc.conf** abills_shaper_enable="YES" **Проверка установленной скорости и изменении скорости на лету**\\ Для изменения скорости на "лету" без переподключения абонента нужно запускать программу billd с указанием сервера доступа на котором её запускаете \\ \\ **Пример:** # /usr/abills/libexec/billd checkspeed NAS_IDS=xxx Программа просматривает поточную скорость соединения и при несоответствии со скоростью биллинга преобразует её в нужную.\\ Если стоит только задача просмотреть скорость без изменения нужно добавить в аргументы программы опцию SHOW_SPEED=1 \\ ====Настройка NAT==== Убедитесь что файл /usr/local/etc/rc.d/shaper_start.sh установлен. Включение шейпера происходит в **/etc/rc.conf** ^abills_nat="EXTERNAL_IP:INTERNAL_IPS INTERNAL_IPS2:NAT_IF" | Включение NAT \\ \\ EXTERNAL_IP - IP адрес интерфейса смотрящего в интернет. Если параметр не указан система автоматически первый адрес с интерфейса маршрутизации по умолчанию \\ INTERNAL_IPS - Пул адресов которым разрешён доступ в интернет \\ INTERNAL_IPS2 - Второй пул адресов которым разрешён доступ в интернет \\ NAT_IF - имя интерфейса смотрящего в интернет. Если параметр не указан система автоматически определяет интерфейс маршрутизации по умолчанию | **Пример:**\\ abills_nat="xxx.xxx.xxx.xxx:10.0.0.0/24,192.168.0.0/16:" ====Дополнительно==== * [[abills:docs:manual:install_freebsd:ru|Настройка ABillS на FreeBSD]] * [[http://abills.net.ua/forum/viewtopic.php?f=5&t=6675|Обсуждение в форуме]]