NATとは
NAT(Network Address Translation)は IPアドレスを変換する技術 のことです。
特に一般的には、企業LANで使われる プライベートIPアドレス を、インターネット通信に必要な グローバルIPアドレス に変換する仕組みとして使われます。
インターネット上ではすべての機器にグローバルIPが必要ですが、企業や家庭内のネットワークではプライベートIPが使われています。そのため、LAN内のPCがインターネットに接続する際には、ルータなどでNATを用いてアドレス変換を行う必要があります。
NATの特徴
NATは、主に IPパケットのヘッダに含まれる送信元IPアドレス を変換します。
- 内部LANから外部(インターネット)へ通信を出すとき → 送信元IPアドレスが変換される
- 外部から内部へ戻ってくるとき → 宛先IPアドレスが変換される
これにより、LAN内のPCはプライベートIPのままでも、外部とはグローバルIPでやりとりできます。
NATのメリット
- グローバルIPアドレスの節約ができる
- 内部ネットワーク構成を外部から隠せるため、セキュリティが向上する
NATのデメリット
- 一部のアプリケーションでは正常に動作しない場合がある
(L7=アプリケーション層のデータ内にIPアドレスが埋め込まれているケースなど)
CiscoにおけるNAT用語
Ciscoルータでは、NATの動作を理解するために以下の用語が使われます。ステータス表示にも出てくるため、意味を正しく覚えることが大切です。
| NAT用語 | Ciscoでの表示 | 意味 |
|---|---|---|
| 内部ローカルアドレス | Inside local | 内部ネットワークのホストに割り当てられるIP(通常はプライベートIP) |
| 内部グローバルアドレス | Inside global | 外部から見た内部ホストのIP(通常はISPから割り当てられるグローバルIP) |
| 外部ローカルアドレス | Outside local | 内部から見た外部ホストのIP(通常はグローバルIPと同じ) |
| 外部グローバルアドレス | Outside global | 実際に外部ホストに割り当てられたIP(通常はグローバルIP) |
Cisco機器では、ip nat inside と設定した側が「内部ネットワーク」、ip nat outside と設定した側が「外部ネットワーク」と定義されます。このルールに例外はありません。
ここで「ローカル」とは 内部から見た表現、「グローバル」とは 外部に公開される表現 という意味で理解すると整理しやすいです。
NATの実際の利用
NATやNAPTでは、主に 送信元アドレスの変換 を行います。
この場合、意識すべきは以下の3種類です。
- 内部ローカルアドレス
- 内部グローバルアドレス
- 外部グローバルアドレス
一方、外部ローカルアドレスと外部グローバルアドレスは同じ値となるため、Cisco機器のステータス確認では区別されないことが多いです。
NATの仕組み
ここでは送信元アドレス変換を行うNATの流れを見ていきます。
内部ネットワークのPCがインターネット上のサーバにアクセスする場合、クライアントが送信したパケットはまずNATルータに届きます。NATルータはこのとき 送信元IPアドレス(プライベートIP)を内部グローバルアドレス(グローバルIP)に書き換えて 外部に送信します。
次に、サーバからの返信パケットが戻ってきた場合、宛先はNATルータが付与したグローバルIPになっています。そこでNATルータは変換テーブルを参照し、宛先アドレスを もとの内部ローカルアドレス(プライベートIP)に戻して クライアントへ届けます。
つまり、行きの通信では「送信元アドレス変換」、戻りの通信では「宛先アドレス変換」が行われるわけです。
スタティックNATとダイナミックNAT
NATには「1対1」でアドレスを変換する仕組みがありますが、その方法には2種類あります。
スタティックNAT
システム管理者が 固定的に1対1の対応関係を設定しておく方式 です。
例えば
- 内部の
192.168.0.1を100.1.1.1に変換 - 内部の
192.168.0.2を100.1.1.2に変換
というように、ルータに事前に変換ルールを登録しておきます。特定のサーバ(例えばWebサーバやメールサーバ)を外部に公開するときによく利用されます。
ダイナミックNAT
管理者が グローバルIPアドレスのプール(利用可能な範囲)を設定しておき、外部通信時に動的に割り当てる方式 です。
例えば、内部の複数PCが外部へアクセスするときに、空いているグローバルIPアドレスが順番に割り当てられます。プール内で使えるIPがなくなると、それ以上新しい通信はできなくなります。
なお、スタティックNATとダイナミックNATが両方設定されている場合は、スタティックNATが優先される というルールがあります。
実際の利用
実際のインターネット通信においては、スタティックNATやダイナミックNATがそのまま使われることは少なく、より効率的な PAT(Port Address Translation) が使われるのが一般的です。PATは1つのグローバルIPアドレスを複数の内部端末で共有できるため、家庭用ルータから企業のファイアウォールまで広く利用されています。
NAPTとは
NAPT(Network Address Port Translation)は、1つのグローバルIPアドレスを複数のコンピュータで共有できるようにする技術 です。NATがアドレスだけを変換するのに対し、NAPTでは TCP/UDPのポート番号も同時に変換 することで、1つのIPアドレスを多数の端末が使えるようにしています。
この仕組みにより、社内LANの複数のPCが1つのグローバルIPアドレスを通じてインターネットにアクセスすることが可能になります。
ベンダーによって呼び方が異なり、Ciscoでは PAT(Port Address Translation)、Linuxでは IPマスカレード と呼ばれています。
NATとの違い
通常のNAT(スタティックNATやダイナミックNAT)では 1対1の変換 しかできません。そのため、同時に100台のPCがインターネットにアクセスするなら100個のグローバルIPアドレスが必要になります。これはグローバルIPの枯渇という問題に直結します。
一方、NAPTではアドレス変換に加えてポート番号を利用するため、1つのグローバルIPを多くの端末で共有可能です。たとえば送信元IPが同じでも、送信元ポート番号が異なれば別々の通信として識別 できます。これにより、数百台のPCが1つのグローバルIPを使って同時に通信できるのです。
NAPTの仕組み
NAPTの動作も基本はNATと同じで、内部から外部へ出る際には送信元IPアドレスを変換し、戻ってくるときには宛先IPアドレスを元に戻します。ただしNAPTでは、NATテーブルに以下の情報を登録する点が異なります。
- 内部ローカルアドレス + ポート番号
- 内部グローバルアドレス + ポート番号
- 外部グローバルアドレス + ポート番号
例えば、社内の複数PCが同じHTTPサーバ(TCP 80番ポート)に接続する場合でも、NATルータは各PCごとに異なる送信元ポート番号を割り当てて識別します。
つまり、NATテーブルの検索時には「アドレス+ポート番号」の組み合わせで判断するため、同じグローバルIPを共有していても通信を正しく区別できるのです。