O cliente continua a tentar, o registo para antes de o handshake terminar e o servidor não regista absolutamente nada. Esse padrão afasta das credenciais e aponta para o caminho: algo entre as duas pontas recusa transportar o protocolo de que o túnel precisa. Determine onde os pacotes param antes de tocar em qualquer uma das duas configurações, porque um protocolo filtrado e uma palavra-passe errada produzem o mesmo erro amigável na maioria dos clientes. Os testes estão ordenados por custo, o mais barato primeiro.

Prove onde o tráfego para

Capture ao mesmo tempo na interface de saída do cliente e no servidor. Compare o que saiu com o que chegou e anote em que direção aparece a diferença.

Nada no servidor significa que o caminho ou o primeiro NAT descartam o tráfego, enquanto chegadas sem respostas apontam para uma firewall no servidor ou uma rota de retorno que não existe. Um router que termina túneis com frequência raramente guarda um registo útil, por isso a captura passa a ser o registo. Anote a porta de destino e o número de protocolo, porque ambas as falhas parecem iguais numa caixa de diálogo do cliente.

O PPTP morre sem o protocolo 47

O PPTP transporta o controlo por TCP 1723 e os dados dentro de GRE, que é o protocolo IP 47 e não um número de porta. Reencaminhar apenas o 1723 produz o resultado clássico: a ligação autentica-se e depois fica em silêncio, porque não existe qualquer regra para o protocolo que transporta a carga. O cliente não consegue distingui-lo de uma palavra-passe recusada, por isso a captura tem de vir antes das alterações de configuração.

O passthrough corre na direção oposta a um reencaminhamento de entrada, e o firmware usa com frequência suficiente um único rótulo para ambos, o bastante para confundir toda a gente. Num cliente Linux a firewall local pode descartar GRE muito antes de o router estar envolvido, pelo que o protocolo 47 precisa da sua própria regra e o auxiliar conntrack tem de estar carregado. O ufw do Ubuntu guarda essas regras no ficheiro before, porque as regras allow normais não conseguem exprimir um número de protocolo. Depois recarregue a firewall em vez de reiniciar a máquina.

# /etc/ufw/before.rules, inside *filter
-A ufw-before-input -p gre -j ACCEPT
sudo ufw allow 1723/tcp
sudo modprobe nf_conntrack_pptp
sudo conntrack -L | grep gre

L2TP e IPsec atrás de dois NAT

L2TP dentro de IPsec precisa de UDP 500 para a troca de chaves, UDP 4500 quando o NAT é detetado e ESP como protocolo 50. Cada um é filtrado de forma independente, pelo que uma regra que permite um não prova nada sobre os outros dois. Dois routers em série traduzem cada pacote duas vezes e as pontas já não concordam sobre o que foi negociado.

Ponha o modem exterior em bridge, ou desligue o NAT no router interior, para que o endereço público chegue ao dispositivo que termina o túnel. Onde nenhuma das duas for possível, o túnel tem de ser iniciado de dentro do limite do duplo NAT e não terminado aí.

Redes das operadoras e partilha de endereços

Um endereço WAN dentro de 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 ou 100.64.0.0/10 significa que o router não tem endereço público e que nenhum reencaminhamento de entrada da internet o consegue alcançar. O NAT de nível de operadora filtra ainda os protocolos que não espera, e o GRE é uma vítima frequente em ligações móveis. Compare o endereço WAN no próprio router, não o que um site de consulta indica para um cliente atrás dele.

Executar o mesmo router numa linha por cabo separa uma conclusão sobre a operadora de um erro de configuração num único teste. Onde a operadora recusa o protocolo, as opções restantes são outro transporte na 443 ou um túnel iniciado de dentro.

Leia a lista de ouvintes antes de fechar portas

Uma verificação de portas alarmante é muitas vezes apenas o conjunto de funcionalidades que vem ativo. Inventarie os ouvintes, associe cada socket a uma funcionalidade e depois desative a funcionalidade em vez de bloquear a porta, para que as duas vistas não divirjam.

ss -lntup
systemctl list-units --type=service --state=running | grep -i vpn
nc -vz 203.0.113.10 1723
nc -vzu 203.0.113.10 4500

Os valores predefinidos do SoftEther são um bom exemplo: TCP 443, 992 e 5555, com as funcionalidades L2TP/IPsec e túnel DNS a acrescentarem os seus próprios sockets. Desativar essas funcionalidades remove os ouvintes em vez de os esconder, e o teste a partir de um host externo diz se a operadora deixa passar a porta. Um ouvinte que responde localmente pode continuar fechado mais acima, por isso compare o endereço WAN do próprio router com o que um serviço externo reporta.

Artigos relacionados