
LinuxシステムでICMPリダイレクトを受信したときにルーティングテーブルがどのように変化するかを確認したい。そのためには
icmpush -v red -sp current-gateway -gw new-gateway -dest google.com -c host -prot tcp my-eth1-ip-address
(成功を返します)が、
route -n
同じままです。もちろん、私は出力をチェックしました
cat /proc/sys/net/ipv4/conf/eth1/accept_redirects
1 です。これは、最新の安定バージョンのカーネルを搭載した Ubuntu 12 マシンで、ファイアウォールはインストールされていません。
それで、質問です。何が間違っているのでしょうか?
答え1
によるとドキュメント/ネットワーク/ip-sysctl.txtデフォルトでは、リダイレクトはルーティング テーブルにすでにリストされているゲートウェイに対してのみ受け入れられます。
secure_redirects - ブール値 ゲートウェイに対してのみICMPリダイレクトメッセージを受け入れます。 デフォルトゲートウェイリストに記載されています。 インターフェースの secure_redirects は、少なくとも次の1つが有効な場合に有効になります。 conf/{all,interface}/secure_redirectsがTRUEに設定され、 それ以外の場合は無効になります デフォルト TRUE
答え2
仮定: の呼び出しはicmpush
外部インターフェイスを使用せずeth1
、ローカルホスト インターフェイスを使用するlo
ため、カーネルはそれがゲートウェイからの正しいリダイレクトであると認識しません。また、Linux カーネルの非常に古いバージョンでは、これらのルートは の応答に表示されませんでしたroute -n
。前述したように、 の応答は、route -nC
一時的なリダイレクト ルートも含める正しい方法である可能性があります。
@grawity、別のパケットへの応答として送信されたリダイレクトを受け入れることについてですが、どこかで読んだのですか? 非常に興味があります。