Translations of this page:

MPD

[http://sourceforge.net/projects/mpd]
Multi-link PPP Daemon, использующий технологию netgraph.

Установка

# cd /usr/ports/net/mpd[4-5] && make && make install

Создать конфигурационный файл для подключения к радиусу /etc/radius.conf

auth    127.0.0.1:1812      radsecret   4    4
acct    127.0.0.1:1813      radsecret   4    4

127.0.0.1 - адрес Radius сервера

Функции шейпера осуществляет программа:

/usr/abills/libexec/linkupdown 

Обязательно включите следующие опции в ядро

options         IPFIREWALL
options         IPFIREWALL_DEFAULT_TO_ACCEPT
options         DUMMYNET

options         NETGRAPH
options         NETGRAPH_PPPOE

конфигурация сервера freeradius. Добавить дополнительные RADIUS пары в словарь raddb/dictionary

VENDOR          mpd             12341

ATTRIBUTE       mpd-rule        1       string          mpd

ATTRIBUTE       mpd-pipe        2       string          mpd

ATTRIBUTE       mpd-queue       3       string          mpd
ATTRIBUTE       mpd-table       4       string          mpd
ATTRIBUTE       mpd-table-static        5       string          mpd
ATTRIBUTE       mpd-filter      6       string          mpd
ATTRIBUTE       mpd-limit       7       string          mpd
ATTRIBUTE       mpd-input-octets        8       string          mpd
ATTRIBUTE       mpd-input-packets       9       string          mpd
ATTRIBUTE       mpd-output-octets       10      string          mpd
ATTRIBUTE       mpd-output-packets      11      string          mpd
ATTRIBUTE       mpd-link        12      string          mpd
ATTRIBUTE       mpd-bundle      13      string          mpd
ATTRIBUTE       mpd-iface       14      string          mpd
ATTRIBUTE       mpd-iface-index 15      integer         mpd
ATTRIBUTE       mpd-input-acct  16      string          mpd
ATTRIBUTE       mpd-output-acct 17      string          mpd
ATTRIBUTE       mpd-drop-user   154     integer         mpd

Добавляем нового клиента для RADIUS в raddb/clients.conf:

client 127.0.0.1 {
 secret = radsecret
 shortname = shortname
}

Ведение логов:

/etc/syslog.conf

!mpd
*.* /var/log/mpd.log

/etc/newsyslog.conf

/var/log/mpd.log 600 5 100 * JC

Создаём файл логов

# touch /var/log/mpd.log
# killall -1 syslogd

MPD 3.18

Конфигурация

Установка

Патч, расширяющий возможности MPD

Лучше всего использовать исходники отсюда. При использовании MPD с дистрибутивов выше FreeBSD 5.1 патч не применяется корректно.

soft/kha0s-mpd.tar.gz (Входит в Abills, каталог soft) Патч ставится после патча boco@ufanet.ru - mpd-3.18-drop-user-1.diff, хотя и полностью независим от него. Предназначен для тех случаев, когда пользователю необходимо предоставить предоплаченный объем трафика. Для удобства и универсальности лимит выставляется по аналогии с exppp:

VENDOR          Exppp                           1976
ATTRIBUTE       Exppp-Traffic-Limit             2       integer Exppp

Максимально возможное значение трафика за сессию - 2147483647 байт. Проверка счетчиков происходит раз в секунду, что вносит небольшую погрешность. Этот интервал можно поменять в самом патче согласно своих предпочтений и ресурсов. При завершении сессии по превышению лимита трафика выставляется Acct-Terminate-Cause со значением Session-Timeout для удобства анализа статистики по сессиям. kha0s(at)ukr.net

tar zxvf kha0s-mpd.tar.gz -C /usr/ports/net/mpd
cd /usr/ports/net/mpd
make
make install
mpd -b -c 10001

Конфигурационный файл для подключения к радиусу
/etc/radius.conf

auth    127.0.0.1:1812      radsecret   4    4
acct    127.0.0.1:1813      radsecret   4    4

127.0.0.1 - адрес Radius сервера

mpd.conf

default:
  load pptp0
  load pptp1
  load pptp2

pptp0:
  new -i ng0 pptp0 pptp0
  load pptp_standart

pptp1:
  new -i ng1 pptp1 pptp1
  load pptp_standart

pptp2:
  new -i ng2 pptp2 pptp2
  load pptp_standart

pptp_standart:
  set bundle disable multilink
  set bundle max-logins 1
  set iface disable on-demand
  set iface idle 0
  set iface enable tcpmssfix
  set iface up-script "/usr/local/abills/libexec/linkupdown mpd up" 
  set iface down-script "/usr/local/abills/libexec/linkupdown mpd down"     
  set link no pap chap
  set link enable chap
  set link keep-alive 10 60
  set link max-redial -1 

  set ipcp ranges 192.168.168.1/32 192.168.168.128/25
  set ipcp dns 192.168.168.1 192.168.168.2

  set bundle enable compression
  set ccp yes mppc
  set ccp yes mpp-e40
  set ccp yes mpp-e128
  set ccp yes mpp-stateless

  set pptp self 192.168.168.1
  set pptp enable incoming
  set pptp disable originate

  set radius config /etc/radius.conf
  set radius me 192.168.168.1
  set radius acct-update 300
  set ipcp enable radius-ip
  set bundle enable radius-auth
  set bundle enable radius-acct
  set iface enable radius-idle radius-session radius-mtu radius-route
  set ccp enable radius

mpd.links

pptp0:
  set link type pptp

pptp1:
  set link type pptp

pptp2:
  set link type pptp

ABillS

/ System configuration/ NAS/

Type: mpd
:Manage:
IP:PORT: xxx.xxx.xxx.xxx:10001
IP-адрес NAS сервера и порт объявленный -c 10001

Если Вы используете не пропатченый MPD, тогда тип сервера устанавливайте - other и задайте параметр Session-Timeout=65000 в поле RADIUS Parameters (,).

MPD 4.xx

[http://sourceforge.net/projects/mpd]

перед началом конфигурации MPD соберите ядро системы со следующими параметрами

 # Поддержка netgraph
 options         NETGRAPH	
 options         NETGRAPH_PPP	
 options         NETGRAPH_PPTPGRE 
 options         NETGRAPH_L2TP
 # Поддержка шейпера
 options         IPFIREWALL
 options         IPFIREWALL_DEFAULT_TO_ACCEPT
 options         DUMMYNET

Конфигурационный файл для подключения к радиусу
/etc/radius.conf

auth    127.0.0.1:1812      radsecret   4    4
acct    127.0.0.1:1813      radsecret   4    4

127.0.0.1 - адрес Radius сервера

Общие настройки для MPD:
mpd.conf

startup:
      # enable TCP-Wrapper (hosts_access(5)) to block unfriendly clients
      set global enable tcp-wrapper
      # configure the console
      set console port 5005
      set console ip 127.0.0.1
      set console user admin secretpass
      set console open
      #Netflow options
      set netflow export 127.0.0.1 9996
      set netflow source 127.0.0.1 9990
      #set netflow timeouts inactive active
      #set netflow node nodename

#Radius Config
radius:
      set radius config /etc/radius.conf
      set radius retries 3
      set radius timeout 3
      set radius me 192.168.202.15
      set auth acct-update 300
      set auth enable radius-auth
      set auth enable radius-acct
      set bundle enable compression
      set ccp yes mppc
      set auth enable mppc-pol
      set radius enable message-authentic

PPTP

Для поднятия сервиса дописываем в mpd.conf

default:

  load pptp0
  load pptp1

pptp0:
  new -n -i ng0 pptp0 pptp0
  load pptp
pptp1:
  new -i ng1 pptp1 pptp1
  load pptp


#Incoming PPTP link config
pptp:
#        new -i ng0 pptp pptp
      set iface disable on-demand
      set iface enable proxy-arp
      set iface idle 1800
      set iface enable tcpmssfix
      set bundle enable multilink
# use RADIUS servers
     load radius
      set link yes acfcomp protocomp
      set link no pap chap
      set link enable chap
      set link keep-alive 10 60
      set link mtu 1460
      set ipcp yes vjcomp
      set ipcp ranges 10.0.0.1/32 10.0.0.50/32
      set ipcp dns 192.168.1.3
      set ipcp nbns 192.168.1.4
#
# The five lines below enable Microsoft Point-to-Point encryption
# (MPPE) using the ng_mppc(8) netgraph node type.
#
      set bundle enable compression
      set ccp yes mppc
      set ccp yes mpp-e40
      set ccp yes mpp-e128
      set ccp yes mpp-stateless
      set pptp self %VPN_SERVER_IP%
      set pptp enable incoming
      set pptp disable originate

и в mpd.links

pptp0:
  set link type pptp
pptp1:
  set link type pptp

L2TP

Для запуска сервиса дописываем в mpd.conf

default:
  load l2tp0
  load l2tp1

l2tp0:
      new -i ng0 l2tp0 l2tp0
      load l2tp_server

l2tp1:
      new -i ng1 l2tp1 l2tp1
      load l2tp_server

l2tp_server:
      set bundle disable multilink
      set bundle enable compression
      set bundle yes crypt-reqd
      set ipcp yes vjcomp
      # set ipcp ranges 131.188.69.161/32 131.188.69.170/28
      set ipcp dns %DNS_SERVER%
      set ccp yes mppc
      set iface disable on-demand
      set iface enable proxy-arp
      set link yes acfcomp protocomp
      set link no pap chap
      set link enable chap
      set link keep-alive 10 180
      load radius
      set iface up-script "/usr/abills/libexec/linkupdown mpd up"
      set iface down-script "/usr/abills/libexec/linkupdown mpd down"
      set l2tp self 192.168.202.15
      set l2tp enable incoming
      set l2tp disable originate

и в mpd.links

l2tp0:
    set link type l2tp
l2tp1:
    set link type l2tp

Dial-In

Для запуска сервиса дописываем в mpd.conf

startup:
# configure the console
set console port 5005
set console ip 127.0.0.1
set console user admin gbgtw
set console open

default:
load dialin

dialin:
new dialin modema
set iface idle 900
set iface session 0
set bundle enable noretry
set ipcp yes vjcomp
      set link enable chap	
#	set link enable chap pap
set link yes acfcomp protocomp
      set ipcp dns 195.95.171.2
set modem idle-script AnswerCall
load radius

radius:
set radius config /etc/radius.conf
set radius retries 3
set radius timeout 3
set radius me 127.0.0.1
set auth acct-update 300
set auth enable radius-auth
set auth enable radius-acct
set bundle enable compression
set ccp yes mppc
set ccp enable mppe-policy
set radius enable message-authentic

и в mpd.links

modema:
set phys type modem
set modem device /dev/cuad1
set modem speed 115200	
set modem var $DialPrefix "DT"


bitsurfr:
set phys type modem
set modem device /dev/cuad2
set link latency 1000
set link bandwidth 92160
set modem speed 115200
set modem watch +cd
set modem var $TA_SwitchType "NI-1"
set modem var $TA_Dirno1 "2125551212"
set modem var $TA_Dirno2 "2125551212"
set modem var $TA_SPID1 "212555121201"
set modem var $TA_SPID2 "212555121202"
set modem var $TA_Bonding "yes"

ABillS

/ System configuration/ NAS/

Type: mpd4
:Manage:
IP:PORT: 127.0.0.1:5005
IP-дрес и порт контроля NAS-сервера
User: admin
Password: secretpass

MPD5

Конфигурация демона

PPTP

/usr/local/etc/mpd5/mpd.conf

startup:
        # enable TCP-Wrapper (hosts_access(5)) to block unfriendly clients
        set global enable tcp-wrapper
        # configure the console
        set console self %MPD_CONSOLE_IP% %MPD_CONSOLE_PORT%
        set user %MPD_CONSOLE_USER% %MPD_CONSOLE_PASSWORD% admin
        set console open
        #WEB managment
        #set web self 0.0.0.0 5006
        #set web open
        #Netflow options
        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
#       Calling-Station-Id = "10.0.4.16 / 00:18:f3:5a:9f:6a / em0"
        set link enable report-mac
        #set netflow node netflow


default:
  load pptp_server
  # load pppoe_server

Для сервере PPTP следующая секция

pptp_server:
  # Define dynamic IP address pool.
  # Диапазон IP адрессов, 
  # который присвоется VPN девайсу.
  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
  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%
  # The five lines below enable Microsoft Point-to-Point encryption
  # (MPPE) using the ng_mppc(8) netgraph node type.
  set bundle enable compression
  set ccp yes mppc
  set mppc yes e40
  set mppc yes e128
  set mppc yes stateless
  # Create clonable link template named L
  create link template L pptp
  # Set bundle template to use
  set link action bundle B
  # Multilink adds some overhead, but gives full 1500 MTU.
  set link enable multilink
  set link yes acfcomp protocomp
  set link no pap chap
  set link enable chap
  set link keep-alive 10 60
  # We reducing link mtu to avoid GRE packet fragmentation
  set link mtu 1460
  # Configure PPTP
  # Внешний IP на котором будет прослушиватся соединение
  set pptp self %VPN_SERVER_IP%
  load server_common  

PPPOE

Для сервере PPTP следующая секция:

 pppoe_server:
      create bundle template B
      set iface idle 0
      set iface enable tcpmssfix proxy-arp
      set ipcp no vjcomp
      set iface up-script   "/usr/abills/libexec/linkupdown mpd up"
      set iface down-script "/usr/abills/libexec/linkupdown mpd down"
      set ipcp ranges 10.10.0.1 ippool pool1
      set ipcp dns %DNS%

      create link template L pppoe
      set link action bundle B
      set pppoe acname "bras1"
      set pppoe iface %PPPOE_INTERFACE%
      set pppoe service "*"
      load server_common

# Секции server_common, radius

server_common:
      set link no pap eap
      set link yes chap-md5
      set link keep-alive 20 60
      set link enable incoming
      set link no acfcomp protocomp


      load radius

radius:
     #IP, пароль и порты RADIUS-сервера
     #set radius server 127.0.0.1 radsecret 1812 1813
     set radius config /etc/radius.conf
     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

Dial-In

использую два последних порта мультипортовки cuada и cuadb.
mpd.script - стандартный

mpd.conf

startup:
        set console self 127.0.0.1 5005
        set console user foo bar
        set console open

default:
        load modem0
        load modem1


modem0:
        create bundle static B1
        set ipcp dns 192.168.1.1
        set iface idle 900
        create link static L1 modem
        set link action bundle B1
        set modem device /dev/cuadb
        load standart

modem1:
        create bundle static B2
        set ipcp dns 192.168.1.1
        set iface idle 900
        create link static L2 modem
        set link action bundle B2
        set modem device /dev/cuad1
        load standart

standart:

        set link enable chap pap eap
        set modem var $DialPrefix "DT"
        set modem idle-script AnswerCall
        set link enable incoming
        load radius

radius:
        #set radius config /etc/radius.conf
        set radius server localhost radsecret 1812 1813
        set radius retries 3
        set radius timeout 3
        set radius me 127.0.0.1
        set auth acct-update 300
        set auth enable radius-auth
        set auth enable radius-acct
        set radius enable message-authentic
  

ABillS

config.pl

$conf{mpd_filters}=1 Использовать MPD фильтры для учёта пирингового трафика.
Внимание если сетей больше чем 1000 использование фильтров становиться не эффективным, так как все сети RADIUS не успевает передать MPD. По этому более правильно при большом количестве сетей использовать схему Dv+IPN

/ System configuration/ NAS/

Type: mpd5
:Manage:
IP:PORT: 127.0.0.1:5005
IP-адрес и порт контроля NAS-сервера
User: admin
Password: secretpass

ng_car

Также можно использовать внутренние параметры шейпера mpd вместо шейпера ABillS (linkupdown). Для включения шейпера используя технологию ng_car нужно прописать в RADIUS pairs:

mpd-limit+=in#1=all shape 128000 4000,
mpd-limit+=out#1=all shape 128000 4000

Системные настройки сервера

Есть некоторые моменты, которые следует учесть, если ваш сервер имеет большое количество соединений. Например, можно столкнуться с ситуацией, когда при выводе команды ngctl list будет выдаваться No buffer space available. Чтобы этого избежать следует добавить в /boot/loader.conf:

#Freebsd 7.2
kern.ipc.nmbclusters=262144
kern.ipc.maxsockets=262144
net.graph.maxalloc=4096
kern.maxusers=2048
# maximize if ngctl not enough space) (amd64)
#kern.ipc.maxpipekva=536870912
# maximize if ngctl not enough space) (i386)
kern.ipc.maxpipekva=256000009

kern.maxfiles=204800
kern.maxfilesperproc=200000
kern.ipc.maxsockbuf=524288

в /etc/sysctl.conf:

net.graph.maxdgram=128000
net.graph.recvspace=128000

Будьте предельно внимательны при изменении этих значений для разных версий ОС они могут отличаться. Если система не загружается следует вернуть значения обратно. Самый критичный параметр kern.ipc.maxpipekva.

 
abills/docs/mpd/ru.txt · Последние изменения: 2010/02/02 17:27 От pigich
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki