NATは現在不足しつつあるIPv4グローバルIPアドレスを節約し,管理作業を容易にするための技術です。インターネットへの接続台数が大幅に増えた現在では,インターネット接続に必須の技術と言えます。今回はこのNATと,その拡張であるPATを学習しましょう。

IPアドレスの分類

 IPアドレスはインターネット上でホストを識別するアドレスです。このため,重複は許されず,ユニークなアドレスが必要になります。ところが,その一方でインターネットの普及に伴い,ユニークなアドレスが不足しつつあります。そこで,RFC1918では「インターネットでルーティングされない」ローカル使用を前提にしたIPアドレス群を規定しています。

  • クラスA・・・ 10.0.0.0/8
  • クラスB・・・ 172.16.0.0/12
  • クラスC・・・ 192.168.0.0/16

 上記のクラスAで1つ,クラスBで16,クラスCで256のネットワークがローカルな使用を前提とした「プライベートIPアドレス」です。一方,ICANNに管理され,NICにより配布されるインターネット上でユニークなアドレスは「グローバルIPアドレス」と呼ばれます。

 所有するホストの台数分だけグローバルIPアドレスを割り当てることができれば問題はありませんが,グローバルIPアドレスは不足しつつあるので,台数分だけ割り当てられるのは稀です。このため,内部のネットワークではプライベートIPアドレスを使い,インターネットとのデータのやり取りの際にはグローバルIPアドレスに変換することで,少数のグローバルIPアドレスでもインターネットへ接続できるようにします。この技術がNAT(Network Address Translation)です。

 CiscoではNATで使うIPアドレスを以下の4つに分類しています。

  • 内部ローカルアドレス ・・・ 内部ネットワークのホストに与えられたアドレス。通常はプライベートIPアドレスが使われる
  • 内部グローバルアドレス ・・・ 外部ネットワーク(インターネットなど)で使用可能なアドレス。通常はグローバルIPアドレスが使われる
  • 外部ローカルアドレス ・・・ 外部ネットワークに存在するホストを,内部ネットワークのホストが識別するためのアドレス。グローバルIPアドレスである必要はない
  • 外部グローバルアドレス ・・・ 外部ネットワークに存在するホストに付けるアドレス。通常はグローバルIPアドレスが使われる

 内部と外部は,NATを実装するルータによって分断されます(図1)。

図1●NATで使われる4つのアドレス
図1●NATで使われる4つのアドレス

 この用語は混乱しやすい用語であると言えます。まず「内部」「外部」はNATルータによって分断された「組織内」「組織外」であることを示します。一方,「ローカル」「グローバル」は,「組織内でのみ通用する=ローカル」と,「組織外で通用する=グローバル」です。ローカル≠プライベートIPアドレス,グローバル≠グローバルIPアドレスであることに注意してい下さい。ですが,一般的には「内部ローカルアドレス」は「組織内で使用されているプライベートIPアドレス」,「内部グローバルアドレス」は「インターネットで使用されるグローバルIPアドレス」が使用されます。

NATの基本動作

 NATはNATルータが実行します。内部ネットワークのホストを送信元とし,外部ネットワークへパケットを送信する時,NATルータが送信元アドレスを変換します。この変換では「内部ローカルアドレス」を「内部グローバルアドレス」にします(図2)。

図2●NATの動作

 このように,設定しておいたNATテーブルに従い,「内部→外部」のパケットには送信元,「外部→内部」のパケットにはあて先として指定されている内部ローカルと内部グローバルの間で相互に変換します。NATにより,内部ネットワークのホストは割り振られた内部ローカルアドレスのまま,インターネット上(外部ネットワーク)のホストとパケットをやりとりすることができるようになります。

 NATには静的NATと動的NATの2種類があります。静的NATは変換する内部ローカルとそれに対応する内部グローバルを事前にNATテーブルに記述しておく必要があります。上図の図2は静的NATになります。

 一方の動的NATは,変換される内部グローバルアドレスは複数のIPアドレス(アドレスプール)になります。そのアドレスプールの中から任意に選んだ1つに変換されます(図3)。

図3●動的NAT

 このNATにより,内部ネットワークのアドレッシングと,外部ネットワークのアドレッシングが分離されます。例えば,NICより割り当てられたアドレス(内部グローバル)が変更されても,内部ネットワークのアドレッシングに変更の必要はありません。また,内部ネットワークのアドレッシングが外部ネットワークに漏れることもなくなります。

 ただし,NATは変換処理が必要になるため,ネットワークのレイテンシを増やすことなり得ます。また,IPヘッダのIPアドレスだけを変換するため,アプリケーションのデータ部分にアドレスが書き込まれている場合などは通信できなくなることがあります。

PATの基本動作

 NATでは内部ローカルアドレス1つに対し,必ず内部グローバルアドレス1つを変換対象としていました。つまり,外部ネットワークへの同時接続は内部グローバルアドレスの個数分(一般的にはグローバルIPアドレス分)に制限されます。したがって,NATでは同時接続に必要なだけグローバルIPアドレスが必要になります。

 グローバルIPアドレスの不足を補い,節約するためにはNATはあまり有効ではありません。そのためにはNATの拡張機能であるNAPT(Network Address Port Translation),Cisco独自の呼び方ではPAT(Port Address Translation)を使います。PATはNATのアドレス変換に加えてポート番号の変換も行います。これにより,複数の内部ローカルアドレスを1つの外部グローバルアドレスに変換することができます(図4)。

図4●PAT

 このように,ポート番号も変換することにより,1つの内部グローバルアドレスでも複数の内部ローカルアドレスを変換できます。

 PATを使うことにより,1つのグローバルIPアドレスでも,多くの内部ネットワークのホストをインターネットに接続でき,グローバルIPアドレスを節約することができます。このため,PATは多くの場所で利用されています。

 ただし,PATはポート番号を変換してしまうため,特定のポート番号を使うアプリケーションなどは使えなくなることがあります。

(改定履歴)
・「WANプロトコル編」にあった内容を「IPアドレス編」に移動しました。(2008/7/24)