NAT の背後にある NAT (ルーターの NAT と ISP の NAT) はどのように機能しますか?

NAT の背後にある NAT (ルーターの NAT と ISP の NAT) はどのように機能しますか?

私はモデム ルーターを使用しており、場合によっては ISP NAT の背後にもいます。NAT (ISP の NAT) の背後にある NAT (ルーターの NAT) はどのように機能しますか?

私の知る限り、NAT は次のように動作します。コンピュータ A と B は内部 IPinternal1とを取得しますinternal2。次に、NAT はそれらに同じ IP 上のポートを割り当てます。そのため、公開側ではそれらはおよびの背後にありsomeIP:1ますsomeIP:2

しかし、ルータがこれを実行し、その後 ISP が再度これを実行すると、IP は の形式になりますがsomeIP:1:100someIP:2:101ポートには第 2 レベルのポートがないため、これは不可能です。

それで、これはどのように機能するのでしょうか?

答え1

簡単な例を試してみましょう。

「通常の」NAT されたホーム ネットワークでは、192.168.1.2:11223「パブリック」アドレス:ポートのペアにマップされます203.0.113.5:22334。そのため、最終的な宛先ホストは、パケットを受信したと認識します203.0.113.5:22334が、その背後にある「プライベート」ネットワークについては認識しません。


ここで、これを 2 つのレベルの NAT を持つダブル NAT ネットワークに拡張してみましょう。

ホストに最も近いルーターでは、は192.168.1.2:11223「パブリック」アドレス:ポートのペアにマップされます10.0.0.8:22334。この時点では、10.0.0.8異なるネットワーク内にあるだけで、依然としてプライベート アドレスです。このルーターに関する限り、その役割は完了です。

最初のルータが接続されている LAN のゲートウェイとして機能する次のルータでは、10.0.0.8:22334独自のパブリック インターフェイス上の別のアドレス:ポート ペアにマッピングされます203.0.113.5:12345

最終的な宛先ホストは、 からパケットを受信したと考えます203.0.113.5:12345。そのホスト、およびパブリック インターネット全体は、ここで関係する10.0.0.0/8または192.168.0.0/16サブネットのいずれについても認識していません。そのアドレスに応答が返されますが、各ルータはこれを順番に変換する必要があります。

                              Different address:port pairs for
                              thesame endpoint in one connection!
+------------------------+    -----------------------------------
|Host                    |
|192.168.1.2             |
+------------------------+    192.168.1.2:11223 <--- Host sees
                                                     this pair

+------------------------+    192.168.1.2:11223 <--- Router 1 sees
|Router 1                |                           req from this
|internal 192.168.1.1/24 |
|external 10.0.0.8       |
+------------------------+    10.0.0.8:22334 <------ Router 1 sends
                                                     req from this

+------------------------+    10.0.0.8:22334 <------ Router 2 sees
|Router 2                |                           req from this
|internal 10.0.0.1/24    |
|external 203.0.113.5    |
+------------------------+    203.0.113.5:12345 <--- Router 2 sends
                                                     req from this

+------------------------+    203.0.113.5:12345 <--- Public internet
|Public internet         |                           sees this pair
+------------------------+

CGN (「ISP NAT」) もほぼ同じように動作します。唯一の違いは、ビジネス ネットワークと衝突する可能性があるため、内部ホストに RFC1918 プライベート アドレスを与えないことです。代わりに、範囲100.64.0.0/10(RFC6598) のアドレスが、上の図の「ルーター 2」によって配布されます。顧客自身のルーターから見ると、その「パブリック」アドレスはその範囲からのものですが、実際にはパブリック インターネット上では到達できません。

答え2

私の知る限り、NAT は次のように動作します。コンピュータ A と B は内部 IP として internal1 と internal2 を取得します。次に、NAT はそれらに同じ IP のポートを割り当て、公開側では someIP:1 と someIP:2 の背後に位置するようにします。

ポート番号ないホストアドレスの一部です。NATが使用されているかどうかに関係なく、IP層にはポートというものは存在しません。ホストのIPアドレスは常にただアドレスには「第2レベル」のポートはなく、「第1レベル」のポートもありません。[1]

代わりに、ポートは個々のTCP/UDPに属します。繋がりホストが IP に加えて作成するポートです (厳密に言えば、これらは各パケットの一部であり、同じ接続内のすべてのパケットは同じポートを使用します)。

住所が と書かれている場合12.34.56.78:123、その内容はないホストのIPアドレス - これはポート123のTCP接続エンドポイントですIP アドレスがまだ単に であるホスト12.34.56.78

これらのポート追加されないNAT によって – これらは常に存在していました。すべての TCP または UDP パケットには、正確に 2 つのポート (1 つの「送信元」ポートと 1 つの「宛先」ポート) があります。NAT を実行するルーターは、それらを異なる値に変換するだけです。NAT のレベルがいくつあっても、そのパケットには 2 つのポートが存在します。


[1]つまり、1 つのパブリック アドレスの背後に NAT された 2 つのホストがある場合、IP 層では実際には区別がつきません。外部から IP パケットが送信されたときに、someIPどのホストに送るかを指定する方法がなく、NAT ルーターは TCP 層からこれを推測する必要があります。そのため、着信接続を受信するには、「ポート転送」ルールを設定する必要があります。

関連情報