NATサーバーはどのようにしてping ICMPエコー応答パケットをユーザーに転送しますか?


29

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


回答:


34

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

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

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

これはTCPまたはUDPマッピングと競合しません。適切なNAPT実装では、プロトコルはNATテーブルエントリに保持され、一意にするための情報の一部であるためです。


1
どこからでも引用できますか。
Rohitバンガ

ICMP idがプロセスが使用しているポート番号と衝突した場合はどうなりますか。
Rohitバンガ

@iamrohitbanga OKあなたのさらなる質問をカバーするために答えを拡大しました。
10

0

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

上のICMP要求/ NATの前に応答が(丁重にIPアドレス10.0.0.1および10.0.0.2を持つ)2つのデバイスからのICMP要求の識別子が等しくなるとき、状況を示しています。

同時にICMP要求/応答でNATが表示されると、衝突しているICMPセッションの識別子がNATによって0に変更され、そこから増加します。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.