Um host VPN responde em uma interface e recusa-se a enviar as respostas de volta pelo túnel, e a rota padrão parece correta. É aí que a tabela principal deixa de ser a história completa. O Linux pode escolher uma tabela de roteamento por pacote usando regras de política, e a VPN pode ter instalado uma. Leia as regras antes de mexer na rota padrão.

A ordem importa: primeiro as regras, depois a tabela que cada regra seleciona.

Leia as regras em ordem de prioridade

Execute ip rule show e leia de cima para baixo. O número de prioridade controla a ordem de avaliação, e um número menor é verificado antes. A regra padrão em 32766 costuma ser a última que importa. Se a lista for longa, salve-a num arquivo antes de mudar qualquer coisa.

Para cada regra, registre a prioridade, a correspondência (origem, marca, interface ou destino) e a tabela a que ela se refere. Uma regra sem tabela utilizável é um beco sem saída, não uma rota.

Faça o mesmo para IPv6 com ip -6 rule show. Uma política que existe apenas na família IPv4 deixa a outra família na tabela principal.

Leia a tabela que cada regra seleciona

Use ip route show table <name or number> para cada tabela referenciada. Compare as rotas com a interface e o próximo salto que você espera. Uma tabela vazia ou incompleta explica uma falha que a tabela principal não consegue explicar.

A tabela principal ainda pode conter a rota padrão, e isso é normal. Se uma regra enviar seu fluxo primeiro para a tabela 51820, o padrão principal é irrelevante para esse pacote.

Procure o nome da tabela em /etc/iproute2/rt_tables se o número não for familiar. Essa consulta leva um segundo e evita um longo desvio.

Descubra quem instalou a regra

NetworkManager, wg-quick e outros scripts podem instalar regras dinamicamente. Apagar uma em tempo de execução pode ser desfeito na próxima reconexão. Verifique a configuração do gerenciador antes de adicionar uma regra concorrente.

O wg-quick, por exemplo, adiciona uma regra marcada e uma tabela para os endereços permitidos do túnel. É por causa dessa regra que o tráfego para esses endereços contorna o padrão principal. Se você removê-la sem alterar a configuração, o próximo up a restaura.

Preserve a rota externa do endpoint e o acesso de gerenciamento enquanto revisa. Não limpe todas as regras num gateway remoto ativo para simplificar a saída. Uma sessão de gerenciamento que sobrevive à mudança faz parte do teste.

Teste o contexto de origem que importa

Um ip route get genérico responde a uma pergunta diferente do fluxo da aplicação. Acrescente o endereço de origem, e a marca se a VPN usar uma, para ver o caminho que o pacote real percorre. Teste um destino incluído e um excluído com o mesmo contexto de origem. Depois repita para IPv6 se o host roda pilha dupla.

Após uma correção aprovada, execute novamente as mesmas duas consultas e compare. Registre a regra pretendida, a tabela e por quanto tempo a regra sobrevive a um reinício. Esse registro é o que torna o próximo reinício do serviço explicável em vez de misterioso. A página de manual do ip-rule documenta os seletores de correspondência e a sintaxe das tabelas.

Artigos relacionados