Настройка VPN сервера FreeBSD MPD

Материал из BiTel WiKi

(Различия между версиями)
Перейти к: навигация, поиск
м (Правки Oftipo (обсуждение) откачены к версии Admin)
 
(11 промежуточных версий не показаны.)
Строка 1: Строка 1:
 +
== MPD 5.x ==
 +
 +
Есть нюансы по сбросу пользователя по SNMP, решение от 4ки не работает.
 +
 +
* http://www.bgbilling.ru/forum/viewtopic.php?t=737
 +
* http://www.bgbilling.ru/forum/viewtopic.php?p=11738
 +
 +
=== Вариант 1 - патч MPD ===
 +
 +
Рабочая конфигурация MPD5 [[Медиа:Mpd5_config.zip]] + патч, позволяющий производить сброс пользователей MPD без авторизации: [[Медиа:Mpd5_patch.zip]]
 +
В минимальной конфигурации killuser, closeiface, upiface, downiface, whong не нужны. В скрипте mpd.conf можно отключить вызов upiface и downiface.
 +
 +
=== Вариант 2 - скрипт сброса passtest.sh, работающий с авторизацией по Web ===
 +
 +
<source lang="bash">
 +
#!/bin/sh
 +
 +
if [ -z "$*" ]; then
 +
    exit 0
 +
fi
 +
 +
mpd_user=login
 +
mpd_pass=passw
 +
 +
if [ $1 = '-s' ]; then
 +
  if [ -n "$4" ]; then
 +
        URI="http://127.0.0.1:8080/bincmd?link%20L_pptp-$4&close"
 +
        HTTP_AUTH="basic:*:$mpd_user:$mpd_pass" fetch $URI
 +
  fi
 +
fi
 +
 +
if [ $1 = '-g' ]; then
 +
    echo $2
 +
    echo 'string'
 +
    echo "-"
 +
fi
 +
</source>
 +
 +
На get запросы (чтение SNMP ветки) возвращается просто -. get запросы использовались в старом режиме работы BGRadiusDialup checker для проверки активности соединения, в режиме update они не используются. Однако данная секция скрипта работает, т.к. перед установкой значения Net-Snmp производит чтение предыдущего значения. Видимо, чтобы не выполнять установку, если значение такое же, как было.
 +
 +
Пользователь, от которого производится сброс, должен быть указан в mpd.conf, как-то так:
 +
 +
<source lang="bash">
 +
startup:
 +
        # configure mpd users
 +
        set user login passw admin
 +
        # configure the web server
 +
        set web self 127.0.01 8080
 +
        set web auth
 +
        set web open
 +
</source>
 +
 +
Обратите внимание на префикс "L_pptp-", который добавляется к Nas-Port для получения номера линка. Данный префикс указывается в mpd.conf следующим образом:
 +
 +
<source lang="bash">
 +
startup:
 +
        create link template L_pptp pptp
 +
</source>
 +
 +
И в конфигурации Net-Snmp snmp.conf:
 +
 +
<source lang="bash">
 +
com2sec billing X.X.X.X secret
 +
group groupbill v2c billing
 +
 +
view all included .1.3.6.1.4.1.2021.255 ff.f0
 +
#context sec.model sec.level prefix read write notify
 +
access groupbill ""    v2c    noauth  prefix  all    all    none
 +
 +
pass .1.3.6.1.4.1.2021.255 /bin/sh /usr/local/libexec/mpd/passtest.sh
 +
</source>
 +
 +
Перенаправление SNMP запросов к ветке .1.3.6.1.4.1.2021.255 на скрипт passtest.sh. Коммюнити secret должен быть указан в конфигурации NAS. Вместо X.X.X.X - IP адрес, с которого приходят SNMP запросы на дисконнект от радиуса. Для сброса пользователя биллинг шлет запросы вида -s .1.3.6.1.4.1.2021.255.1 integer 72, где 72 - Nas-Port соединения. Net-Snmp передает запрос в виде 4х параметров скрипту passtest.sh.
 +
 +
