Консультация № 170887
29.07.2009, 14:17
0.00 руб.
0 15 1
Здравствуйте,уважаемые эксперты!
Столкнулся со следующей проблемой,стоит FreeBSD6.2 + mpd5.3 в качестве PPPoE сервера,мпд не открывает больше 28 соединений одновременно,при попытке создания 29 и т.д. у виндового абонента выдёт 629 ошибку,а в лог пишет следующее :

Код:
[vlan1521-63] RADIUS: Rec'd RAD_ACCOUNTING_RESPONSE for user 'ta-2646801@vpn'
Jul 29 15:03:29 ns-1 mpd: [B2-5] IPCP: rec'd Configure Request #98 (Req-Sent)
Jul 29 15:03:29 ns-1 mpd: [B2-5] IPADDR 0.0.0.0
Jul 29 15:03:29 ns-1 mpd: [B2-5] NAKing with 10.129.0.1
Jul 29 15:03:29 ns-1 mpd: [B2-5] PRIDNS 0.0.0.0
Jul 29 15:03:29 ns-1 mpd: [B2-5] NAKing with 78.210.192.2
Jul 29 15:03:29 ns-1 mpd: [B2-5] IPCP: SendConfigNak #98
Jul 29 15:03:29 ns-1 mpd: [B2-5] IPADDR 10.129.0.1
Jul 29 15:03:29 ns-1 mpd: [B2-5] PRIDNS 78.210.192.2
Jul 29 15:03:29 ns-1 mpd: [B2-5] IPCP: rec'd Configure Ack #2 (Req-Sent)
Jul 29 15:03:29 ns-1 mpd: [B2-5] IPADDR 78.210.192.21
Jul 29 15:03:29 ns-1 mpd: [B2-5] IPCP: state change Req-Sent --> Ack-Rcvd
Jul 29 15:03:29 ns-1 mpd: [B2-5] IPCP: rec'd Configure Request #99 (Ack-Rcvd)
Jul 29 15:03:29 ns-1 mpd: [B2-5] IPADDR 10.129.0.1
Jul 29 15:03:29 ns-1 mpd: [B2-5] 10.129.0.1 is OK
Jul 29 15:03:29 ns-1 mpd: [B2-5] PRIDNS 78.210.192.2
Jul 29 15:03:29 ns-1 mpd: [B2-5] IPCP: SendConfigAck #99
Jul 29 15:03:29 ns-1 mpd: [B2-5] IPADDR 10.129.0.1
Jul 29 15:03:29 ns-1 mpd: [B2-5] PRIDNS 78.210.192.2
Jul 29 15:03:29 ns-1 mpd: [B2-5] IPCP: state change Ack-Rcvd --> Opened
Jul 29 15:03:29 ns-1 mpd: [B2-5] IPCP: LayerUp
Jul 29 15:03:29 ns-1 mpd: [B2-5] 78.210.192.21 -> 10.129.0.1
Jul 29 15:03:29 ns-1 mpd: [B2-5] IFACE: Adding IPv4 address to ng2 failed: File exists
Jul 29 15:03:29 ns-1 mpd: [B2-5] IFACE: IfaceChangeAddr() error, closing IPCP
Jul 29 15:03:29 ns-1 mpd: [B2-5] IPCP: parameter negotiation failed
Jul 29 15:03:29 ns-1 mpd: [B2-5] IPCP: state change Opened --> Stopping
Jul 29 15:03:29 ns-1 mpd: [B2-5] IPCP: SendTerminateReq #3
Jul 29 15:03:29 ns-1 mpd: [B2-5] IPCP: LayerDown
Jul 29 15:03:29 ns-1 mpd: [B2-5] IFACE: Removing IPv4 address from ng2 failed: Can't assign requested address
Jul 29 15:03:29 ns-1 mpd: [B2-5] IPCP: rec'd Terminate Ack #3 (Stopping)
Jul 29 15:03:29 ns-1 mpd: [B2-5] IPCP: state change Stopping --> Stopped
Jul 29 15:03:29 ns-1 mpd: [B2-5] IPCP: LayerFinish
Jul 29 15:03:29 ns-1 mpd: [B2-5] Bundle: No NCPs left. Closing links...
Jul 29 15:03:29 ns-1 mpd: [B2-5] Bundle: closing link "vlan1521-63"...


