tcpdump
私のネットワーク(KVM仮想マシン、ブリッジネットワーク)にいくつかのICMPリダイレクトがあることを示しています。私はそれらと私のシステムがどのように機能し、見えるかを詳しく見てみることにしました。期待どおりに動作しないことがわかりました。
私がそうだと仮定しましょう1.1.1.1そして私ping 2.2.2.2
:
# ping 2.2.2.2
PING 2.2.2.2 (2.2.2.2) 56(84) bytes of data.
64 bytes from 2.2.2.2: icmp_seq=1 ttl=63 time=0.569 ms
From 4.4.4.4: icmp_seq=2 Redirect Host(New nexthop: 3.3.3.3)
64 bytes from 2.2.2.2: icmp_seq=2 ttl=63 time=0.690 ms
From 4.4.4.4: icmp_seq=3 Redirect Host(New nexthop: 3.3.3.3)
ご覧のとおり、複数のリダイレクトが受信されています。3.3.3.3よさそうだが、なんだかご主人様(1.1.1.1)無視してください。
# sysctl -a|grep accept_redirects
net.ipv4.conf.all.accept_redirects = 1
net.ipv4.conf.default.accept_redirects = 1
net.ipv4.conf.eth0.accept_redirects = 1
net.ipv4.conf.lo.accept_redirects = 1
その新しいパスのエントリはなく、空ですip route list
。ip route list cache
カーネルバージョンは次のとおりです。
# uname -a
Linux foo.bar 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u3 (2016-01-17) x86_64 GNU/Linux
/proc/sys/net/ipv4/conf/*/accept_redirects
値を変更しても効果は0|1
ありません。networking restart
reboot
私は希望受け入れるICMPリダイレクト - どんなアイデアがありますか?
修正する:
# ip -d route
unicast default via 4.4.4.4 dev eth0 proto boot scope global
unicast 1.1.1.0/24 dev eth0 proto kernel scope link src 1.1.1.1
unicast 4.4.4.4 dev eth0 proto boot scope link
答え1
宛先までのより良いパス/ゲートウェイを定義するために、ICMPリダイレクトが送信されます。
ルートのゲートウェイ/アウトレットと同じネットワークにIPアドレスが必要であるため、ルートは次の条件がすべて満たされている場合にのみルーティングテーブルに挿入されます。
accept_redirects
1に設定- 問題のマシンには、アドレスがゲートウェイネットワークに属するインターフェイスがあります。
- 宛先パスと同じネットワークにIPアドレスがありません。
それ以外の場合はパスが削除されます。
なりすましICMPリダイレクトには既知のセキュリティリスクがあるため、盲目的にリダイレクトを許可しません。 ICMPリダイレクトは、一時的なネットワークエラーまたはネットワーク設計エラーを隠すこともできます。
答え2
Rui F Ribeiroの回答に追加:
secure_redirects は、デフォルト値が 1 で、既存のゲートウェイの 1 つに属していないリダイレクト ターゲットを拒否するため、無効にする必要があります。
または、ターゲットIPを同じインターフェイスの2番目のデフォルトゲートウェイ(おそらくより低いメトリックを使用)として追加できる場合にも機能します。もしどうするのかご存知の方は、コメントを残してください。