Большое спасибо [[Участник:Boco|boco]] за помощь в разработке решения.
 +
 +
== MPD 4.x ==
 +
MPD 4.x версии доступен из портов, никакая адаптация для его работы с биллингом не требуется.
MPD 4.x версии доступен из портов, никакая адаптация для его работы с биллингом не требуется.
-
Конфигурационные файлы для настройки MPD можно загрузить [ftp://bgbilling.ru/pub/bgbilling/mpd здесь]. Все скрипты кроме '''001-netflow.sh''', '''002-mpd.sh''' рассчитаны на размещение в каталоге '''/usr/local/libexec/mpd/'''.
+
Конфигурационные файлы для настройки MPD можно загрузить [[Медиа:mpd4_files.zip]]. Все скрипты кроме '''001-netflow.sh''', '''002-mpd.sh''' рассчитаны на размещение в каталоге '''/usr/local/libexec/mpd/'''.
Скрипты запуска MPD и настройки NetFlow '''001-netflow.sh''', '''002-mpd.sh''' размещаются в '''/usr/local/etc/rc.d/'''. В качестве NetFlow агента используется '''ng_netflow''', доступный сразу в FreeBSD 6 и новее.
Скрипты запуска MPD и настройки NetFlow '''001-netflow.sh''', '''002-mpd.sh''' размещаются в '''/usr/local/etc/rc.d/'''. В качестве NetFlow агента используется '''ng_netflow''', доступный сразу в FreeBSD 6 и новее.

Текущая версия на 12:47, 28 марта 2013

Содержание

MPD 5.x

Есть нюансы по сбросу пользователя по SNMP, решение от 4ки не работает.

Вариант 1 - патч MPD

Рабочая конфигурация MPD5 Медиа:Mpd5_config.zip + патч, позволяющий производить сброс пользователей MPD без авторизации: Медиа:Mpd5_patch.zip В минимальной конфигурации killuser, closeiface, upiface, downiface, whong не нужны. В скрипте mpd.conf можно отключить вызов upiface и downiface.

Вариант 2 - скрипт сброса passtest.sh, работающий с авторизацией по Web

#!/bin/sh
 
if [ -z "$*" ]; then
    exit 0
fi
 
mpd_user=login
mpd_pass=passw
 
if [ $1 = '-s' ]; then
   if [ -n "$4" ]; then
        URI="http://127.0.0.1:8080/bincmd?link%20L_pptp-$4&close"
        HTTP_AUTH="basic:*:$mpd_user:$mpd_pass" fetch $URI
   fi
fi
 
if [ $1 = '-g' ]; then
    echo $2
    echo 'string'
    echo "-"
fi

На get запросы (чтение SNMP ветки) возвращается просто -. get запросы использовались в старом режиме работы BGRadiusDialup checker для проверки активности соединения, в режиме update они не используются. Однако данная секция скрипта работает, т.к. перед установкой значения Net-Snmp производит чтение предыдущего значения. Видимо, чтобы не выполнять установку, если значение такое же, как было.

Пользователь, от которого производится сброс, должен быть указан в mpd.conf, как-то так:

startup:
        # configure mpd users
        set user login passw admin
        # configure the web server
        set web self 127.0.01 8080
        set web auth
        set web open

Обратите внимание на префикс "L_pptp-", который добавляется к Nas-Port для получения номера линка. Данный префикс указывается в mpd.conf следующим образом:

startup:
        create link template L_pptp pptp

И в конфигурации Net-Snmp snmp.conf:

com2sec billing X.X.X.X secret
group groupbill v2c billing
 
view all included .1.3.6.1.4.1.2021.255 ff.f0
#context sec.model sec.level prefix read write notify
access groupbill ""     v2c     noauth  prefix  all     all     none
 
pass .1.3.6.1.4.1.2021.255 /bin/sh /usr/local/libexec/mpd/passtest.sh

Перенаправление SNMP запросов к ветке .1.3.6.1.4.1.2021.255 на скрипт passtest.sh. Коммюнити secret должен быть указан в конфигурации NAS. Вместо X.X.X.X - IP адрес, с которого приходят SNMP запросы на дисконнект от радиуса. Для сброса пользователя биллинг шлет запросы вида -s .1.3.6.1.4.1.2021.255.1 integer 72, где 72 - Nas-Port соединения. Net-Snmp передает запрос в виде 4х параметров скрипту passtest.sh.

Большое спасибо boco за помощь в разработке решения.

MPD 4.x

MPD 4.x версии доступен из портов, никакая адаптация для его работы с биллингом не требуется.

Конфигурационные файлы для настройки MPD можно загрузить Медиа:mpd4_files.zip. Все скрипты кроме 001-netflow.sh, 002-mpd.sh рассчитаны на размещение в каталоге /usr/local/libexec/mpd/.

Скрипты запуска MPD и настройки NetFlow 001-netflow.sh, 002-mpd.sh размещаются в /usr/local/etc/rc.d/. В качестве NetFlow агента используется ng_netflow, доступный сразу в FreeBSD 6 и новее.

Для правильного функционирования необходимо убедится что в вашей системе установлен netcat, он используется в скрипте passtest.sh для передачи сигнала о разрыве сессии на сокет управления MPD.

Скрипт вызывается net-snmp демоном, при получении запроса на OID .1.3.6.1.4.1.2021.255. Конфигурация snmpd.conf также доступна на FTP. Замените x.x.x.x secret на IP адрес RADIUS сервера, с которого запросы попадут на snmpd и SNMP communtity, идентичный введенному в конфигурации NASа.

Разрыв по SNMP-не основной механизм прерывания сессий, он используется для срочного сброса клиентов через монитор модуля DialUP, либо через консольное управление. Кроме разрыва по SNMP RADIUS передает атрибут mpd-drop-user в ACCOUNTING RESPONSE пакете.

Для MPD NASов должен быть растроен режим тарификации UPDATE в биллинге, т.е. обсчеты идут по получению UPDATE пакетов. У NASа должен быть установлен вендор MPD, на основании этого RADIUS будет слать drop-атрибут.

MPD позволяет передавать опции скорости канала через RADIUS атрибуты.

Например, можно создать несколько наборов атрибутов в конфигурации модуля.

attrset.1.title=Скорость 64-Арена
attrset.1.attributes=mpd-filter=1#1=match dst net 82.200.107.0/27 and src net 192.168.120.0/24;mpd-filter=2#1=match src net 82.200.107.0/27 and dst net 192.168.120.0/24;mpd-limit=in#1=flt1 pass;mpd-limit=in#2=all shape 64000 4000 pass;mpd-limit=out#1=flt2 pass;mpd-limit=out#2=all shape 64000 4000 pass;

#для сетки 82.200.107.0/27 и 192.168.120.0/24 без ограничений
#для остально интернета первые 4 кб без ограничений, потом скорость ограничивается до 64 кб/с

Либо более простой пример:

attrset.1.title=Канал 64
attrset.1.attributes=mpd-limit=out#1=all shape 60000 pass;mpd-limit=in#1=all rate-limit 10000000 pass
attrset.2.title=Канал 128
attrset.2.attributes=mpd-limit=out#1=all shape 128000 pass;mpd-limit=in#1=all rate-limit 10000000 pass
attrset.3.title=Канал 256
attrset.3.attributes=mpd-limit=out#1=all shape 256000 pass;mpd-limit=in#1=all rate-limit 10000000 pass
attrset.4.title=Канал 512
attrset.4.attributes=mpd-limit=out#1=all shape 512000 pass;mpd-limit=in#1=all rate-limit 10000000 pass

Ссылки по теме

Личные инструменты