Linux sempre envia redirecionamento ICMP

13

Eu tenho vários Squeeze Debian (6.0.6 atualizado) usados como roteadores.
Quando um link está inativo, eles enviam redirecionamentos de ICMP para hosts locais. Este é o comportamento padrão do Debian e vários outros. Assim, quando o link voltar à vida, os hosts não poderão alcançá-lo até a reinicialização.

Não quero que nenhum redirecionamento ICMP seja enviado por esses roteadores.

Eu testei echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects e sysctl -w net.ipv4.conf.all.send_redirects=0 e coloque net.ipv4.conf.all.send_redirects=0 em /etc/sysctl.d/local.conf
Cada uma dessas soluções coloca o valor correto em /proc/sys/net/ipv4/conf/all/send_redirects

Mas ...
o kernel continua enviando redirecionamentos ICMP. Mesmo depois de uma reinicialização:

$ tcpdump -n -i eth0
00:56:17.186995 IP 192.168.0.254 > 192.168.0.100: ICMP redirect 10.10.13.102 to host 192.168.0.1, length 68

E a tabela de roteamento de hosts locais (computadores Windows) está poluída.

Eu posso evitar isso com o netfilter:
iptables -t mangle -A POSTROUTING -p icmp --icmp-type redirect -j DROP

Alguma idéia de por que o método usual não funciona?
E como evitar que o redirecionamento ICMP seja enviado, sem usar o netfilter?

    
por Gregory MOUSSAT 08.12.2012 / 01:29

1 resposta

13

O comando correto é: echo 0 | tee /proc/sys/net/ipv4/conf/*/send_redirects
Porque você deve ter 0 em 'all' e em 'interface_name' para desativá-lo.

Em /etc/sysctl.conf ou arquivo similar, você precisa definir 'all' + 'default' (ou 'all' + 'interface', mas a interface pode não existir quando este arquivo for processado).

    
por 10.12.2012 / 13:56