LINUX.ORG.RU
ФорумAdmin

косяк xl2tp или карточки?

 ,


0

1

Всем доброго времени суток!

Собственно говоря, проблема появилась уже давненько, но руки дошли только сейчас.

Примерно раз в неделю падает сеть (подключен к Билайну), при этом ifconfig говорит, что ничего не упало. Но исходящий трафик в моей наколенной мерялке зашкаливает за 16MBps (при том, что физически не получится больше 12-ти). Это если без нагрузки. При большом TX может упасть почти сразу, хотя сейчас, как на зло, уже 3 часа пашет. Но сейчас и TX < 3MBps.

Вот пара кусков из выводов tcpdump'a после падения:

tcpdump -i ppp0 -n -v -p

02:18:48.244381 IP (tos 0x0, ttl 64, id 58737, offset 0, flags [DF], proto UDP (17), length 210)
    M.N.P.Q.1701 > 85.21.0.163.1701:  l2tp:[](62247/27146) {IP (tos 0x0, ttl 64, id 58631, offset 0, flags [DF], proto UDP (17), length 172)
    M.N.P.Q.1701 > 85.21.0.163.1701:  l2tp:[](62247/27146) {IP (tos 0x0, ttl 64, id 58524, offset 0, flags [DF], proto UDP (17), length 134)
    M.N.P.Q.1701 > 85.21.0.163.1701:  l2tp:[](62247/27146) {IP (tos 0x0, ttl 64, id 58414, offset 0, flags [DF], proto UDP (17), length 96)
    M.N.P.Q.1701 > 85.21.0.163.1701:  l2tp:[](62247/27146) {IP (tos 0x0, ttl 64, id 58304, offset 1432, flags [none], proto UDP (17), length 58)
    M.N.P.Q > 85.21.0.163: udp}}}}

tcpdump -i eth0 -n -v -p

03:12:21.193435 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.A.1.41 tell 10.A.0.150, length 46
03:12:21.304985 IP (tos 0x0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 28)
    10.A.6.21 > 224.0.0.1: igmp query v2
03:12:24.558368 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.A.0.10 tell 10.A.0.1, length 46
03:12:27.583964 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.A.0.30 tell 10.A.0.1, length 46
03:12:28.558336 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.A.0.10 tell 10.A.0.1, length 46
03:12:32.558310 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.A.0.10 tell 10.A.0.1, length 46
03:12:36.559072 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.A.0.10 tell 10.A.0.1, length 46
03:12:39.361413 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.A.0.10 tell 10.A.0.1, length 46
03:12:40.558242 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.A.0.10 tell 10.A.0.1, length 46
03:12:44.558241 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.A.0.10 tell 10.A.0.1, length 46
03:12:47.685876 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.A.2.58 tell 10.A.0.1, length 46
03:12:48.558212 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.A.0.10 tell 10.A.0.1, length 46
03:12:52.558325 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.A.0.10 tell 10.A.0.1, length 46
03:12:52.799477 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.A.0.1 (ff:ff:ff:ff:ff:ff) tell 10.A.0.36, length 46
03:12:56.558300 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.A.0.10 tell 10.A.0.1, length 46
03:12:57.571473 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.A.B.C7 tell 10.A.0.1, length 46

единственное, что ifconfig был снят не после падения, а до

eth0      Link encap:Ethernet  HWaddr 00:50:04:55:0e:f5  
          inet addr:10.A.B.C8  Bcast:255.255.255.255  Mask:255.255.248.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:66788 errors:0 dropped:0 overruns:0 frame:0
          TX packets:29765 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:48982810 (46.7 MiB)  TX bytes:4435237 (4.2 MiB)

eth1      Link encap:Ethernet  HWaddr 00:0e:a6:3d:75:96  
          inet addr:192.168.2.6  Bcast:192.168.2.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:17640 errors:0 dropped:0 overruns:0 frame:0
          TX packets:42042 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2730046 (2.6 MiB)  TX bytes:44887713 (42.8 MiB)
          Interrupt:22 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:2955 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2955 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:315881 (308.4 KiB)  TX bytes:315881 (308.4 KiB)

