O servidor VPN não está respondendo, não há indicações de tráfego bloqueado

5

Eu tenho uma máquina Mac OS X Server (10.9) executando um servidor VPN L2TP / IPSec. A configuração parece estar bem, e o nome do host do servidor e da VPN é definido como um nome de host DynDNS. O servidor é configurado por trás de um roteador AirPort Extreme com encaminhamento de porta, conectado a um modem / roteador Arris com o roteador desabilitado (em ponte). O servidor está configurado com um IP interno estático e o roteador também tem seu endereço MAC vinculado via DHCP para garantir que o endereço interno seja consistente.

Se eu digitar o endereço IP interno do servidor (10.0.1.x) e tentar conectar-me ao servidor VPN de dentro da rede, tudo funcionará bem. Mas se eu inserir o nome do host externo (o nome do DynDNS) e tentar conectar-se, novamente de dentro da rede, ele não conseguirá se conectar. Da mesma forma, não consegue se conectar quando fora da rede (via LTE, por exemplo).

Outros serviços (SSH, área de trabalho remota, etc.) se conectam bem de dentro e de fora da rede. Apenas VPN é afetada. Posso confirmar que o servidor está acessível a partir do SSH e do Remote Desktop (portas 22/5900).

Confirmei ainda que o roteador está encaminhando as portas 500 (UDP), 1701 (UDP) e 4500 (UDP), além das outras portas usadas pelos outros serviços.

Quando tento conectar, o seguinte aparece no console do cliente:

12/16/13 11:13:33.213 PM configd[28]: SCNC: start, triggered by (15822) com.apple.prefe, type L2TP, status 0, trafficClass 0
12/16/13 11:13:33.229 PM pppd[15967]: publish_entry SCDSet() failed: Success!
12/16/13 11:13:33.230 PM pppd[15967]: publish_entry SCDSet() failed: Success!
12/16/13 11:13:33.230 PM pppd[15967]: pppd 2.4.2 (Apple version 727.1.15) started by user, uid 501
12/16/13 11:13:33.231 PM pppd[15967]: L2TP connecting to server 'x.x.x.x' (x.x.x.x)...
12/16/13 11:13:33.232 PM pppd[15967]: IPSec connection started
12/16/13 11:13:33.244 PM racoon[15968]: accepted connection on vpn control socket.
12/16/13 11:13:33.244 PM racoon[15968]: Connecting.
12/16/13 11:13:33.244 PM racoon[15968]: IPSec Phase 1 started (Initiated by me).
12/16/13 11:13:33.245 PM racoon[15968]: IKE Packet: transmit success. (Initiator, Main-Mode message 1).
12/16/13 11:13:33.245 PM racoon[15968]: >>>>> phase change status = Phase 1 started by us
12/16/13 11:13:33.416 PM racoon[15968]: >>>>> phase change status = Phase 1 started by peer
12/16/13 11:13:33.416 PM racoon[15968]: IKE Packet: receive success. (Initiator, Main-Mode message 2).
12/16/13 11:13:33.420 PM racoon[15968]: IKE Packet: transmit success. (Initiator, Main-Mode message 3).
12/16/13 11:13:33.429 PM racoon[15968]: IKE Packet: receive success. (Initiator, Main-Mode message 4).
12/16/13 11:13:33.447 PM racoon[15968]: IKE Packet: transmit success. (Initiator, Main-Mode message 5).
12/16/13 11:13:36.715 PM racoon[15968]: !!! skipped retransmitting frags: frag_flags 1, r->sendbuf->l 112, max 1280
12/16/13 11:13:36.715 PM racoon[15968]: Received retransmitted packet from x.x.x.x[500].
12/16/13 11:13:36.715 PM racoon[15968]: the packet is retransmitted by x.x.x.x[500].
12/16/13 11:13:36.745 PM racoon[15968]: IKE Packet: transmit success. (Phase 1 Retransmit).
12/16/13 11:13:39.872 PM racoon[15968]: !!! skipped retransmitting frags: frag_flags 1, r->sendbuf->l 112, max 1280
12/16/13 11:13:39.872 PM racoon[15968]: Received retransmitted packet from x.x.x.x[500].
12/16/13 11:13:39.873 PM racoon[15968]: the packet is retransmitted by x.x.x.x[500].
12/16/13 11:13:40.043 PM racoon[15968]: IKE Packet: transmit success. (Phase 1 Retransmit).
12/16/13 11:13:43.170 PM racoon[15968]: !!! skipped retransmitting frags: frag_flags 1, r->sendbuf->l 112, max 1280
12/16/13 11:13:43.170 PM racoon[15968]: Received retransmitted packet from x.x.x.x[500].
12/16/13 11:13:43.170 PM racoon[15968]: the packet is retransmitted by x.x.x.x[500].
12/16/13 11:13:43.335 PM racoon[15968]: IKE Packet: transmit success. (Phase 1 Retransmit).
12/16/13 11:13:55.912 PM racoon[15968]: IKE Packet: transmit success. (Phase 1 Retransmit).
12/16/13 11:13:56.367 PM racoon[15968]: !!! skipped retransmitting frags: frag_flags 1, r->sendbuf->l 112, max 1280
12/16/13 11:13:56.367 PM racoon[15968]: Received retransmitted packet from x.x.x.x[500].
12/16/13 11:13:56.367 PM racoon[15968]: the packet is retransmitted by x.x.x.x[500].
12/16/13 11:14:03.416 PM pppd[15967]: IPSec connection failed
12/16/13 11:14:03.416 PM racoon[15968]: IPSec disconnecting from server x.x.x.x
12/16/13 11:14:03.416 PM racoon[15968]: glob found no matches for path "/var/run/racoon/*.conf"

