Через некоторое время соединения Openswan + xl2tpd истекают

У меня есть не-NATed сервер Openswan+xl2tpd (Ubuntu 12.04), к которому я подключаюсь с Windows 8 за NAT. Через некоторое время клиент теряет связь, ничего не делая (от 30 до 60 минут, но я не успел это сделать).

У клиента не было разрешено прерывать неактивные соединения. И при этом это никогда не входит в режим сна. Я также пытался установить время убийства на 24 часа, но это не помогло.

Маршрутизатор NAT, за которым находится клиент, - это Debian Linux, а его маршрутизатор - Cisco, который напрямую связывает нас с центром обработки данных, где находится сервер. Ни одно из наших других соединений, таких как SSH, не прерывается из-за неактивности (из-за дешевых маршрутизаторов). Однако я попытался включить keepalive в /etc/ipsec.conf:

config setup
    (...snip...)
    nat_traversal=yes
    force_keepalive=yes
    keep_alive=10

но это не помогло

Как вы увидите в конфигурации позже, действие обнаружения мертвых пиров очевидно. Это было бы первым предложением, чтобы исправить, но мне нужно ясно, потому что люди будут подключаться откуда угодно, кроме кухонной раковины. Кроме того, как я уже сказал, в тестовой настройке, которую я имею сейчас, я не вижу ни одного устройства, разрушающего его соединение. (редактировать: "перезагрузка" также имеет тот же эффект)

Это один раз, когда это произошло:

Jul 18 16:18:06 host xl2tpd[1918]: Maximum retries exceeded for tunnel 49070.  Closing.
Jul 18 16:18:06 host xl2tpd[1918]: Terminating pppd: sending TERM signal to pid 18359
Jul 18 16:18:06 host xl2tpd[1918]: Connection 4 closed to 89.188.x.y, port 1701 (Timeout)
Jul 18 16:18:11 host xl2tpd[1918]: Unable to deliver closing message for tunnel 49070. Destroying anyway.

а эти по другому:

Jul 18 17:44:39 host xl2tpd[1918]: udp_xmit failed to 89.188.x.y:1701 with err=-1:Operation not permitted
Jul 18 17:44:43  xl2tpd[1918]: last message repeated 4 times
Jul 18 17:44:43 host xl2tpd[1918]: Maximum retries exceeded for tunnel 10918.  Closing. 
Jul 18 17:44:43 host xl2tpd[1918]: udp_xmit failed to 89.188.x.y:1701 with err=-1:Operation not permitted
Jul 18 17:44:43 host xl2tpd[1918]: Terminating pppd: sending TERM signal to pid 26338
Jul 18 17:44:43 host xl2tpd[1918]: Connection 6 closed to 89.188.x.y, port 1701 (Timeout)
Jul 18 17:44:44 host xl2tpd[1918]: udp_xmit failed to 89.188.x.y:1701 with err=-1:Operation not permitted
Jul 18 17:44:48  xl2tpd[1918]: last message repeated 3 times
Jul 18 17:44:48 host xl2tpd[1918]: Unable to deliver closing message for tunnel 10918. Destroying anyway.
Jul 18 17:44:59 host xl2tpd[1918]: Can not find tunnel 10918 (refhim=0)
Jul 18 17:44:59 host xl2tpd[1918]: network_thread: unable to find call or tunnel to handle packet.  call = 0, tunnel = 10918 Dumping. 
Jul 18 17:45:09 host xl2tpd[1918]: Can not find tunnel 10918 (refhim=0)
Jul 18 17:45:09 host xl2tpd[1918]: network_thread: unable to find call or tunnel to handle packet.  call = 0, tunnel = 10918 Dumping. 
Jul 18 17:45:19 host xl2tpd[1918]: Can not find tunnel 10918 (refhim=0)
Jul 18 17:45:19 host xl2tpd[1918]: network_thread: unable to find call or tunnel to handle packet.  call = 0, tunnel = 10918 Dumping. 
Jul 18 17:45:29 host xl2tpd[1918]: Can not find tunnel 10918 (refhim=0)
Jul 18 17:45:29 host xl2tpd[1918]: network_thread: unable to find call or tunnel to handle packet.  call = 0, tunnel = 10918 Dumping. 
Jul 18 17:45:39 host xl2tpd[1918]: Can not find tunnel 10918 (refhim=0)
Jul 18 17:45:39 host xl2tpd[1918]: network_thread: unable to find call or tunnel to handle packet.  call = 0, tunnel = 10918 Dumping. 
Jul 18 17:45:49 host xl2tpd[1918]: Can not find tunnel 10918 (refhim=0)
Jul 18 17:45:49 host xl2tpd[1918]: network_thread: unable to find call or tunnel to handle packet.  call = 0, tunnel = 10918 Dumping.

Версии:

  • Ubuntu 12.04
  • Openswan: 2.6.37-1
  • xl2tpd: 3.1 + dfsg-1
  • ядро: 3.2.0-49-generic

конфиги:

/etc/ipsec.conf:

version    2.0    # conforms to second version of ipsec.conf specification

config setup
    nat_traversal=yes
    virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:!10.152.2.0/24
    oe=off
    protostack=netkey
    force_keepalive=yes
    keep_alive=10

conn L2TP-PSK-NAT
    rightsubnet=vhost:%priv
    also=L2TP-PSK-noNAT

conn L2TP-PSK-noNAT
    authby=secret
    pfs=no
    auto=add
    keyingtries=2
    rekey=no
    dpddelay=30
    dpdtimeout=120
    dpdaction=clear
    ikelifetime=8h
    keylife=1h
    type=transport
    left=%defaultroute
    leftprotoport=17/1701
    right=%any
    rightprotoport=17/%any

/etc/xl2tpd/xl2tpd.conf

[global]
ipsec saref = no

[lns default]
ip range = 10.152.2.2-10.152.2.254
local ip = 10.152.2.1
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = no
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes

/etc/ppp/options.xl2tpd:

require-mschap-v2
refuse-mschap
ms-dns 10.152.2.1
asyncmap 0
auth
crtscts
idle 1800
mtu 1200
mru 1200
lock
hide-password
local
#debug
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4

2 ответа

В вашем файле /etc/ppp/options.xl2tpd указано "бездействие 1800", то есть 30 минут.

Вы можете попробовать установить это значение на большее число или сделать что-то ужасное, как показано ниже:

while true; do echo "c default" 1>/var/run/xl2tpd/l2tp-control; sleep 1500; done

Скорее всего, ваш сеанс повторной связи не завершен. Я бы начал с рассмотрения:
- правила брандмауэра Ubuntu (iptables-save)
- связанный с ipsec сетевой трафик на машине с Ubuntu (tcpdump -s 0 -w capturefile.pcap -n -i $vpn_external_interface '$remote_client_ip or icmp or ip proto 50 or udp port 500')
- связанные с ipsec события в eventlog. Эта статья описывает некоторые события, она написана для Windows 7, но относится и к Windows 8.
- Параметр времени ожидания простоя подключения маршрутизатора Cisco (если у вас есть к нему доступ).

Другие вопросы по тегам