В sysctl следующее:
kern.ipc.nmbclusters=16384
kern.ipc.maxsockets=16384
net.graph.maxalloc=2048
kern.maxusers=512
kern.ipc.maxpipekva=32000000
net.graph.maxdgram=128000
net.graph.recvspace=128000

Подскажите пожалуйста, в чём может быть дело ?

Обсуждение

Неизвестный
29.07.2009, 14:37
общий
это ответ
Здравствуйте, Владислав Олегович.

Посмотрите в mpd.conf строчку вида:
set ippool add vpnpool 192.168.0.100 192.168.0.199

Возможно не хватает ip адресов, надо расширить пул.
Неизвестный
29.07.2009, 14:51
общий
Проверял,выделено 200 адресов
Неизвестный
29.07.2009, 15:02
общий
Вы не могли бы показать mpd.conf?
Неизвестный
29.07.2009, 15:44
общий
Вот mpd.conf

Код:
startup:
set user admin admin admin
set user mpdc rob
set user mpd rob
set console self 127.0.0.1 5005
set console open
set web self 0.0.0.0 5006
set web open
set ippool add POOL 7x.2x0.223.1 7x.2x0.223.254
set netflow peer 7x.2x0.192.19 9996
set netflow timeouts 5 5

default:
load PPPOE
load PPTP
load L2TP
load radius

PPTP:
create bundle template PPTP-B
set iface enable proxy-arp
set iface enable tcpmssfix
set ipcp yes vjcomp
set ipcp ranges 7x.2x0.192.21/32 ippool POOL
set ipcp dns 7x.2x0.192.2 7x.2x0.192.3
set iface idle 1800
set iface enable netflow-in
set iface enable netflow-out
set bundle enable compression
set ccp yes mppc
set mppc yes e40
set mppc yes e128
set mppc yes stateless

create link template PPTP-L pptp
set link action bundle PPTP-B
set link disable multilink
set link yes acfcomp protocomp
set link no pap chap
set link enable chap chap-msv2
# load radius
set link keep-alive 10 30
set link mtu 1460
set pptp self 7x.2x0.192.21
set link enable incoming
set pptp disable delayed-ack
set pptp enable always-ack
set link enable incoming


L2TP:
create bundle template B1
set iface enable proxy-arp
set iface enable tcpmssfix
# set iface enable netflow-in
# set iface enable netflow-out
set ipcp yes vjcomp
set iface idle 1800
set iface enable tcpmssfix
set ipcp yes vjcomp
set ipcp ranges 7x.2x0.192.21/32 ippool POOL
set ipcp dns 7x.2x0.192.2
set bundle enable compression
set ccp yes mppc
set mppc yes e40
set mppc yes e128
set mppc yes stateless

create link template L1 l2tp
set link action bundle B1
set link enable multilink
set link yes acfcomp protocomp
set link no pap
set link enable chap chap-msv2
# load radius
set link keep-alive 10 60
set link mtu 1460
set link enable peer-as-calling
set l2tp self 7x.2x0.192.21
set link enable incoming


PPPOE:
create bundle template B2
set iface enable proxy-arp
set iface enable tcpmssfix
set iface enable netflow-in
set iface enable netflow-out
set ipcp yes vjcomp
set ipcp ranges 7x.2x0.192.21/32 ippool POOL
set ipcp dns 7x.2x0.192.2
create link template common pppoe
# set link enable multilink
set link action bundle B2
set link disable chap pap eap
set link enable chap pap
load radius
set pppoe service "*"

# create link template rl0 common
# set link max-children 1000
# set pppoe iface rl0
# set link enable incoming
# set link keep-alive 20 40
# set link mtu 1460

create link template vlan3714 common
set link max-children 1000
set pppoe iface vlan3714
set link enable incoming
set link keep-alive 20 40
set link mtu 1460

create link template vlan4000 common
set link max-children 1000
set pppoe iface vlan4000
set link enable incoming
set link keep-alive 20 40
set link mtu 1460

create link template vlan3720 common
set link max-children 1000
set pppoe iface vlan3720
set link enable incoming
set link keep-alive 20 40
set link mtu 1460

create link template vlan3743 common
set link max-children 1000
set pppoe iface vlan3743
set link enable incoming
set link keep-alive 20 40
set link mtu 1460

