Openswan + conexões xl2tpd expiram depois de um tempo

1

Eu tenho um servidor Openswan + xl2tpd não-NATed (Ubuntu 12.04), ao qual me conecto com um Windows 8 atrás do NAT. O cliente perde sua conexão depois de um tempo sem fazer nada (entre 30 e 60 minutos, mas eu não o tempo).

O cliente não habilitou que ele deveria matar conexões inativas. Nem entra no modo de espera. Eu também tentei definir o kill-after-time para 24 horas, mas isso não ajudou.

O roteador NAT atrás do qual o cliente está localizado é o Debian Linux, e o seu roteador é um Cisco que nos conecta diretamente ao data center onde o servidor está. Nenhuma das nossas outras conexões, como o SSH, cai com inatividade (por causa de roteadores baratos). No entanto, tentei ativar as keepalives em /etc/ipsec.conf :

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

mas isso não ajudou.

Como você pode ver na configuração depois, a ação da detecção de peidos mortos é clara. Essa seria uma primeira sugestão para consertar, mas eu preciso de clareza, porque as pessoas estarão se conectando de qualquer lugar, exceto da pia da cozinha. Além disso, como eu disse, na configuração de teste que tenho agora, não consigo ver nenhum dispositivo matando sua conexão. (edit: 'restart' também tem o mesmo efeito)

Estas são de uma vez que aconteceu:

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.

e estes em outro:

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.

Versões:

  • Ubuntu 12.04
  • Openswan: 2.6.37-1
  • xl2tpd: 3.1 + dfsg-1
  • kernel: 3.2.0-49-generic

configs:

/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
    
por Halfgaar 19.07.2013 / 09:58

2 respostas

1

No seu arquivo /etc/ppp/options.xl2tpd você tem 'idle 1800', ou seja, 30 minutos.

Você pode tentar definir esse valor para um número maior ou fazer algo terrível como o seguinte:

while true; do echo "c default" 1>/var/run/xl2tpd/l2tp-control; sleep 1500; done
    
por 14.12.2016 / 23:32
0

O mais provável é que a sua comunicação de rekeing de sessão não seja concluída. Eu começaria olhando para:
regras de firewall ubuntu ( iptables-save )
- tráfego de rede relacionado ao ipsec na máquina 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' )
- eventos relacionados ao ipsec no log de eventos. Este artigo documenta alguns eventos, está escrito para o windows 7, mas aplica-se ao windows 8 também.
- Parâmetros do tempo limite do roteador Cisco (se você tiver acesso a ele).

    
por 30.07.2013 / 16:10