ppp0      Link encap:Point-to-Point Protocol  
          inet addr:M.N.P.Q  P-t-P:85.21.0.163  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1456  Metric:1
          RX packets:66181 errors:0 dropped:0 overruns:0 frame:0
          TX packets:29392 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3 
          RX bytes:45503647 (43.3 MiB)  TX bytes:2874130 (2.7 MiB)

lspci:

...
02:05.0 Ethernet controller: 3Com Corporation 3c940 10/100/1000Base-T [Marvell] (rev 12)
...
02:0a.0 Ethernet controller: 3Com Corporation 3c905B 100BaseTX [Cyclone] (rev 24)
02:0c.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
eth0 - на карточке от Realtek

Вот и все входные данные... Никто с таким мракобесием не сталкивался?

★★★★★

Последнее исправление: metawishmaster (всего исправлений: 3)

Примерно раз в неделю падает сеть

Куда падает? С большой ли высоты?

А если кроме шуток, то объясни толком что происходит - PPP сессия рвётся? Если нет, то сеть «не падает». Если да, то смотрим дальше - шлюз дефолтный в физ.интерфейсе пингуется?

blind_oracle ★★★★★
()

Почему ″ifconfig″, а не ″ip -s link″? Там же флагов побольше.

Если в pppd включено ″lcp-echo-failure″ и другие echo-настройки, то если он не обрывается при подобных проблемах, значит связь полностью не обрывалась, значит дело не в карточке.

mky ★★★★★
()
Ответ на: комментарий от blind_oracle

Куда падает? С большой ли высоты?

Вы напомнили мне Morant'a из легендарного http://www.netlore.ru/Gift_Chat :))

PPP сессия рвётся? Если нет, то сеть «не падает». Если да, то смотрим дальше - шлюз дефолтный в физ.интерфейсе пингуется?

в итоге ppp0 был в выводе ifconfig'a, значит не похоже, чтоб сеть рвалась окончательно
а вот про пинг дефолтного шлюза - спасибо за идею, я совсем про это забыл... но пока он почти сутки работает на удивление нормально, проверить не могу, но буду ждать :-\

metawishmaster ★★★★★
() автор топика
Ответ на: комментарий от mky

Почему ″ifconfig″, а не ″ip -s link″? Там же флагов побольше.

да мне пока хватает ifconfig'a - с сетью у меня отношения очень прохладные %)

lcp-echo-failure есть... вот мои конфиги:

cat /etc/ppp/peers/corbina

pty "xl2tpd tp.internet.beeline.ru --nolaunchpppd --nobuffer --loglevel 9"
connect /bin/true
name netawishamster
remotename L2TP
file /etc/ppp/options.corbina
ipparam corbina
persist
maxfail 0
lcp-echo-interval 30
lcp-echo-failure 4
mtu 1460

и

cat /etc/ppp/options.corbina

maxfail 0
persist
holdoff 5

asyncmap 0000

noproxyarp
noauth
unit 0
name netawishmaster
remotename L2TP
ipparam corbina
connect /bin/true
mru 1460
mtu 1460
nodeflate
nobsdcomp
nopcomp
noaccomp
nodefaultroute
refuse-pap
novj
kdebug 1
metawishmaster ★★★★★
() автор топика
Ответ на: комментарий от metawishmaster

pty «xl2tpd tp.internet.beeline.ru --nolaunchpppd --nobuffer --loglevel 9»

Зачем так сложно? У меня тот же еблайн:

# cat /etc/xl2tpd/xl2tpd.conf
[global]

[lac beeline]
tx bps = 100000000
lns = tp.internet.beeline.ru
redial = yes
redial timeout = 60
max redials = 2147483647
require chap = yes
require authentication = no
ppp debug = no
pppoptfile = /etc/ppp/options.l2tp.client
autodial = yes

# cat /etc/ppp/options.l2tp.client
defaultroute
replacedefaultroute
name xxx
noauth
noaccomp
nopersist
maxfail 0
mtu 1400

