Algumas mensagens de resposta do ICMP não chegam no espaço do usuário em Kernels recentes

3

Estou movendo um aplicativo da versão 2.6.23 (sim, é antigo; é por isso estamos nos movendo) para 3.18LTS. O aplicativo monitora várias redes links para o mesmo destino com pacotes de ping. Os diferentes links são selecionado pelo roteador de próximo salto (Ethernet) ou pela rede interface (links ponto-a-ponto, também conhecidos como dados de celular). Para forçar rotas diferentes para o mesmo destino, os pacotes de saída são marcados com diferentes marcas de firewall. Então eu estou usando regras de roteamento para selecione diferentes tabelas de roteamento com rotas diferentes para o mesmo alvo. O caminho de saída funciona perfeitamente bem em ambos, 2.6.23 e 3.18. No entanto, o mesmo não é verdadeiro para as respostas recebidas do ICMP. Eles são entrada; Eu os vejo com o tcpdump. Mas alguns pacotes não recebem entregue ao espaço do usuário em 3.18. Eu não tenho 100% de certeza, mas acho que isso acontece se não houver uma rota "normal" para o alvo de ping, por exemplo a endereço de origem das respostas do ICMP. Isso parece algum tipo de filtragem de ingresso mal orientada que mantém os pacotes fora se um roteamento normal a pesquisa falha.

Estou no caminho certo? Em caso afirmativo, existe uma maneira de desativar este filtrando? Se não, o que poderia causar esse comportamento alterado?

    
por jpo234 13.10.2015 / 08:56

1 resposta

5

OK, eu mesmo encontrei.

A resposta é /proc/sys/net/ipv4/conf/*/rp_filter . A opção está documentada na Fundação Linux . Embora esta seja uma configuração antiga, parece que o Ubuntu alterou o valor padrão em algum momento entre 07.04 e 14.04. Alterar o valor de 1 para 0 corrigiu meu problema.

    
por 13.10.2015 / 09:34