A explicação mais provável para o seu problema é o rp_filter
, que é ativado por padrão. O servidor Y recebe o pacote em tap0
, mas de acordo com sua tabela de roteamento, o pacote deveria chegar em uma interface diferente (provavelmente eth0
).
Se este for realmente o seu problema, a solução é desativar rp_filter
para tap0
. Primeiro, tente isso para ver se o problema desaparece:
echo 0 > /proc/sys/net/ipv4/conf/tap0/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
Depois de obter o Servidor Y para aceitar o pacote. Você pode enfrentar um problema com o cliente que está rejeitando a resposta por ter vindo do endereço IP incorreto. Existem soluções diferentes para esse problema.
Se você escolher usar SNAT
no servidor X, isso resolverá os dois problemas. Mas há duas ressalvas.
- O servidor Y não saberá o endereço IP do cliente.
- As respostas para o cliente precisarão percorrer o longo caminho do servidor X para voltar ao cliente, o que pode ser menos eficiente do que direcioná-las diretamente de volta ao cliente.