mpd5 динамическое изменение скорости.

Обсуждаем OS FreeBSD и сервисы на ней.

mpd5 динамическое изменение скорости.

Сообщение Андрей » 10 июн 2011, 09:40

Привет всем.
Столкнулся с проблемой динамического изменения скорости в mpd5 на пользователя.
Стоит 3 машины. 2 реальных, 1 виртуальная.
Проблемы несколько интересные.
на 1й mpd5 не слушает порт 3799, как следствие он не принимает соединений на порт, ну оно и логично. :D
На 2й mpd5 слушает порт 3799, принимает содеинения на него и изменяет скорость, во всяком случае рапортует об этом, но в инфе по клиенту запись о скорости просто удаляется.
на 3м mpd5 работает по 3799 порту идеально. И в записи добавляется, и рапортует и скорсть изменяет налету.

1й сервер в учет брать не будем. :)
На втором и виртуальном стоят mpd-5.5, freebsd 7.3.
Конфиг 2го сервера:
Код: Выделить всё
startup:
   # configure mpd users
   set user aaa bbb admin
   # configure the console
   set console self 127.0.0.1 5005
   set console open
   # configure the web server
   set web self 10.10.10.1  5006
   set web open
   set radsrv self 127.0.0.1
   set radsrv peer 127.0.0.1 pass
   set radsrv open
   set radsrv enable coa disconnect
...

Конфиг 3го сервера:
Код: Выделить всё
startup:
   # configure mpd users
   set user aaa bbb admin
   # configure the console
   set console self 10.10.10.97 5005
   set console open
   # configure the web server
   set web self 10.10.10.97  5006
   set web open
   ####
        set radsrv self 1.0.0.1
        set radsrv peer 1.0.0.1 pass
        set radsrv open
        set radsrv enable coa disconnect
......


Скорость меняю так:
2й сервер:
Код: Выделить всё
#!/bin/sh

/bin/echo "User-Name =" $1", mpd-limit += \"in#1=all shape " $2 " pass\", mpd-limit += \"out#1=all shape " $2 " pass\"" | radclient -x -s 127.0.0.1:3799 coa pass

Код: Выделить всё
./myfile login 1024000
Это 1 мбит в секунду для пользователя login

3й сервер:
Код: Выделить всё
#!/bin/sh

/bin/echo "User-Name =" $1", mpd-limit += \"in#1=all shape " $2 " pass\", mpd-limit += \"out#1=all shape " $2 " pass\"" | radclient -x -s 1.0.0.1:3799 coa pass


вот результаты:
2й сервер:
до:
Код: Выделить всё
[] link L-40
[L-40] show auth
Configuration:
   My authname     :
   Max-Logins      : 1
   Acct Update     : 300
      Limit In     : 0
      Limit Out    : 0
   Auth timeout    : 40
   ExtAuth script  :
   ExtAcct script  :
Auth options
   radius-auth   enable
   radius-acct   enable
   internal     enable
   ext-auth     disable
   ext-acct     disable
   system-auth   disable
   system-acct   disable
   pam-auth     disable
   pam-acct     disable
   opie         disable
   acct-mandatory   enable
Auth Data
   Peer authname   : login
   IP range        : ********/32
   IP pool         :
   DNS             : 0.0.0.0 0.0.0.0
   NBNS            : 0.0.0.0 0.0.0.0
   MTU             : 0
   Session-Timeout : 0
   Idle-Timeout    : 0
   Acct-Update     : 0
   Routes          :
   IPFW rules      :
   IPFW pipes      :
   IPFW queues     :
   IPFW tables     :
   Traffic filters :
   Traffic limits  :
      in#1   : 'all shape 3000000 pass'
      out#1   : 'all shape 3000000 pass'
   MS-Domain       : (null)
   MPPE Types      : Allowed
   MPPE Policy     : 40 128 bit
   MPPE Keys       : yes

после после выполнения ./myfile login 1024000
Код: Выделить всё
[] link L-40
[L-40] show auth
Configuration:
   My authname     :
   Max-Logins      : 1
   Acct Update     : 300
      Limit In     : 0
      Limit Out    : 0
   Auth timeout    : 40
   ExtAuth script  :
   ExtAcct script  :
Auth options
   radius-auth   enable
   radius-acct   enable
   internal     enable
   ext-auth     disable
   ext-acct     disable
   system-auth   disable
   system-acct   disable
   pam-auth     disable
   pam-acct     disable
   opie         disable
   acct-mandatory   enable