#
radius:
set radius server 7x.2x0.192.19 some 1812 1813
# set radius server 7x.2x0.192.2 some 1812 1813
set radius retries 7
set radius timeout 5
set auth max-logins 1
set radius me 7x.2x0.192.2
# set radius me 7x.2x0.192.21
set auth acct-update 900
set auth enable radius-auth
set auth enable radius-acct
set radius enable message-authentic
Неизвестный
29.07.2009, 16:49
общий
а сколько интерфейсов ng создано в ifconfig? Вероятно старые не отваливаются. И еще, после рестарта mpd то же самое происходит? Т.е. именно на 29-м клиенте проблемы?
Неизвестный
29.07.2009, 17:19
общий
Через ifconfig смотрел больше 29-30 ng интерфейсов не поднимается.При разрыве соединения его ng прибивается тоже автоматом.Проблема возникает при создании 27,28,29 когда как вообщем.При перезапуске mpd,первые 27 юзеров которые успели подключиться работают нормально,остальные безуспешно долбаются с 629 ошибкой,до того момента,пока кто нибудь не освободит интерфейс.
давно
Академик
20764
1861
29.07.2009, 17:42
общий
Судя по этому сообщению: Adding IPv4 address to ng2 failed: File exists - неудача у соответствующего системного вызова, то есть проблема где-то на уровне ядра.

Количество подозрительное - вместе с другими интерфейсами их случайно не 32?
Неизвестный
29.07.2009, 18:16
общий
Владислав Олегович:
При авторизации через радиус mpd получает IP интерфейса от радиуса. Может тут заковырка?
И странно еще вот что:
Jul 29 15:03:29 ns-1 mpd: [B2-5] IPCP: LayerUp Jul 29 15:03:29 ns-1 mpd: [B2-5] 78.210.192.21 -> 10.129.0.1

Откуда взялся адрес 10.129.0.1?
И сообщите, какой биллинг используете?
Неизвестный
29.07.2009, 18:26
общий
Владислав Олегович:
И также выложите /etc/rc.conf
Неизвестный
29.07.2009, 19:29
общий
Владислав Олегович:
При авторизации через радиус mpd получает IP интерфейса от радиуса. Может тут заковырка?


Попробуйте без радиуса. С mpd.secret, там и ip можно прописать.

Код:
user1     pass1    78.210.233.1
user2 pass2 78.210.233.2
...
Неизвестный
29.07.2009, 19:47
общий
Владислав Олегович:
Приведен полный конфиг mpd?
Понятно что проблема с назначением ip адреса.
Скиньте конфиг радиуса
Неизвестный
29.07.2009, 20:49
общий
Владислав Олегович:
И покажите один из интерфейсов ng, например ifconfig ng0
Неизвестный
30.07.2009, 13:02
общий
Владислав Олегович:
Насколько мне известно, mpd5.x корректно работает только с FreeBSD 7.x
Попробуйте, либо откатится на mpd4 либо обновится до FreeBSD 7.2 RELEASE
Неизвестный
30.07.2009, 13:22
общий
arriah:
Насколько мне известно, mpd5.x корректно работает только с FreeBSD 7.x

не совсем верное утверждение. mpd 5-ой ветки прекрасно работает с FreeBSD 6x. Единственное - надо будет установить модуль ng_car, но mpd5 при установке запросит это действие. А еще лучше будет пересобрать ядро, включив туда все доступные модули netgraph-a.
Лично у меня на NAS-ах стоит FreeBSD 6.4, пользователям скорость режется через ng_car, mpd получает лимиты через radius-атрибуты, коннектов >400, прокачка > 70MBit/s, никаких косяков не наблюдаю.
В данной ситуации, скорее всего, проблема в связке биллинг->RADIUS->mpd
Неизвестный
30.07.2009, 13:30
общий
Возможно.
Просто недавно сталкивались с подобной проблемой - радиуса не было. FreeBSD 6.3, mpd5.3 - не больше 19 коннектов. Когда 15, когда 17...откатились на mpd4 одновременно получили больше 40 коннектов.
Да и вроде на опеннете писали про мпд5 и 6-ую ветку, что они не стабильно между собой работают.

Так что возможно в данном случае и с радиусом проблема.
Форма ответа