NAT とは何ぞや

NAT とは、IP アドレス空間において、グローバルアドレス空間とプライベー トアドレス空間を接続するための技術である。NAT の機能をもつユニットを 「NAT箱」「NAT box」と呼ぶ。

                              +-------+
-----------------+            |       |             +-------------------
                  +           |       |            +
Global Address     +----------|NAT box|-----------+    Private Address
          Space   +           |       |            +               Space
-----------------+            |       |             +-------------------
                              +-------+

プライベート空間からグローバル空間へ投げられるパケットは、始点アド レスとしてプライベートアドレスを持つが、NAT 箱は自らが持つ変換テーブル にしたがってそのパケットの始点アドレスをグローバルアドレスに変換して、 グローバル空間へ中継する。反対に、グローバル空間からプライベート空間へ のパケットでは終点アドレスに対して NAT 箱が変換を施す。

それぞれの空間に対して、NAT箱はまさにルータとして見えることに 注意されたい。

                              +-------+
       {Src=GGG, Dst=XXX}<----|       |<----{Src=PPP, Dst=XXX}
                              |       |
-----------------+            |       |             +-------------------
                  +           |       |            +
Global Address     +----------|NAT box|-----------+    Private Address
          Space   +           |       |            +               Space
-----------------+            |       |             +-------------------
                              |       |
                              +-------+


                              +-------+
       {Src=XXX, Dst=GGG}---->|       |---->{Src=XXX, Dst=PPP}
                              |       |
-----------------+            |       |             +-------------------
                  +           |       |            +
Global Address     +----------|NAT box|-----------+    Private Address
          Space   +           |       |            +               Space
-----------------+            |       |             +-------------------
                              |       |
                              +-------+

NAT 箱は単に IP ヘッダ内の始点/終点アドレスを書き換えていれば良い だけではない。その他にも、

などが必要とされる。ただし、以上のうちチェックサムの再計算は必須だ が、FTP の PORT/PASV コマンドに関しては、FTP を使わないと割り切ってし まえば不要だし、ICMP/SNMP に関しては、RFC1631 ではその必要性を疑問視し ている。ICMP/SNMP に関しては、これからの議論を待ちたい。


DNS に関しては特別の配慮が必要である。おそらく、プライベート空間に 置いた DNS サーバからグローバル空間への DNS サービスを提供するのは良く ない。DNS サーバは、プライベート空間に置いたプライベート空間用と、グロー バル空間に置いて、NAT 箱の変換テーブルをあらかじめ反映させたグローバル 空間用の二つに分け、プライベート空間内への情報の提供と、プライベート空 間からグローバル空間への問い合わせには前者を、グローバル空間からプライ ベート空間への問い合わせには後者を充てるというのが理想的である。

       Global Address Space              Private Address Space
          +--+    |                             |
Internet--|RT|----+                             |
          +--+    |  +----+                     |  +----+
                  +--|DNS1|   +-------+         +--|DNS2|
                  |  +----+   |       |         |  +----+
                  +-----------|NAT box|---------+
                  |           |       |         |  +----+
                  |           +-------+         +--|HOST|
                  |                             |  +----+
                  |                             |

    ・Internet からの問い合わせは DNS1 で処理
    ・HOST からの問い合わせは DNS2 で処理