# cat /etc/ppp/ip-up
#!/bin/sh

ip route del $5 dev $1
ip route add default dev $1

Всё. Работает как часы.

blind_oracle ★★★★★
()
Ответ на: комментарий от blind_oracle

а у меня xl2tpd.conf такой:
[code]
[global]
access control = yes


[lac corbina]
lns = l2tp.corbina.net
redial = yes
redial timeout = 3
require chap = yes
refuse pap = no
require authentication = no
name = netawishmaster
ppp debug = yes
pppoptfile = /etc/ppp/options.corbina
autodial = yes
[/code]

сейчас воспользуюсь Вашими подсказками, спасибо :)

metawishmaster ★★★★★
() автор топика
Ответ на: комментарий от blind_oracle

у меня вообще так и тоже работает

/etc/xl2tpd/xl2tpd.conf
[global]
access control =yes
force userspace=no

[lac beeline]
autodial       =yes
lns            =tp.internet.beeline.ru
pppoptfile     =/etc/ppp/options_beeline
tx bps         =100000000

/etc/ppp/options_beeline
debug

кстати, локальные маршруты у меня не добавляются(только до vpn). думаю это разгружает от локального трафика

anonymous
()
Ответ на: комментарий от metawishmaster

″ifconfig″ не показывает флаг ″LOWER_UP″, он его не знает, потому что старый. ″ip″ этот флаг показывает и на нормальных сетёвках отстуствие этого флага означает отсутствие линка и можно не гадать.

В pppd у вас указана проверка наличия связи (lcp-echo-interval), но так как стоят опции ″persist″ и ″maxfail 0″ вобще не понятно, что на самом деле происходит с линком/коннектом, так как при обрыве pppd пытается преустановить соединение. И когда то давно у pppd был глюк с этими опциями, что он после нескольких успешных реконнектов переставал устанавливать соединение и жрал процессор. Это было очень давно, в другой версии pppd, но кто знает. Посмотрите логи в /var/log/ на предмет того, что там происходит с pppd, ЕМНИП, он пишет про отключения/подключения.

mky ★★★★★
()
Ответ на: комментарий от mky

ага, спасибо, я убрал persist :)

хотя странно

maxfail n
Terminate after n consecutive failed connection attempts. A value of 0 means no limit. The default value is 10.
persist
Do not exit after a connection is terminated; instead try to reopen the connection. The maxfail option still has an effect on persistent connections.

вроде бы они взаимо заменяемы... и pppd должен устанавливать соединение при обрыве. Но по-факту persist мешался :-\

и в логе все отлично :)

metawishmaster ★★★★★
() автор топика
Ответ на: комментарий от blind_oracle

а у меня tp.internet.beeline.ru не ресолвится даже в поднятым инетом %) только что чуток поменял xl2tpd.conf - добавил туда

lns = l2tp.corbina.net
tx bps = 100000000
в /etc/ppp/options.corbina добавил nopersist, и из /etc/ppp/peers/corbina persist убрал сижу жду очередного падения %)

НО! с прежними настройками xl2tpd не восстанавливался ни автоматиччески, ни вручную - только ребутом. А сейчас восстанавливается как миленький - похоже nopersist спас :)

спасибо :)

metawishmaster ★★★★★
() автор топика
Ответ на: комментарий от anonymous

у меня локальная маршрутизация настроена... но это чтоб был доступ ко мне из другой подсети билайна. Осталось только спросить у гугла как из локалки достучаться до lk.beeline.ru %)

metawishmaster ★★★★★
() автор топика
Ответ на: комментарий от metawishmaster

Осталось только спросить у гугла как из локалки достучаться до lk.beeline.ru %)

Не знаю, как у других, а у меня lk.beeline.ru резолвится билайновскими dns'ами в 10.255.64.4. Соответственно, если локальная маршрутизация настроена, то в чем проблема?

dexpl ★★★★★
()
Ответ на: комментарий от dexpl

