Linux zawsze wysyła przekierowanie ICMP

14

Mam kilka Debian Squeeze (do tej pory 6.0.6) używanych jako routery.
Gdy łącze jest wyłączone, wysyłają przekierowania ICMP do lokalnych hostów. Jest to domyślne zachowanie Debiana i kilku innych. Więc kiedy link wróci do życia, gospodarze nie mogą go połączyć, dopóki nie uruchomią się ponownie.

Nie chcę, aby z tych routerów wysyłane było przekierowanie ICMP.

Przetestowałem echo 0 > /proc/sys/net/ipv4/conf/all/send_redirectsi sysctl -w net.ipv4.conf.all.send_redirects=0oraz wprowadzenie net.ipv4.conf.all.send_redirects=0do /etc/sysctl.d/local.conf
każdej z tych roztworu umieścić odpowiednią wartość do/proc/sys/net/ipv4/conf/all/send_redirects

Ale ...
jądro ciągle wysyła przekierowania ICMP. Nawet po ponownym uruchomieniu:

$ 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

Tabela routingu lokalnych hostów (komputerów z systemem Windows) jest zanieczyszczona.

Mogę temu zapobiec za pomocą netfiltera:
iptables -t mangle -A POSTROUTING -p icmp --icmp-type redirect -j DROP

Masz pojęcie o tym, dlaczego zwykła metoda nie działa?
Jak zapobiec wysyłaniu przekierowań ICMP bez korzystania z netfiltera?

Gregory MOUSSAT
źródło

Odpowiedzi:

14

Prawidłowe polecenie to: echo 0 | tee /proc/sys/net/ipv4/conf/*/send_redirects
Ponieważ musisz mieć 0 na „wszystkich” i na „nazwa_interfejsu”, aby je wyłączyć.

W /etc/sysctl.conf pliku lub podobnym musisz ustawić domyślny „wszystkie” + „(” lub „wszystkie” + „interfejs”, ale interfejs może już nie istnieć podczas przetwarzania tego pliku).

Bertrand SCHITS
źródło
5
Jaki jest zatem sens katalogu „wszystko”? Miałem niejasne wrażenie, że zastąpiłoby to wartości wszystkich innych wpisów?
Elrond
@Elrond, allnie zastępuje, wykonuje operacje bitowe. Zobacz tę odpowiedź o allwersetachdefault . send_redirectsjest ORparametrem, więc ustawienie all.send_redirects0 będzie atutem ustawienia interfejsu.
Leif Arne Storset