O host de destino não aceita o UDP quando não há rota para a origem

1

Eu tenho três hosts com a seguinte configuração:

Host A: IP:192.168.1.1/24
Host B: IP:192.168.1.2/24
Host C: IP:192.168.3.1/24

Tudo acontece no CentOS 6, e todas as interfaces são marcadas com VLAN (se faz alguma diferença aqui).

Estou enviando tráfego UDP nas direções B->A e C->A . Isso é puro tráfego unidirecional, portanto não configurou nenhum roteamento no Host A

Por que C->A tráfego não é aceito no lado A , a menos que o roteamento para C esteja configurado em A . (é visível no nível do tcpdump, mas não recebido pelo socket)

Eu gasto muito tempo resolvendo problemas. Eu estava esperando muitas razões: configurações iptables, selinux e até rp_filter, mas a solução era tão simples.

Eu gostaria de saber qual é o motivo de tal comportamento, e se existe uma configuração que é responsável pela necessidade de ter uma rota de origem no caso do UDP.

    
por Kamil Z 13.08.2015 / 14:44

1 resposta

4

Você provavelmente é bit pelo filtro uRPF do Linux, que é projetado para evitar spoofing de pacotes, mas quebra configurações de roteamento assimétricas. Desativar com

sysctl net.ipv4.conf.all.rp_filter=0
sysctl net.ipv4.conf.eth0.rp_filter=0

(Sim, você precisa desativar a entrada all e a específica da interface.)

    
por 20.08.2015 / 14:18