а какой у Вас маршрут до 10.255.64.4? у меня ip route list:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.83.0.1       0.0.0.0         UG    0      0        0 eth0
10.0.0.0        10.83.0.1       255.0.0.0       UG    0      0        0 eth0
10.83.0.0       0.0.0.0         255.255.248.0   U     0      0        0 eth0
78.107.23.0     10.83.0.1       255.255.255.0   UG    0      0        0 eth0
85.21.0.163     10.83.0.1       255.255.255.255 UGH   0      0        0 eth0
85.21.52.254    10.83.0.1       255.255.255.255 UGH   0      0        0 eth0
85.21.72.83     10.83.0.1       255.255.255.255 UGH   0      0        0 eth0
85.21.79.0      10.83.0.1       255.255.255.0   UG    0      0        0 eth0
85.21.88.130    10.83.0.1       255.255.255.255 UGH   0      0        0 eth0
85.21.90.0      10.83.0.1       255.255.255.0   UG    0      0        0 eth0
89.179.135.67   10.83.0.1       255.255.255.255 UGH   0      0        0 eth0
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.168.2.101   192.168.2.2     255.255.255.255 UGH   0      0        0 eth1
192.168.7.0     192.168.2.14    255.255.255.0   UG    0      0        0 eth1
195.14.40.141   10.83.0.1       255.255.255.255 UGH   0      0        0 eth0
195.14.50.16    10.83.0.1       255.255.255.255 UGH   0      0        0 eth0
195.14.50.21    10.83.0.1       255.255.255.255 UGH   0      0        0 eth0
195.14.50.26    10.83.0.1       255.255.255.255 UGH   0      0        0 eth0
195.14.50.93    10.83.0.1       255.255.255.255 UGH   0      0        0 eth0
это до поднятия инета...

metawishmaster ★★★★★
() автор топика
Ответ на: комментарий от metawishmaster
└►  ip route list
default via 10.82.40.1 dev eth0 
10.0.0.0/8 via 10.82.40.1 dev eth0  proto static 
10.82.40.0/21 dev eth0  proto kernel  scope link  src 10.82.41.2 
78.107.196.0/22 via 10.82.40.1 dev eth0  proto static 
79.104.14.246 via 10.82.40.1 dev eth0  src 10.82.41.2 
79.104.14.247 via 10.82.40.1 dev eth0  src 10.82.41.2 
192.168.1.0/27 dev br0  proto kernel  scope link  src 192.168.1.2 
192.168.88.0/30 dev eth1  proto kernel  scope link  src 192.168.88.2 

При поднятом интернете все то же самое кроме того, что дефолтный маршрут идет через ppp0. Здесь 10.82.40.1 — билайновский шлюз, 79.104.14.246 и 79.104.14.247 — билайновские dns'ы, а 192.168.1.0/27 и 192.168.88.0/30 — сугубо внутренние сетки для моих трех с половиной виртуалок. Кто такая 78.107.196.0/22 — не помню.

dexpl ★★★★★
()
Последнее исправление: dexpl (всего исправлений: 2)

в общем, баг топика остался и было принято решение обойтись небольшим костылем :)

#!/bin/bash

N=0;
echo "restore-xl2tpd.sh started"
logger -p local0.info -t restore-xl2tpd "started"
while [ /bin/true ]; do
    while [ /bin/true ]; do
        ping -c 1 -W 5 www.google.com
        if [ "$?" != "0" ]; then
            break;
        else
            N=0;
        fi; 
        sleep 1
    done;
    N=$((N+1));
    logger -p local3.info -t restore-xl2tpd "ping N$N failed..."
    if [ "$N" = "5" ]; then
        /etc/init.d/xl2tpd stop > /dev/null 2>&1
        killall xl2tpd > /dev/null 2>&1
        killall pppd > /dev/null 2>&1
        echo "restarting xl2tpd..."
        logger -p local3.info -t restore-xl2tpd "restarting xl2tpd..."
        /etc/init.d/xl2tpd start > /dev/null 2>&1
        N=0;
        sleep 10
    fi  
