ICMP リダイレクト: icmpush でテストする方法

ICMP リダイレクト: icmpush でテストする方法

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、別のパケットへの応答として送信されたリダイレクトを受け入れることについてですが、どこかで読んだのですか? 非常に興味があります。

関連情報