Auth Data
   Peer authname   : login
   IP range        : ********/32
   IP pool         :
   DNS             : 0.0.0.0 0.0.0.0
   NBNS            : 0.0.0.0 0.0.0.0
   MTU             : 0
   Session-Timeout : 0
   Idle-Timeout    : 0
   Acct-Update     : 0
   Routes          :
   IPFW rules      :
   IPFW pipes      :
   IPFW queues     :
   IPFW tables     :
   Traffic filters :
   Traffic limits  :
   MS-Domain       : (null)
   MPPE Types      : Allowed
   MPPE Policy     : 40 128 bit
   MPPE Keys       : yes

login получает нешейпируемую полосу.

вот на 3м (виртуальном):
до:
Код: Выделить всё
[] link L-1
[L-1] show auth
Configuration:
   My authname     :
   Max-Logins      : 1
   Acct Update     : 300
      Limit In     : 0
      Limit Out    : 0
   Auth timeout    : 40
   ExtAuth script  :
   ExtAcct script  :
Auth options
   radius-auth   enable
   radius-acct   enable
   internal     enable
   ext-auth     disable
   ext-acct     disable
   system-auth   disable
   system-acct   disable
   pam-auth     disable
   pam-acct     disable
   opie         disable
   acct-mandatory   enable
Auth Data
   Peer authname   : aaa
   IP range        : 172.16.0.13/32
   IP pool         :
   DNS             : 0.0.0.0 0.0.0.0
   NBNS            : 0.0.0.0 0.0.0.0
   MTU             : 0
   Session-Timeout : 0
   Idle-Timeout    : 0
   Acct-Update     : 0
   Routes          :
   IPFW rules      :
   IPFW pipes      :
   IPFW queues     :
   IPFW tables     :
   Traffic filters :
   Traffic limits  :
      in#1   : 'all shape  1024000  pass'
      out#1   : 'all shape  1024000  pass'
   MS-Domain       : (null)
   MPPE Types      : Allowed
   MPPE Policy     : 40 128 bit
   MPPE Keys       : yes

после ./myfile aaa 100:
Код: Выделить всё
[] link L-1
[L-1] show auth
Configuration:
   My authname     :
   Max-Logins      : 1
   Acct Update     : 300
      Limit In     : 0
      Limit Out    : 0
   Auth timeout    : 40
   ExtAuth script  :
   ExtAcct script  :
Auth options
   radius-auth   enable
   radius-acct   enable
   internal     enable
   ext-auth     disable
   ext-acct     disable
   system-auth   disable
   system-acct   disable
   pam-auth     disable
   pam-acct     disable
   opie         disable
   acct-mandatory   enable
Auth Data
   Peer authname   : aaa
   IP range        : 172.16.0.13/32
   IP pool         :
   DNS             : 0.0.0.0 0.0.0.0
   NBNS            : 0.0.0.0 0.0.0.0
   MTU             : 0
   Session-Timeout : 0
   Idle-Timeout    : 0
   Acct-Update     : 0
   Routes          :
   IPFW rules      :
   IPFW pipes      :
   IPFW queues     :
   IPFW tables     :
   Traffic filters :
   Traffic limits  :
      in#1   : 'all shape  100  pass'
      out#1   : 'all shape  100  pass'
   MS-Domain       : (null)
   MPPE Types      : Allowed
   MPPE Policy     : 40 128 bit
   MPPE Keys       : yes


Где может быть проблема?
Заранее благодарен за ответ.
.ı|ı..ı|ı.
Андрей
местный житель
 
Сообщения: 1028
Зарегистрирован: 14 янв 2009, 13:37
Откуда: Оренбургская область

Re: mpd5 динамическое изменение скорости.

Сообщение lehisnoe » 14 июн 2011, 19:17

Что mpd пишет в log'ах на втором сервере? Интересуют моменты:
    - нет ли ошибок при старте;
    - логи при подаче команды изменения скорости.
No users
No troubles
No money
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
lehisnoe
Site Admin
 
Сообщения: 539
Зарегистрирован: 11 июн 2008, 14:09
Откуда: Moscow

Re: mpd5 динамическое изменение скорости.

Сообщение Андрей » 15 июн 2011, 09:13

