Linux IPv4 コンテキストでの 'send_redirect' の定義

Linux IPv4 コンテキストでの 'send_redirect' の定義

スクリプト内で次の 2 行に遭遇しました:

echo "1" > /proc/sys/net/ipv4/ip_forward/
echo "0" > /proc/sys/net/ipv4/conf/eth0/send_redirects

最初の行は IP 転送をオンにし、マシンをルーターのように動作させます。

しかし、2 行目が正確に何をするのか理解したいと思います。send_redirectsインターフェースをオフにしますが、これはどういう意味ですか?このコンテキストではeth0何ですか?send_redirect

答え1

「ip_forward」は IPv4 のパケット転送を有効にします。

「リダイレクトの送信」は、ノードがルーターとして動作している場合にのみ有効になります。つまり、ホストは ICMP リダイレクト メッセージを送信しません。これは、ルーターが特定の宛先で利用できるよりよいルーティング パスをホストに通知するために使用されます。これに続いて、ホストはルート キャッシュ エントリを更新し、ICMP リダイレクト メッセージで提案された最適なパス/ルートを介して後続のパケットを直接転送します。

ただし、このルーティング情報更新のメカニズムは危険であり、ICMP リダイレクトが悪意のあるソフトウェアや攻撃者によって改ざん/偽造され、目的のパスにリダイレクトされる可能性があるため、セキュリティ コミュニティにとって懸念事項となっています。

詳細および「リダイレクトメッセージは、指定された新しいゲートウェイアドレスがリダイレクトが到着した同じ接続(サブネット)ネット上にない場合、またはリダイレクトのソースが指定された宛先の現在のファーストホップゲートウェイでない場合は、黙って破棄されるべきである」などの条項については、RFC 1122(セクション3.3.1および付録A)を参照してください。

答え2

リダイレクトは、同じ LAN 上に複数のルーターがある場合に発生します。たとえば、1 つのホストと 2 つのルーターがあるネットワークがあるとします。ホストはルーター A にパケットを送信し、ルーター A はルーティング テーブルで指示されているように、同じ LAN 経由でそのパケットをルーター B に送信する必要がある場合があります。ルーター A は、特定の宛先へのパケットをルーター B に直接送信する方が効率的であることをホストに通知するために、リダイレクト メッセージを送信できます。

send_redirectルーターをオフにすると、このようなリダイレクト メッセージが送信されなくなります。

関連情報