As respostas da VPN no Linux desaparecem? Verifique o rp_filter e a rota
A validação de origem IPv4 pode rejeitar um pacote cuja rota inversa não se encaixa no modo. Examine o encaminhamento e a configuração efetiva antes de desativá-la.
As requisições saem da máquina, o par da VPN responde e a resposta nunca chega ao socket. O túnel está ativo, os registros do par mostram que o pacote é enviado, e nada na aplicação explica o silêncio. No Linux um dos suspeitos habituais é a filtragem de caminho inverso: um pacote IPv4 de entrada pode ser rejeitado quando a validação de origem não concorda com a rota que o kernel espera para aquela origem. Percorrer isso em ordem diz se é a causa ou uma coincidência. Também evita que você desative um controle de segurança para consertar uma rota ausente.
O que a validação de origem decide
O kernel verifica se o endereço de origem de um pacote é plausível para a interface por onde ele chegou, consultando a tabela de encaminhamento por uma rota de volta para essa origem. Se a rota inversa aponta para outro lugar, o pacote pode ser descartado antes que qualquer regra de firewall ou socket da aplicação o veja. Essa verificação existe para dificultar certos padrões de falsificação, e é também por isso que projetos assimétricos e encaminhados por política esbarram nela enquanto qualquer cliente comum na mesma rede funciona bem. Clientes comuns têm encaminhamento simétrico, que é exatamente o que a verificação pressupõe.
A palavra importante é plausível. O pacote pode ser perfeitamente legítimo e ainda assim falhar na verificação, porque não é a legitimidade que está sendo testada.
Leia o modo efetivo, não um único campo
Existem três modos: desativado, estrito e frouxo. O estrito impõe uma expectativa de rota diferente da do frouxo, e a configuração global interage com as de cada interface, então ler um único arquivo pode descrever errado o que está realmente em vigor. Leia ambos, e leia-os na interface que recebe a resposta, não na interface da rota padrão.
sysctl net.ipv4.conf.all.rp_filter
sysctl net.ipv4.conf.<iface>.rp_filter
ip route get <source-of-the-reply>A consulta de rota naquela terceira linha é a parte que as pessoas pulam. Ela informa o que o kernel acredita sobre a origem, e é exatamente a entrada da verificação.
Encontre a divergência antes de mudar a verificação
Descubra por que a resposta chega nessa interface e se a rota inversa dela deveria ser diferente. Uma regra de política que envia requisições por um caminho enquanto as respostas voltam por outro é um projeto legítimo, e é também o projeto que a validação estrita rejeita. As marcas usadas no encaminhamento por política também podem importar aqui, porque mudam o que a consulta inversa retorna.
Se a rota inversa simplesmente falta, adicioná-la corrige a causa em vez de desativar uma verificação. Uma rota ausente, uma rejeição do firewall e um seletor de tráfego errado produzem o mesmo sintoma visível, e só um deles é sobre validação de origem.
Não desative as verificações de origem globalmente como primeira reação. Isso troca um diagnóstico específico por uma mudança ampla de comportamento que você terá de lembrar depois.
Um ajuste seletivo que você pode defender
Se um ajuste estreito for realmente necessário, limite-o à interface que precisa dele, anote o motivo e coloque-o na configuração que possui essa interface para que sobreviva a uma reinicialização. Depois teste novamente o fluxo exato que falhou, da mesma origem para o mesmo destino, em vez de um ping para algo conveniente.
Inclua um caso que ainda deveria ser recusado. Se esse caso agora funcionar, o ajuste enfraqueceu mais do que o único caminho que você queria reparar.
Mantenha IPv4 e IPv6 separados
Um sysctl de aparência familiar não é uma política para cada família de endereços. O IPv6 tem comportamento e configurações próprios, e uma máquina pode ser estrita em uma família e permissiva na outra sem que ninguém perceba até um destino específico falhar. Verifique os dois se a carga de trabalho usa os dois.
Registre o modo, a interface, a saída da consulta de rota e o motivo da mudança num único lugar. A próxima pessoa vai encontrar a configuração e nenhuma explicação, e vai removê-la ou copiá-la para onde ela não pertence.