Лог при старте:
Код: Выделить всё
Jun 15 08:55:29 nas_test mpd: PPTP: stop waiting for connection on 10.10.2.3 1723
Jun 15 08:55:29 nas_test mpd: process 881 terminated
Jun 15 08:55:31 nas_test mpd: Multi-link PPP daemon for FreeBSD
Jun 15 08:55:31 nas_test mpd: 
Jun 15 08:55:31 nas_test mpd: process 8670 started, version 5.5 (root@nas_test.localhost 08:59 31-Jan-2011)
Jun 15 08:55:31 nas_test mpd: CONSOLE: listening on 127.0.0.1 5005
Jun 15 08:55:31 nas_test mpd: web: listening on 10.10.2.3 5006
Jun 15 08:55:31 nas_test mpd: radsrv: listening on 127.0.0.1 3799
Jun 15 08:55:31 nas_test mpd: mpd.conf:75: Error in 'set netflow peer timeouts 60 120'
Jun 15 08:55:31 nas_test mpd: PPTP: waiting for connection on 10.10.2.3 1723
Jun 15 08:55:31 nas_test mpd: mpd.conf:95: Error in 'set radius server 10.10.0.2 secret secret 1812 1813'
Jun 15 08:55:31 nas_test mpd: [L-1] Accepting PPTP connection
Jun 15 08:55:31 nas_test mpd: [L-1] Link: OPEN event
Jun 15 08:55:31 nas_test mpd: [L-1] LCP: Open event
Jun 15 08:55:31 nas_test mpd: [L-1] LCP: state change Initial --> Starting
Jun 15 08:55:31 nas_test mpd: [L-1] LCP: LayerStart
Jun 15 08:55:31 nas_test mpd: [L-1] PPTP: attaching to peer's outgoing call
Jun 15 08:55:31 nas_test mpd: [L-1] Link: UP event
Jun 15 08:55:31 nas_test mpd: [L-1] LCP: Up event
Jun 15 08:55:31 nas_test mpd: [L-1] LCP: state change Starting --> Req-Sent
Jun 15 08:55:31 nas_test mpd: [L-1] LCP: SendConfigReq #1
Jun 15 08:55:31 nas_test mpd: [L-1]   ACFCOMP
Jun 15 08:55:31 nas_test mpd: [L-1]   PROTOCOMP
Jun 15 08:55:31 nas_test mpd: [L-1]   MRU 1500
Jun 15 08:55:31 nas_test mpd: [L-1]   MAGICNUM 0bd7a3c2
Jun 15 08:55:31 nas_test mpd: [L-1]   AUTHPROTO CHAP MSOFTv2
Jun 15 08:55:31 nas_test mpd: [L-1]   MP MRRU 2048
Jun 15 08:55:31 nas_test mpd: [L-1]   MP SHORTSEQ
Jun 15 08:55:31 nas_test mpd: [L-1]   ENDPOINTDISC [802.1] 00 25 90 12 38 0a
Jun 15 08:55:31 nas_test mpd: [L-1] LCP: rec'd Configure Request #75 (Req-Sent)
Jun 15 08:55:31 nas_test mpd: [L-1]   MRU 1460
Jun 15 08:55:31 nas_test mpd: [L-1]   MAGICNUM 1f52c579
Jun 15 08:55:31 nas_test mpd: [L-1] LCP: SendConfigAck #75
Jun 15 08:55:31 nas_test mpd: [L-1]   MRU 1460
Jun 15 08:55:31 nas_test mpd: [L-1]   MAGICNUM 1f52c579
Jun 15 08:55:31 nas_test mpd: [L-1] LCP: state change Req-Sent --> Ack-Sent
Jun 15 08:55:31 nas_test mpd: [L-1] LCP: rec'd Configure Reject #1 (Ack-Sent)
Jun 15 08:55:31 nas_test mpd: [L-1]   ACFCOMP
Jun 15 08:55:31 nas_test mpd: [L-1]   PROTOCOMP
Jun 15 08:55:31 nas_test mpd: [L-1]   MP MRRU 2048
Jun 15 08:55:31 nas_test mpd: [L-1]   MP SHORTSEQ
Jun 15 08:55:31 nas_test mpd: [L-1]   ENDPOINTDISC [802.1] 00 25 90 12 38 0a
Jun 15 08:55:31 nas_test mpd: [L-1] LCP: SendConfigReq #2
Jun 15 08:55:31 nas_test mpd: [L-1]   MRU 1500
Jun 15 08:55:31 nas_test mpd: [L-1]   MAGICNUM 0bd7a3c2
Jun 15 08:55:31 nas_test mpd: [L-1]   AUTHPROTO CHAP MSOFTv2
Jun 15 08:55:31 nas_test mpd: [L-1] LCP: rec'd Configure Nak #2 (Ack-Sent)
Jun 15 08:55:31 nas_test mpd: [L-1]   MRU 1460
Jun 15 08:55:31 nas_test mpd: [L-1] LCP: SendConfigReq #3
Jun 15 08:55:31 nas_test mpd: [L-1]   MRU 1460
Jun 15 08:55:31 nas_test mpd: [L-1]   MAGICNUM 0bd7a3c2
Jun 15 08:55:31 nas_test mpd: [L-1]   AUTHPROTO CHAP MSOFTv2
Jun 15 08:55:31 nas_test mpd: [L-1] LCP: rec'd Configure Ack #3 (Ack-Sent)
Jun 15 08:55:31 nas_test mpd: [L-1]   MRU 1460
Jun 15 08:55:31 nas_test mpd: [L-1]   MAGICNUM 0bd7a3c2
Jun 15 08:55:31 nas_test mpd: [L-1]   AUTHPROTO CHAP MSOFTv2
Jun 15 08:55:31 nas_test mpd: [L-1] LCP: state change Ack-Sent --> Opened
Jun 15 08:55:31 nas_test mpd: [L-1] LCP: auth: peer wants nothing, I want CHAP
Jun 15 08:55:31 nas_test mpd: [L-1] CHAP: sending CHALLENGE #1 len: 21
Jun 15 08:55:31 nas_test mpd: [L-1] LCP: LayerUp
Jun 15 08:55:31 nas_test mpd: [L-1] CHAP: rec'd RESPONSE #1 len: 60


Лог при изменении скорости.
Код: Выделить всё
Jun 15 12:12:56 nas_test mpd: radsrv: CoA request
Jun 15 12:12:56 nas_test mpd: [B-21] IFACE: Down event
Jun 15 12:12:56 nas_test mpd: [B-21] IFACE: Up event

Ругается на радиус, но тем не менее с ним работает и ругается на таймаут сессии, но тоже работает.

Аналогичная настройка и на виртуальном, но при внесении изменения в полосе появляется логируется это, В принципе тоже самое.:
Код: Выделить всё
Jun 15 12:30:44 nas_for_billing mpd: radsrv: CoA request
Jun 15 12:30:44 nas_for_billing mpd: [B-1] IFACE: Down event
Jun 15 12:30:44 nas_for_billing mpd: [B-1] IFACE: No interface to proxy arp on for 172.16.0.13
Jun 15 12:30:44 nas_for_billing mpd: [B-1] IFACE: Up event
.ı|ı..ı|ı.
Андрей
местный житель
 
Сообщения: 1028
Зарегистрирован: 14 янв 2009, 13:37
Откуда: Оренбургская область

Re: mpd5 динамическое изменение скорости.

Сообщение Андрей » 02 сен 2011, 07:36

проблему по 2 серверу решил. Банально невнимательность. Нужно было добавить в raddb словарь от mpd. Только после этого оно начинает рботать так, как нужно. Иначе она не понимает, что хотят.

Теперь нужно с 1м сервером разобраться.
.ı|ı..ı|ı.
Андрей
местный житель
 
Сообщения: 1028
Зарегистрирован: 14 янв 2009, 13:37
Откуда: Оренбургская область

Re: mpd5 динамическое изменение скорости.

Сообщение Андрей » 05 сен 2011, 08:05

в общем как не крутить, в логах мпд на первом сервере есть запись:
Код: Выделить всё
Sep  5 10:25:17 nas2 mpd: mpd.conf:27: Unknown command: 'set radsrv self 127.0.0.1'. Try "help".
Sep  5 10:25:17 nas2 mpd: mpd.conf:28: Unknown command: 'set radsrv peer 127.0.0.1 pass'. Try "help".
Sep  5 10:25:17 nas2 mpd: mpd.conf:29: Unknown command: 'set radsrv open'. Try "help".
Sep  5 10:25:17 nas2 mpd: mpd.conf:30: Unknown command: 'set radsrv enable coa disconnect'. Try "help".

Из чего, я так понимаю, что он не понимает, что от него хотят. :)

Пошел на принцип от противного:
1. Сравниваем меню программы:
NAS2:
Код: Выделить всё
[] set ?
Commands available under "set":
 bundle   : Bundle specific stuff    link     : Link specific stuff
 iface    : Interface specific stuff    ipcp     : IPCP specific stuff
 ipv6cp   : IPV6CP specific stuff    ippool   : IP pool specific stuff
 ccp      : CCP specific stuff      mppc     : MPPC specific stuff
 ecp      : ECP specific stuff      eap      : EAP specific stuff 
 auth     : Auth specific stuff     radius   : RADIUS specific stuff
 radsrv  : RADIUS server specific stuff    console  : Console specific stuff
 web      : Web specific stuff      user     : Add console user   
 global   : Global settings         netflow  : NetFlow settings   
 nat      : Nat settings            debug    : Set netgraph debug level
 modem    : Modem specific stuff    ng       : Netgraph specific stuff
 tcp      : TCP specific stuff      udp      : UDP specific stuff 
 pptp     : PPTP specific stuff     l2tp     : L2TP specific stuff
 pppoe    : PPPoE specific stuff   

