Назад | Перейти на главную страницу

Время ожидания соединений openswan + xl2tpd истекает через некоторое время

У меня есть сервер Openswan + xl2tpd без NAT (Ubuntu 12.04), к которому я подключаюсь с помощью Windows 8 за NAT. Клиент теряет соединение через некоторое время бездействия (от 30 до 60 минут, но я не рассчитал время).

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

Маршрутизатор NAT, за которым находится клиент, - это Debian Linux, и его Маршрутизатор - это Cisco, который соединяет нас напрямую с центром обработки данных, где находится сервер. Ни одно из других наших подключений, таких как SSH, не отключается из-за бездействия (из-за дешевых маршрутизаторов). Однако я попытался включить поддержку активности в /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.

Версии:

конфиги:

/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

В вашем файле /etc/ppp/options.xl2tpd указано «idle 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, в журнале событий. это В статье описаны некоторые события, она написана для Windows 7, но применима и к Windows 8.
- Маршрутизатор Cisco (если есть к нему доступ) неактивное соединение тайм-аут параметр.