NATとは、プライベートIPアドレスとグローバルIPアドレスを相互に変換する仕組みや技術のことを言います。
プライベートIPアドレスとグローバルIPアドレスの違いに関しては、以下のページをクリックすることで参照できます。
プライベートIPアドレスとグローバルIPアドレスについて
インターネットのようにグローバルIPアドレスを使うネットワークと、LANのように通常プライベートIPアドレスを使うネットワークを中継する際に、そのままでは中継できないため、NATのような変換機構が必要となります。
プライベートIPアドレスは、LANのような閉じたネットワークでしか使えません。
インターネットにサーバーを公開する場合、グローバルIPアドレスと、それに対応するドメイン名を取得する必要があります。
つまり、プライベートIPアドレスは、LANでしか使えないからです。
例えば、LAN上のパソコンがIPパケットをインターネット上のWebサーバーに送信したとします。
ブラウザとWebサーバー間で使われるHTTPというプロトコルでは、GETコマンドを含むIPパケットを送信したとします。
ところがその応答であるホームページの内容は返ってきません。
つまり、LAN側のIPアドレスはプライベートIPアドレスなので、インターネット側からは見えないことから、どのパソコンに着信させたら良いかがわかりません。
インターネット側からは、インターネットとLANのインターフェイスとなっているルーターのインターネット側のグローバルIPアドレスまでしか見えないのです。
そこで、NATのようなアドレス変換機構が必要となります。
それでは、例をあげて変換の仕組みを説明します。
以下の図を御覧下さい。
上の図を御覧下さい。
NATと書かれた箱は、NATの機能がある中継装置なら何でも良いです。
NATは、ADSLモデム、ブロードバンドルーター、一昔前のISDNルーターなどに内蔵されています。
また、LinuxなどのオープンソースのOSにもNATの機能を提供するプログラムが含まれています。
Linuxをインストールしたパソコンをブロードバンドルーターの代わりに使用することもできます。
上の図は、IPパケットがLAN側からインターネット側に送信されるか、または、その逆のイメージを表しています。
二つの流れがありますが、上は上り(インターネット上のコンピュータへの接続やデータ送信)で、下は下り(インターネット上のコンピュータからの応答)です。
赤い矢印が示す方向にIPパケットが送信されます。
上の図では、グローバルIPアドレスに関しては実際のIPアドレスを書かずに、xxx.xxx.xxx.と書いています。
上の図のNAT装置は、NAT機能があるブロードバンドルーターとします。
濃い緑色のグローバルIPアドレスは、ブロードバンドルーターのインターネット側のIPアドレスになります。
応答をインターネット側のコンピュータから返すところに注目して下さい。
ブロードバンドルーターのインターネット側のIPアドレス(xxx.xxx.xxx.1)までIPパケットが着信すると、ブロードバンドルーター内部にあるNATの変換テーブルを見て、宛先となる上図の一番左側のパソコンのプライベートIPアドレスに変換されるので、正しくこのパソコンにIPパケットを転送できます。
しかし、上の図ではLANにたった1台しかパソコンを接続できません。
そこで、複数のパソコンでブロードバンドルーターを共有してインターネットに接続するためには、NATを改善する必要があります。
そこで生まれたのが、NAPTです。
NAPTと似たような用語にIPマスカレード、NAT+、NATe、エンハンスドNATなどいろいろありますが、これらはどれもだいたい同じ機能を指しています。
IPマスカレードは、元々Linuxの用語でした。
意味は、NAPTと同じです。
RFCでは、NAPTの方が使われています。
RFCはインターネット標準の技術ドキュメントです。
このページでは、NAPTを使いますが、広義ではNAPTなどの似た用語すべてをNATと呼んでもかまいません。
NATが、1台のパソコンしか使えなかったのに対して、NAPTでは、複数のパソコンとインターネットを中継できるNATとなります。
NATがIPアドレスしか使用していなかったのに対して、NAPTはポート番号も使います。
従って、OSI参照モデルにおけるレイヤ4(トランスポート層)をも含むことになります。
NAPTでは、ポート番号をIPパケットの識別に使用し、NAPT装置にアクセスするすべてのパソコンの通信を一つのグローバルIPアドレスで行います。
具体的には、IPパケットの送信元のポート番号を使用して、これを通信の識別に利用します。
さらに、一つのグローバルIPアドレスを共有して、複数のパソコンの通信を同時に実現します。
IPパケットを送信すると、送信元のパソコンのプライベートIPアドレスがインターネット側から見えないので、応答のIPパケットをどのパソコンに着信させて良いのかわかりません。
これはNATで解決できますが、複数のパソコンがLAN側にあったとしたら、IPアドレスの変換だけではどのパソコンに着信させたら良いのかわかりません。
そのため、送信元のポート番号をパソコンごとの通信の識別に使えば解決できることになります。
しかし、欠点もあります。
それは、ポート番号を使うために、アプリケーションプログラムによっては問題を起こす場合もあります。
代表的なアプリケーションは、FTP(File Transfer Protocol)、IP電話、Windows Messenger、オンラインゲームなどです。
FTPは、制御接続でサーバーに接続し、コマンドのやり取りを行い、データ接続でサーバーからクライアントに接続し、データ転送を行うという変な通信をやるファイル転送プロトコルです。
Windows Messengerは、動画や音声を利用できるチャットソフトです。
これらに共通の特徴は、IPアドレスやポート番号が、IPヘッダー、TCPヘッダー、UDPヘッダーより後ろのデータ部分に書かれていることです。
NAPTは、例えばデータ部分にポート番号やIPアドレスが書かれていても無視してしまう。
ここの情報を必要とするアプリケーションは正常に動作しないことになります。
アプリケーションの数はそう多くはないので何とかなりそうな感じはします。
この問題に対する解決策は、幾つかあります。
まず、ルーターが問題となる幾つかのアプリケーションに対応することです。
他には、UPnP(Universal Plug and Play)にルーターが対応すること、静的IPマスカレードにルーターが対応することなどです。
静的IPマスカレードに対応しているルーターは今では多いです。
この機能があると、プライベートIPアドレスが割り当てられているWebサーバーなどをインターネットに公開できます。
NATやNAPTに関しては、RFC2663に記載されています。
RFC2663も含めてRFCの詳細は、以下のサイトで御覧下さい。
IETF RFC Page
JPNIC RFC-JP(社団法人:日本ネットワークインフォメーションセンター)
RFC2663(英文)【IETF RFC Page】
ページトップへ
ルーター[メニュー]へ戻る
サイトマップ(LAN技術研究室の案内図)
ネットワーク技術用語集へ行く
LAN技術研究室のトップページへ
© 2007 Toyozi Masuda All rights reserved.