Openswan L2TP/IPsec VPN para iPhone falha durante a conexão

Openswan L2TP/IPsec VPN para iPhone falha durante a conexão

Passei a manhã tentando configurar uma VPN L2TP/IPsec usando Openswan e xl2tpd em um servidor Debian Squeeze para uso por uma combinação de clientes iOS e Mac. Estou tentando configurá-lo usando chaves pré-compartilhadas para manter as coisas simples.

O iPhone se conecta e começa a criar a VPN, depois trava e falha no meio do processo. Não consigo descobrir o problema depois de mexer em muitos parâmetros e verificar tudo novamente.

Aqui está a última mensagem de log /var/log/auth.logantes de travar:

pluto[30733]: "L2TP-PSK"[5] 166.147.96.226 #5: STATE_QUICK_R2: IPsec SA established tunnel mode {ESP=>0x0659cf9f <0xc3c2f68c xfrm=AES_256-HMAC_SHA1 NATOA=none NATD=166.147.96.226:10682 DPD=enabled}

Então, cerca de 30 segundos depois, o iPhone desiste e isso aparece em auth.log:

pluto[30733]: ERROR: asynchronous network error report on br1 (sport=4500) for message to 166.147.96.226 port 10682, complainant 166.147.96.226: Connection refused [errno 111, origin ICMP type 3 code 3 (not authenticated)]

O que isto significa? O servidor não consegue entrar em contato com o cliente ou o cliente não consegue fazer uma conexão adicional e transmite esse erro pela conexão IPsec que poderia estabelecer?

Infelizmente, estou testando isso com o iPhone na rede celular da AT&T, porque estou dentro da rede Wi-Fi na qual desejo estabelecer a VPN. A AT&T bloqueia o tráfego VPN?

Eu sei que a autenticação IPsec está funcionando porque se eu alterar ou remover a linha de /etc/ipsec.secrets, a conexão falha muito mais rápido e não vejo essas linhas de log.

Acredito que o firewall esteja permitindo as portas UDP 500 e 4500, e o protocolo ESP, porque se eu bloquear, novamente a conexão falha muito mais rápido.

/etc/ipsec.confseção de conexão:

conn L2TP-PSK
    authby=secret
    pfs=no
    rekey=no
    keyingtries=3
    dpddelay=30
    dpdtimeout=120
    dpdaction=clear
    compress=yes
    left=%defaultroute
    leftprotoport=udp/1701
    right=%any
    rightprotoport=udp/0
    auto=add

/etc/ipsec.secrets

VPN-SERVER-PUBLIC-IP %any: PSK "mysecretishere"

/etc/xl2tpd/xl2tpd.conf

[global]                ; Global parameters:
access control = no
rand source = dev

[lns default]             ; Our fallthrough LNS definition
ip range = 192.168.1.120-192.168.1.127
local ip = 192.168.1.119
require chap = yes
refuse pap = no
require authentication = yes
name = LinuxVPNserver
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tp
length bit = yes

/etc/ppp/options.l2tp

ipcp-accept-local
ipcp-accept-remote
ms-dns  192.168.1.1
noccp
auth
crtscts
idle 1800
mtu 1410
mru 1410
nodefaultroute
debug
lock
proxyarp
connect-delay 5000
plugin pppol2tp.so
require-mschap-v2

Responder1

A AT&T parecebloquear pacotes UDP recebidos(não permite que eles atravessem o NAT), então será muito difícil configurar L2TP/IPsec. Acho que você está preso ao PPTP.

Responder2

Este erro é sua pista.

ERROR: asynchronous network error report on br1 (sport=4500) for message to 166.147.96.226 port 10682, complainant 166.147.96.226: Connection refused [errno 111, origin ICMP type 3 code 3 (not authenticated)

Já vi isso antes e sempre é porque o servidor host ou a rede/firewall do cliente remoto está bloqueando os pacotes ipsec. Se for um firewall ou roteador controlado pelo usuário, esta é uma solução simples (habilitar IPSEC), mas se estiver fora de seu controle, você estará sem sorte e precisará usar um protocolo diferente. Há quem diga que mude left=17/%any, mas isso nunca funcionou para mim (em casos raros, talvez o lado do cliente possa ser inteligente e tentar usar uma porta diferente que pode não estar bloqueada).

informação relacionada