E isso no console do servidor:

12/16/13 11:13:33.404 PM racoon[216]: IPSec Phase 1 started (Initiated by peer).
12/16/13 11:13:33.404 PM racoon[216]: IKE Packet: receive success. (Responder, Main-Mode message 1).
12/16/13 11:13:33.404 PM racoon[216]: >>>>> phase change status = Phase 1 started by us
12/16/13 11:13:33.404 PM racoon[216]: IKE Packet: transmit success. (Responder, Main-Mode message 2).
12/16/13 11:13:33.541 PM racoon[216]: IKE Packet: receive success. (Responder, Main-Mode message 3).
12/16/13 11:13:33.559 PM racoon[216]: IKE Packet: transmit success. (Responder, Main-Mode message 4).
12/16/13 11:13:33.566 PM racoon[216]: Connecting.
12/16/13 11:13:36.697 PM racoon[216]: IKE Packet: transmit success. (Phase 1 Retransmit).
12/16/13 11:13:36.697 PM racoon[216]: IKE Packet: transmit success. (Phase 1 Retransmit).
12/16/13 11:13:39.989 PM racoon[216]: IKE Packet: transmit success. (Phase 1 Retransmit).
12/16/13 11:13:43.286 PM racoon[216]: IKE Packet: transmit success. (Phase 1 Retransmit).
12/16/13 11:13:56.484 PM racoon[216]: IKE Packet: transmit success. (Phase 1 Retransmit).
12/16/13 11:14:06.392 PM racoon[216]: IKE Packet: transmit success. (Phase 1 Retransmit).
12/16/13 11:14:12.978 PM racoon[216]: IKE Packet: transmit success. (Phase 1 Retransmit).
12/16/13 11:14:32.767 PM racoon[216]: IKE Packet: transmit success. (Phase 1 Retransmit).
12/16/13 11:14:39.390 PM racoon[216]: IKEv1 Phase 1: maximum retransmits. (Phase 1 Maximum Retransmits).
12/16/13 11:14:39.390 PM racoon[216]: Phase 1 negotiation failed due to time up. 45b24df5cc9713e7:9b427f72231ccb59

Uma coisa que noto é que o cliente falhou às 11:14:03 enquanto o servidor continuou retransmitindo os pacotes por mais 30 segundos, até que expirou. O cliente, neste caso, é o Mac OS X, mas os clientes iOS se comportam de maneira semelhante.

Quais são as etapas de solução de problemas que devo procurar aqui?

    
por Justin Mrkva 17.12.2013 / 05:27

1 resposta

3

Ok, acontece que é um "bug" na versão mais recente do Mac OS X Server. Pelo que consegui encontrar, ele IKE daemon racoon não aceitará conexões se a porta de origem não for UDP 4500. A maioria das conexões que passam pelo NAT aleatorizará a porta de origem, o que significa que ela não se conectará. A versão antiga do daemon não tem essa restrição. Conexões de dentro da rede não irão randomizar a porta se estiverem se conectando diretamente ao IP do servidor, mas ligações de loopback e externas aparentemente irão, levando às falhas.

A solução rápida, então, foi substituir o binário racoon por uma versão antiga do OS 10.8 , obviamente fazendo o backup do antigo nomeando-o racoon.old (ou seria racoon.new ser mais correto?: D).

A Apple parece estar ciente do problema e esperamos que ele solucione uma correção; enquanto isso, revertendo os trabalhos binários.

    
por 17.12.2013 / 18:46