次の2つの場合にARP要求パケットがrouter1からrouter2に送信されるとどうなりますか? ARP応答が生成されるか、またはARP要求パケットがドロップされますか?
上記のトポロジには、ルーター「router1」のポート「Intf1」が、直接リンク(1 Gbpsケーブルなど)を介して別のルーター「router2」のポート「Intf2」に接続されています。
ARPは、同じIPサブネット内のデバイス間でのみ機能します。
IPアドレスAのデバイスAがIPアドレスBのデバイスBにパケットを送信する必要がある場合、最初に行うことは、ルーティングテーブルを調べて、IPアドレスBがネットワークインターフェイスを通じて直接到達できるサブネットに属しているかどうかを確認することです。 );その場合、デバイスAはARPを使用してIPアドレスBを物理イーサネットアドレスにマップし、イーサネットフレームをそのアドレスに送信します。
ただし、2つのIPアドレスが異なるサブネット上にある場合、デバイスは完全に異なるロジックに従います。ルーティングテーブルで宛先ネットワークへのルートを探し、適切なルーター(またはそのルーター)にパケットを送信します。特定のルートが存在しない場合のデフォルトゲートウェイ);このシナリオでは、ARPを使用してルーターのハードウェアアドレスを検索します。これは、宛先IPアドレスは直接直接到達できないと見なされているため、パケットをルーターに配信する必要があるためです。それを世話します。
一部のケースでは(私はLinuxがこのように動作することを知っています他の人にはわかりません)、ホストは「間違った」インターフェース上のARPに応答できます。このネットワークを取る:
10.0.0.0/24 ==== Host A ==== 192.168.0.0/24
ホストAは両方のネットワークにアドレスを持っています。 10.0.0.1
および192.168.0.1
としましょう
ホストAが10.0.0.1インターフェイスを介して192.168.0.1のARPを受信すると、ホストAは10.0.0.1インターフェイスのMACアドレスで応答します。
この動作は、カーネル調整パラメータarp_ignore
によって制御されます(ソース: http://blog.steve-miller.org/2010/03/tweaking-arp-behavior-in-linux.html ):
arp_ignore - Define different modes for sending replies in response to received ARP requests that resolve local target IP addresses:
0 - (default): reply for any local target IP address, configured on any interface.
1 - reply only if the target IP address is local address configured on the incoming interface.
2 - reply only if the target IP address is local address configured on the incoming interface and both with the sender's IP address are part from same subnet on this interface.
3 - do not reply for local addresses configured with scope Host, only resolutions for global and link addresses are replied.
4-7 - reserved
8 - do not reply for all local addresses.
上記のように、デフォルトでは、ARPが受信されたインターフェイスに関係なく、ローカルアドレス(つまり、ホストAで構成されたアドレス)に応答します。
2つの可能な回答があり、どちらもarpとは関係ありませんが、代わりに転送テーブルがあります。
Intf1以外のすべてのネットワーク(デフォルトルート)宛てのトラフィックを転送するR1のルートステートメントがある場合、ARP応答はR2によって生成され、両方のシナリオでR1によって受信されます。
ARPは、ハードウェアアドレスを使用して通信するリンク層プロトコルです。依存関係はなく、IPなどの上位層プロトコルによる制限もありません。
あなたのトポロジーは私には分かりません。 router1/intf1に1つのIPアドレスとrouter2/intf2に2つのIPアドレスがありますか?ただし、router1/intf1がarpリクエストをrouter2/intf2に送信すると、router2はarp応答を送信し、router1はipアドレス20.0.0.2のMACアドレスを自分のarpテーブルに格納します。これは、20.0.0.1/24がネットワーク20.0.0.2/8に含まれているため機能します。なぜあなたはそのようにIPアドレスを設定するのですかそれは少し奇妙です