回答:
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テーブルエントリに保持され、一意にするための情報の一部であるためです。
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の前に変更されないため)。