NAT

IPアドレスは、インターネットで使えるものと使えないものがあります。使えない場合は、インターネットで使えるIPアドレスに変換する必要があります。

本項では、NAT(Network Address Translation)について説明します。

グローバルアドレスとプライベートアドレス

IPアドレスには、インターネットで使えるIPアドレスと使えないIPアドレスがあります。

インターネットで使えるIPアドレスをグローバルアドレス、使えないIPアドレスをプライベートアドレスと言います。それぞれのアドレスの範囲は以下の通りです。

【アドレス範囲】
種類 範囲
グローバルアドレス 0.0.0.0〜223.255.255.255
※プライベートアドレス範囲を除く
プライベートアドレス 10.0.0.0〜10.255.255.255
172.16.0.0〜172.31.255.255
192.168.0.0〜192.168.255.255

IPアドレスは住所の役目をするため、グローバルアドレスはインターネットの中で重複しないように管理されており、一意になっています。プライベートアドレスはインターネットで使わないため自由に設定できますが、通信する範囲では重複しないように割り当てる必要があります。

グローバルアドレスは数に限りがあるため、家庭のネットワークでは使えないことが多く、一般的にプライベートアドレスを使います。また、企業でもプライベートアドレスが多く使われています。

プライベートアドレスでインターネットと通信する

プライベートアドレスを使っていた場合、そのままではインターネットと通信できないため、グローバルアドレスに変換する必要があります。これを、NATと言います。

インターネットに転送する時、プライベートアドレスからグローバルアドレスに変換される。

フレームは、パソコンからルーターまでは以下の通りです(MACアドレスなど一部省略しています)。

送信元IPアドレスが192.168.1.10。

ルーターを経由した後は、以下のように送信元IPアドレスがグローバルアドレス(以下の例では203.0.113.1)に変換されます。これで、インターネットと通信できるようになります。

送信元IPアドレスが203.0.113.1に変換されている。

また、インターネットにあるサーバーからの応答は203.0.113.1宛てに送られてきて、ルーターで元の192.168.1.10宛てに変換されます。

NAPT

例えば、2台のパソコンを使っていてIPアドレスが192.168.1.10と192.168.1.20だとします。パソコンからインターネットへ通信する際、ルーターを経由する時にどちらもNATによって送信元IPアドレスが203.0.113.1に変換された場合、サーバーからの応答はどちらも203.0.113.1宛てに返ってきます。ルーターは203.0.113.1を192.168.1.10に変換したらよいか、192.168.1.20に変換したらよいかわからないため、通信が成り立ちません。

203.0.113.1宛ての通信は、複数あるPCのどれ宛てか判断できない。

このような場合は、NAPT(Network Address Port Translation)という技術を使います。NAPTは、IPマスカレードとも呼ばれます。

NAPTでは、インターネットへ送信する時に送信元IPアドレスだけでなく、送信元のポート番号も変換します。例えば、192.168.1.10では送信元IPを203.0.113.1でポート番号を3,000番に変換したとします。

送信元IPアドレスが203.0.113.1、送信元ポート番号が3,000に変換されている。

サーバーからの応答で、同じ203.0.113.1宛てであってもポート番号が3,000番宛てであれば192.168.1.10宛てと判断して変換可能なため、通信が成立します。

この3,000番という数字は固定ではなく、通信の度に自動でルーターが割り当てます。このため、ルーターはNAPTテーブルを保持しています。

【NAPTテーブル】
プライベート グローバル
IP:192.168.1.10 ポート:4,000 IP:203.0.113.1 ポート:3,000
IP:192.168.1.10 ポート:5,000 IP:203.0.113.1 ポート:3,001
IP:192.168.1.20 ポート:5,000 IP:203.0.113.1 ポート:3,002

上記のNAPTテーブルでは、203.0.113.1宛ての通信が戻ってきた場合、3,001番ポート宛てであれば192.168.1.10でポート番号5,000に変換します。3,002番ポート宛てであれば、192.168.1.20のポート番号5,000です。

同じグローバルアドレス宛てに戻ってきても、ポート番号によって変換するIPアドレスを判断できる。

このように、サーバーからの応答フレームが同じグローバルアドレス宛てで戻ってきても、元のアドレスやポート番号に変換できます。

NAPTを使えば、1つのグローバルアドレスで複数のパソコンがインターネットを使えるようになります。

デスティネーションNAT

家庭では一般的にこれまで説明したとおり、パソコンのプライベートアドレスをインターネットで使えるグローバルアドレスに変換して通信を行いますが、これをソースNATと言います。

通信開始時のフレームで、送信元のIPアドレスが変わるためです。

これに対し、インターネットからグローバルアドレス宛てに開始された通信を、プライベートアドレスに変換する方法をデスティネーションNATと言います。デスティネーションNATは、公開サーバー(例えば、公開Webサーバー)などにプライベートアドレスが設定されていて、インターネットからアクセスさせる時に使います。

公開Webサーバーのプライベートアドレスは192.168.1.10だが、公開しているIPアドレスはグローバルアドレスの203.0.113.2。

フレームは、インターネットからルーターまでは以下のとおりです。

インターネットから公開Webサーバへの通信は、宛先IPアドレス203.0.113.2で送信される。

ルーターを経由した後は、以下のように宛先IPアドレスがプライベートアドレスに変換されます。

ルーターを経由する時、192.168.1.10に宛先IPアドレスが変換される。

上記のとおり、デスティネーションNATでは通信開始時のフレームで、宛先IPアドレスが変わります。

つまり、インターネットからはグローバルアドレスの203.0.113.2がWebサーバーのIPアドレスに見えますが、実態は192.168.1.2が設定されているため、ルーターで変換するのがデスティネーションNATです。

Webサーバーからの応答は、ルーターで送信元IPアドレスが192.168.1.2から203.0.113.2に変換されて、インターネットへ送信されます。

関連ページ

応用編「IPアドレスの種類
IPアドレスは、グローバルアドレスやプライベートアドレスだけでなく、他にも種類分けされています。その種類分けについて説明しています。