NAS1:
Код: Выделить всё
[] set ?
Commands available under "set":
 bundle   : Bundle specific stuff    link     : Link specific stuff
 iface    : Interface specific stuff    ipcp     : IPCP specific stuff
 ipv6cp   : IPV6CP specific stuff    ippool   : IP pool specific stuff
 ccp      : CCP specific stuff      mppc     : MPPC specific stuff
 ecp      : ECP specific stuff      eap      : EAP specific stuff 
 auth     : Auth specific stuff     radius   : RADIUS specific stuff
 console  : Console specific stuff    web      : Web specific stuff 
 user     : Add console user        global   : Global settings     
 netflow  : NetFlow settings        nat      : Nat settings       
 debug    : Set netgraph debug level    modem    : Modem specific stuff
 ng       : Netgraph specific stuff    tcp      : TCP specific stuff 
 udp      : UDP specific stuff      pptp     : PPTP specific stuff
 l2tp     : L2TP specific stuff     pppoe    : PPPoE specific stuff


Как видите, у NAS2 несколько кривое меню, которое окривилось записью radsrv : RADIUS server specific stuff, которая, в свою очередь, отсутствует на NAS1.

Пошел на принцип и выполнил хеши tar'ов:
NAS1:
Код: Выделить всё
nas1# md5 -q mpd-5.5.tar.gz
66f53c108c362d5dcc55797a22e013a5


NAS2:
Код: Выделить всё
nas2# md5 -q mpd-5.5.tar.gz
66f53c108c362d5dcc55797a22e013a5

Хеши одинаковые.

Теперь вопрос, что называется "на засыпку":
Если 2 системы сконфигурированы одинаково, а работают по-разному, то куда смотреть?
Заранее благодарю всех.
.ı|ı..ı|ı.
Андрей
местный житель
 
Сообщения: 1028
Зарегистрирован: 14 янв 2009, 13:37
Откуда: Оренбургская область

Re: mpd5 динамическое изменение скорости.

Сообщение lehisnoe » 05 сен 2011, 09:27

Андрей писал(а):куда смотреть?

Будет ли доступен функционал radsrv зависит от определенности константы RAD_COA_REQUEST при сборке mpd5: если она определена, тогда radsrv собирается, иначе его сборка игнорируется.
RAD_COA_REQUEST определяется в /usr/include/radlib.h
No users
No troubles
No money
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
lehisnoe
Site Admin
 
Сообщения: 539
Зарегистрирован: 11 июн 2008, 14:09
Откуда: Moscow

Re: mpd5 динамическое изменение скорости.

Сообщение Андрей » 08 сен 2011, 09:45

lehisnoe писал(а):Будет ли доступен функционал radsrv зависит от определенности константы RAD_COA_REQUEST при сборке mpd5: если она определена, тогда radsrv собирается, иначе его сборка игнорируется.RAD_COA_REQUEST определяется в /usr/include/radlib.h

Решение найдено.
В версиях FreeBSD < 7.3 RAD_COA_REQUEST отсутствует radlib.h.
Остается только обновиться до 7.3 или 7.4 версии.

Остается вопрос, а можно ли подменить этот файл. Зная язык Си, думаю, что нельзя, однако RAD_COA_REQUEST используется как макроопределение, а следовательно нужно знать какие еще грабли можно получить.
По поводу подмены что предложите?
.ı|ı..ı|ı.
Андрей
местный житель
 
Сообщения: 1028
Зарегистрирован: 14 янв 2009, 13:37
Откуда: Оренбургская область

Re: mpd5 динамическое изменение скорости.

Сообщение lehisnoe » 08 сен 2011, 10:03

Андрей писал(а):По поводу подмены что предложите?
Рекомендуем накатиться до 7.3 или выше.
No users
No troubles
No money
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
lehisnoe
Site Admin
 
Сообщения: 539
Зарегистрирован: 11 июн 2008, 14:09
Откуда: Moscow

Re: mpd5 динамическое изменение скорости.

Сообщение Андрей » 08 сен 2011, 10:48

lehisnoe писал(а):Рекомендуем накатиться до 7.3 или выше.

Понял, так и сделаю. Во избежание нестабильной работы и иных непредвиденных ситуаций.
Как выполню - отпишу.
.ı|ı..ı|ı.
Андрей
местный житель
 
Сообщения: 1028
Зарегистрирован: 14 янв 2009, 13:37
Откуда: Оренбургская область


Вернуться в FreeBSD

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17