Inspecione o roteamento por política do Linux antes de alterar a rota padrão
Uma regra pode enviar um fluxo para outra tabela e tornar o padrão principal irrelevante. Leia prioridade, tabela e proprietário antes de alterar uma rota de VPN no Linux.
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.