ip address – どのようにNATサーバは、ユーザーにping ICMPエコー応答パケットを転送するのですか?

ip-address nat ping

NAT は、IP アドレスのポート番号の組み合わせを用いて送信要求をハッシュ化します。ping リクエストは ICMP エコーリクエストパケットで構成されているため、ポート番号は関連付けられていません。NAT サーバはどのようにしてネットワーク内のホストに返信を転送しているのでしょうか?

  31  Rohit Banga  2010-04-27


ベストアンサー

Echoes (ping) のような ICMP クエリ/応答タイプのメッセージでは、NAPT は TCP や UDP のポート番号を使用するのと同じ方法で ICMP クエリ ID (ICMP ID と呼ばれることもあります) を使用します

Destination Unreachable などの ICMP エラーメッセージに対しては、エラーの原因となったフレームのヘッダの ICMP パケットの内部コピーを使用して、NAT テーブルのどのマッピングを使用してそれを変換するかを判断します

これらの手順はいくつかのNAT関連のRFCで簡単に参照されていますが、手順を明示的に記述したものを見つけるのに苦労しました。RFC3022 の 4.1 節を参照してください

なぜなら、良いNAPTの実装では、プロトコルはNATテーブルエントリに保持されている情報のうちの1つであり、それを一意にするためのものだからです

35  Spiff  2010-04-27


ICMPが衝突したときに何が起こるかを確認するために、(GSN3 Kali Linux CLIアプライアンスをベースにして)小さなシミュレーションをしました(ベンダー固有の可能性があるようです)

ICMP requests/response Before NATに、2台の機器(IPが10.0.0.0.1と10.0.0.2の場合)からのICMPリクエストのIdentifierが等しくなった場合の状況が示されています

同時にICMP requests/response After NATには、衝突するICMPセッションのIdentifierがNATによって0に変更され、そこからインクリメントされることが示されています

要約すると、Linux NAT は ICMP 識別子の衝突をその上で処理していると言えます(NAT の前に ICMP 識別子が変更されないため)

0  Bob Naboka  2019-05-19


タイトルとURLをコピーしました