done

metawishmaster ★★★★★
() автор топика
Ответ на: комментарий от metawishmaster

и все-таки после зашкаливания скорости xl2tpd не мог номально стартануть пока я не добавил

ifdown eth0 > /dev/null 2>&1
sleep 1
ifup eth0 > /dev/null 2>&1
после
logger -p local3.info -t restore-xl2tpd "restarting xl2tpd..."

metawishmaster ★★★★★
() автор топика
Ответ на: комментарий от metawishmaster

Странно, у меня запускается норм. Я айпишник получаю на ethX под DHCP (раньше долгое время была статика, но появились какие-то конфликты с другими хостами), маршруты тоже лезут оттуда.

С днс поступил просто - в бинд добавил форвард на билайновские днс всего *.beeline.ru и *.local

zone "beeline.ru" {
    type forward;

    forwarders {
        213.234.192.8;
        85.21.192.3;
    };

    forward only;
};

zone "local" {
    type forward;

    forwarders {
        213.234.192.8;
        85.21.192.3;
    };

    forward only;
};

blind_oracle ★★★★★
()
Ответ на: комментарий от blind_oracle

Я айпишник получаю на ethX под DHCP (раньше долгое время была статика, но появились какие-то конфликты с другими хостами), маршруты тоже лезут оттуда.

Кстати, раз уж речь зашла — мне одному билайновский DHCP не отдает маршруты до серверов DNS, из-за чего приходится добавлять их скриптом в /etc/dhcp/dhclient-eth0-up-hooks?

dexpl ★★★★★
()
Ответ на: комментарий от blind_oracle

ая-яй, вот я протупил - у меня в named.conf.local до сих пор было

zone «corbina.net» {
еще раз спасибо :)

2 dexpl: такой прикол у них еще со времен корбины

metawishmaster ★★★★★
() автор топика
Последнее исправление: metawishmaster (всего исправлений: 1)
Ответ на: комментарий от metawishmaster

Да, давние времена))

У меня lk.beeline.ru резолвится в белый айпишник:

# host lk.beeline.ru localhost
Using domain server:
Name: localhost
Address: 127.0.0.1#53
Aliases:

lk.beeline.ru has address 85.21.78.93

blind_oracle ★★★★★
()
Ответ на: комментарий от blind_oracle

ага, у меня так же :) даже без инета, но для етого dns-сервера нужны... поэтому мой итоговый костыль выглядит так:

#!/bin/bash

N=0;
echo "restore-xl2tpd.sh started"
logger -p local0.info -t restore-xl2tpd "started"
while [ /bin/true ]; do
        while [ /bin/true ]; do
                ping -c 1 -W 5 www.google.com
                if [ "$?" != "0" ]; then
                        break;
                else
                        N=0;
                fi;
                sleep 1
        done;
        N=$((N+1));
        logger -p local3.info -t restore-xl2tpd "ping N$N failed..."
        if [ "$N" = "5" ]; then
                /etc/init.d/xl2tpd stop > /dev/null 2>&1
                killall -9 xl2tpd > /dev/null 2>&1
                killall -9 pppd > /dev/null 2>&1
                logger -p local3.info -t restore-xl2tpd "ifdown eth0..."
                ifdown eth0 > /dev/null 2>&1
                sleep 1
                logger -p local3.info -t restore-xl2tpd "ifup eth0..."
                ifup eth0 > /dev/null 2>&1
                echo "restarting xl2tpd..."
                logger -p local3.info -t restore-xl2tpd "starting xl2tpd..."
                mv /etc/resolv.conf /etc/resolv.conf.tmp
                cp /etc/resolvconf/resolv.conf.d/original /etc/resolv.conf
                /usr/sbin/xl2tpd -D
                mv /etc/resolv.conf.tmp /etc/resolv.conf
                N=0;
                sleep 1
        fi
done
я тут еще даю xl2tpd, при коннекте, посмотреть на неймсерверы из /etc/resolvconf/resolv.conf.d/original

metawishmaster ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.