VPN (beeline) и реконнект

Sabayon, Calculate, Funtoo, Exherbo

Модератор: /dev/random

Terkin
Сообщения: 216
ОС: Gentoo

VPN (beeline) и реконнект

Сообщение Terkin »

Всем привет!

Глаз замылился совсем, не пойму, что не так.
Суть такова: впн поднимается нормально, но через какое-то время следует его отвал, и после отвала не хочет переподключаться.

Вот конфиг /etc/conf.d/net:

Код: Выделить всё

GATEWAY="10.193.104.1"
modules="dhclient"

# eth0
config_eth0="192.168.0.3/24"


# eth1
config_eth1="dhcp"
dhclient_eth1="-nw"
dns_servers_eth1="195.14.50.1 195.14.50.21"
dns_search_eth1="beeline.ru"
fallback_eth1="10.161.xx.xx netmask 255.255.248.0"


# ppp0
config_ppp0="ppp"
link_ppp0="pty 'pptp vpn.corbina.net --nolaunchpppd --nobuffer --loglevel 0'"
username_ppp0="XXX"
password_ppp0="XXX"
pppd_ppp0="defaultroute lock noauth refuse-eap refuse-chap refuse-mschap nobsdcomp nopcomp noaccomp nodeflate persist maxfail 0 holdoff 10 lcp-echo-interval 60 lcp-echo-failure 10 password XXX"

postup() {
    if [ "${IFACE}" = "eth1" ]; then
        for vpnaddr in $(host vpn.corbina.net | awk '{ print $NF }'); do route add $vpnaddr gw $GATEWAY dev eth1; done;
        for vpnaddr in $(host tp.corbina.net | awk '{ print $NF }'); do route add $vpnaddr gw $GATEWAY dev eth1; done;
    fi

    if [ "${IFACE}" = "ppp0" ]; then
        VPN=`ifconfig | grep 'P-t-P' | awk '{print $3}' | awk -F: '{print $2}'`
        route del $VPN dev ppp0
        route del default
        route add default dev ppp0
    fi

    return 0
}

postdown() {
    if [ "${IFACE}" = "ppp0" ]; then
        killall xl2tpd pppd
        route add default dev eth1
    fi

    return 0
}

depend_ppp0() {
    need net.eth1
}


Вот лог:

Код: Выделить всё

...
pptp[24014]: anon log[ctrlp_disp:pptp_ctrl.c:929]: Call disconnect notification received (call id 9015)
pptp[24014]: anon log[ctrlp_disp:pptp_ctrl.c:788]: Received Stop Control Connection Request.
pptp[24014]: anon log[ctrlp_rep:pptp_ctrl.c:251]: Sent control packet type is 4 'Stop-Control-Connection-Reply'
pptp[24014]: anon log[callmgr_main:pptp_callmgr.c:258]: Closing connection (shutdown)
pptp[24014]: anon log[ctrlp_rep:pptp_ctrl.c:251]: Sent control packet type is 12 'Call-Clear-Request'
pptp[24014]: anon log[call_callback:pptp_callmgr.c:79]: Closing connection (call state)
pppd[24004]: Modem hangup
pppd[24004]: Connect time 45.1 minutes.
pppd[24004]: Sent 3551285870 bytes, received 101647566 bytes.
pppd[24004]: Connection terminated.
pppd[24004]: Terminating on signal 15
pppd[24004]: Exit.


И все. Хоть и указано persist, но восстанавливать соединение никто не собирается. Или что-то я не понимаю тут.
Спасибо сказали:
Terkin
Сообщения: 216
ОС: Gentoo

Re: VPN (beeline) и реконнект

Сообщение Terkin »

наполовину разрешил проблему.
Если вынести маршрутизацию, относящуюся к ppp0, в скрипты ip-up и ip-down, то pppd начинает нормально реконнектиться в случае обрыва.
Но, оказалось рано радоваться этому. Сессия идеально висит днем в будни, но вечером и в выходные отвалы идут один за одним, иногда доходит до того, что длительность сессии составляет 2 минуты, затем обрыв. Восстановление занимает 5-7 секунд, но прерывания на эти 5-7 секунд выбешивают, особенно если слушать или смотреть какой-либо поток. Решил использовать l2tp. Изменения минимальны:

/etc/conf.d/net

Код: Выделить всё

# eth1
config_eth1="dhcp"
dhclient_eth1="-nw"
dns_servers_eth1="195.14.50.1 195.14.50.21"
dns_search_eth1="beeline.ru"
fallback_eth1="10.161.xx.xx netmask 255.255.248.0"

# ppp0
config_ppp0="ppp"
link_ppp0="/dev/ppp"
username_ppp0="XXX"
password_ppp0="XXX"
pppd_ppp0="defaultroute remotename l2tp name XXX ipparam corbina connect /bin/true nodeflate noauth nobsdcomp nodeflate nopcomp noaccomp persist maxfail 0 user XXX password XXX"


preup() {
        if [ "${IFACE}" = "ppp0" ]; then
                /etc/init.d/xl2tpd start
        fi
return 0
}

predown() {
        if [ "${IFACE}" = "ppp0" ]; then
                XL2TPD_PID=`cat /var/run/xl2tpd.pid`
                PPPD_PID=`ps -ef | awk -v xl2tpd_pid=${XL2TPD_PID} '\$3 == xl2tpd_pid {print \$2}'`
                kill -1 ${PPPD_PID}
                /etc/init.d/xl2tpd stop
                kill -9 ${PPPD_PID}
        fi
return 0
}


postup() {
    if [ "${IFACE}" = "eth1" ]; then
        for vpnaddr in $(host vpn.internet.beeline.ru | awk '{ print $NF }'); do route add $vpnaddr gw $GATEWAY dev eth1; echo "route add $vpnaddr gw $GATEWAY dev eth1";  done;
        for vpnaddr in $(host tp.internet.beeline.ru | awk '{ print $NF }'); do route add $vpnaddr gw $GATEWAY dev eth1; echo "route add $vpnaddr gw $GATEWAY dev eth1";  done;
    fi

    if [ "${IFACE}" = "ppp0" ]; then
        VPN=`ifconfig | grep 'P-t-P' | awk '{print $3}' | awk -F: '{print $2}'`
        route del $VPN dev ppp0
        route del default
        route add default dev ppp0
    fi

    return 0
}

postdown() {
    if [ "${IFACE}" = "ppp0" ]; then
        killall xl2tpd pppd
        route add default dev eth1
    fi
    return 0
}

depend_ppp0() {
    need net.eth1
}


options.l2tp

Код: Выделить всё

name XXX
remotename l2tp
ipparam corbina
connect /bin/true
nodeflate
nobsdcomp
nopcomp
noaccomp
persist
maxfail 0
defaultroute
mru 1460
mtu 1460
noauth
user XXX
password XXX


xl2tpd.conf

Код: Выделить всё

[global]
access control = yes

[lac corbina]
lns = vpn.internet.beeline.ru
redial = yes
redial timeout = 3
require chap = yes
require pap = no
refuse chap = no
refuse pap = yes
require authentication = no
name = XXX
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tp
autodial = yes


Рестартовал интерфейс, инет поднялся, вроде бы все ок... Но опять наполовину разрешенная проблема. Инет перестал рваться каждые 2-5 минут, но в логе стали появляться в огромном количестве следующие вещи:

Код: Выделить всё

...
xl2tpd[32339]: write_packet: Resource temporarily unavailable(11)
xl2tpd[32339]: write_packet: Resource temporarily unavailable(11)
...


и

Код: Выделить всё

...
xl2tpd[32339]: udp_xmit failed with err=-1:Resource temporarily unavailable
xl2tpd[32339]: udp_xmit failed with err=-1:Resource temporarily unavailable
xl2tpd[32339]: udp_xmit failed with err=-1:Resource temporarily unavailable
...


При этом замер скорости на спидтесте показал, что скорость даунлоада на l2tp упала в 2 раза по сравнению с pptp, аплоад остался примерно равен.

Использую baselayout2, х86_64.
pppd и xl2tpd собраны со следующими флагами:

Код: Выделить всё

CFLAGS="-march=core2 -O2 -pipe -msse4.1 --param l2-cache-size=6144"
CXXFLAGS="-march=core2 -O2 -pipe  -msse4.1 --param l2-cache-size=6144"


ЧЯДНТ?
Спасибо сказали: