Linuxは常にICMPリダイレクトを送信します


14

ルーターとして使用されるDebian Squeeze(6.0.6が最新)がいくつかあります。
リンクがダウンすると、ICMPリダイレクトをローカルホストに送信します。これはDebianおよび他のいくつかのデフォルトの動作です。そのため、リンクが復旧すると、ホストは再起動するまでリンクに到達できません。

これらのルーターからICMPリダイレクトが送信されないようにします。

私がテストしたecho 0 > /proc/sys/net/ipv4/conf/all/send_redirectssysctl -w net.ipv4.conf.all.send_redirects=0して置くことnet.ipv4.conf.all.send_redirects=0/etc/sysctl.d/local.conf
、これらのソリューションのすべてに正しい値を入れます/proc/sys/net/ipv4/conf/all/send_redirects

しかし...
カーネルはICMPリダイレクトを送信し続けます。再起動後でも:

$ 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

また、ローカルホスト(Windowsコンピューター)のルーティングテーブルが汚染されています。

netfilterでこれを防ぐことができます:
iptables -t mangle -A POSTROUTING -p icmp --icmp-type redirect -j DROP

通常の方法が機能しない理由についてのアイデアはありますか?
そして、netfilterを使用せずにICMPリダイレクトが送信されるのを防ぐ方法は?

回答:


14

正しいコマンドは次のとおりecho 0 | tee /proc/sys/net/ipv4/conf/*/send_redirects
です。「all」と「interface_name」に0を設定して無効にする必要があるためです。

/etc/sysctl.confまたは同様のファイル、あなたがセットに「すべて」+「デフォルト」(または「すべての」+「インタフェース」は、このファイルを処理するとき、インターフェイスがすでに存在していないことを)持っています。


5
では、「すべて」のディレクトリのポイントは何ですか?私は漠然とした印象を持っていました、それは他のすべてのエントリの値を上書きしますか?
エルロン

@Elrond allは上書きせず、ビットごとの演算を行います。vs に関するこの回答をalldefaultご覧ください。send_redirectsですORので、設定、パラメータall.send_redirectsインタフェースの設定によって捏造される0に。
レイフアルネストセット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.