Por que uma VPN que funciona ainda expira na resposta
Uma requisição que chega a um servidor privado é só metade da troca. A resposta precisa encontrar o cliente do túnel pelo gateway, pela rota ou pela tradução previstos.
A requisição chega, o servidor a registra e o cliente ainda relata um tempo esgotado. Essa combinação significa que a resposta não encontrou o caminho de volta, e é uma das poucas falhas que você pode confirmar pelas duas pontas ao mesmo tempo. Faça as verificações em ordem e pare quando uma delas falhar.
Comece por onde a requisição chegou
Confirme que o pacote chegou ao serviço antes de inspecionar qualquer outra coisa. Um registro no log do servidor, um contador de conexões ou uma captura permitida na ponta remota respondem à mesma pergunta, e a ausência deles devolve você ao túnel em vez de levar adiante até a resposta. Esta é a verificação que separa um problema de encaminhamento de um problema de caminho de volta.
Se a requisição nunca chegou, pare aqui. O túnel, o roteamento para o prefixo privado ou a regra de acesso são o assunto, e o caminho da resposta ainda não é relevante. Anote também o endereço de origem que o servidor viu. É ou o endereço do pool que o cliente recebeu ou um endereço traduzido, e essa diferença determina qual das verificações seguintes se aplica.
A resposta precisa de uma rota até o pool
Um cliente de acesso remoto costuma receber um endereço de um pool, e a rede privada precisa de uma rota de volta até esse pool. Um servidor cuja rota padrão aponta para o próprio gateway entrega o pacote a esse gateway, que não faz ideia de onde fica o pool, e a resposta morre ali. O cliente vê um tempo esgotado porque nada voltou, o que é indistinguível de uma requisição que nunca saiu.
Verifique a rota que o servidor escolhe para o endereço do cliente, não a rota que usa para a própria sub-rede. Essas duas consultas podem dar respostas diferentes, e a segunda é a que importa aqui. A tradução é o desenho alternativo e muda o que o servidor vê. Ela pode simplificar um caminho de volta, e também remove o endereço original do cliente dos logs do servidor, o que afeta qualquer regra ou relatório construído sobre esse campo.
Compare a captura no servidor com a captura no gateway
Compare o que sai do servidor com o que chega ao gateway. Uma captura na interface de saída do servidor e uma captura no gateway do túnel respondem a metades diferentes da pergunta, e a lacuna entre elas localiza a perda.
ip route get 10.90.0.14
tcpdump -ni any host 10.90.0.14 and port 443
ip route show table all | grep 10.90.0.0| Where the reply stops | What it proves |
|---|---|
| Request in the server log, nothing on its outbound capture | The server picked a gateway that cannot reach the pool |
| Reply leaves the server but never shows up at the gateway | Loss on the LAN path, not on the tunnel |
| Reply reaches the gateway but not the client | Return translation or tunnel policy, not the server route |
Uma requisição gerada pelo próprio gateway é um substituto ruim para um teste a partir do cliente, porque se origina de outro endereço e encontra outras regras. Por isso um ping bem-sucedido a partir do gateway e uma requisição malsucedida a partir do cliente podem ser verdadeiros ao mesmo tempo.
Quando há vários roteadores no caminho, verifique cada um que precise de uma rota até o pool. Um desenho site a site costuma exigir que o prefixo remoto seja conhecido em mais de um dispositivo, e o próprio gateway tem de encaminhar entre o túnel e a LAN; as notas de encaminhamento do strongSwan cobrem o lado de sysctl e de firewall disso.
Anote o pool, o prefixo e o responsável
Na nota entram quatro fatos: o pool que o cliente recebeu, o prefixo privado de que precisava, o roteador responsável pela resposta e a regra de tradução se houver. Com eles, uma mudança posterior de gateway é uma comparação e não uma investigação.
Depois teste novamente com um cliente comum e a conta real da aplicação. Ampliar os privilégios da aplicação não conserta o caminho de volta de um pacote, e uma mudança de conta feita durante este diagnóstico vai confundir a próxima comparação. Se o desenho depende de tradução, documente-a onde se leem os logs do servidor. Quem vê um endereço de origem desconhecido numa trilha de auditoria não deveria ter de redescobrir o mapeamento a partir de um chamado.