はじめに
家庭や会社のパソコンには、192.168.x.xや10.x.x.xのようなプライベートIPアドレスが設定されていることがあります。プライベートIPアドレスはそのままインターネット上の通信相手へ届けるためのアドレスではありませんが、実際には複数の端末から同時にWebサイトへアクセスできます。
この通信を支えている代表的な仕組みがNAT(Network Address Translation)とNAPT(Network Address Port Translation)です。この記事では、NATが何を変換するのか、NATとNAPTは何が違うのか、そしてNAPTによって複数の端末が1つのグローバルIPv4アドレスを共有できる仕組みを解説します。
NATとは
NATは、通信がネットワークの境界を通過するときに、IPアドレスを別のIPアドレスへ変換する仕組みです。家庭や社内LANではプライベートIPアドレスを使用し、インターネット側との通信ではグローバルIPアドレスへ変換する構成が代表的です。
グローバルIPアドレスとプライベートIPアドレスの役割や範囲については、「グローバルIPアドレスとプライベートIPアドレスの違いとは?IPv4の範囲と使い分けを解説」で詳しく解説しています。
NATにはいくつかの方式があります。基本を理解するときは、IPアドレスを変換するBasic NATと、IPアドレスに加えてTCPやUDPのポート番号も利用して通信を対応付けるNAPTを区別すると分かりやすくなります。
NATとNAPTの違い
Basic NATとNAPTの大きな違いは、通信を区別するためにポート番号まで扱うかどうかです。
| 項目 | Basic NAT | NAPT |
|---|---|---|
| 主に変換・対応付けする情報 | IPアドレス | IPアドレスとポート番号 |
| 1つの外部IPv4アドレスを複数端末で共有 | 向かない | できる |
| 主な用途のイメージ | 内部と外部のIPアドレスを対応付ける | 多数の内部通信を1つの外部IPv4アドレスへ集約する |
Basic NATではIPアドレスを中心に対応付けます。そのため、同時に多数の端末を1つのグローバルIPv4アドレスだけで区別する用途には向きません。
NAPTでは、TCPやUDPのポート番号も含めて通信を対応付けます。たとえば複数の端末が同じWebサーバーへ接続していても、外部側で異なるポート番号を割り当てれば、戻ってきた通信をどの端末へ渡すべきか区別できます。
ポート番号そのものの役割については、「ポート番号とは?3つの範囲と通信を識別する仕組みを解説」を参照してください。
NAPTで複数端末が通信できる仕組み
NAPT対応ルーターは、内部端末からインターネットへパケットを転送するとき、送信元のプライベートIPアドレスを外部側のグローバルIPv4アドレスへ変換します。同時に、TCPやUDPでは送信元ポート番号も含めて通信を識別し、変換前と変換後の対応を変換テーブルへ記録します。
たとえば、10.0.0.10と10.0.0.11という2台の端末が、どちらも送信元ポート1025を使って同じサーバーへ通信するとします。そのままでは外部から戻る通信を区別できないため、NAPTルーターは一方を202.244.174.37:1025、もう一方を202.244.174.37:1026のように別々の組み合わせへ対応付けられます。

サーバーから応答が返ってくると、ルーターは宛先となっているグローバルIPv4アドレスとポート番号を変換テーブルと照合します。そして、対応する内部端末のプライベートIPアドレスとポート番号へ戻して転送します。
このようにNAPTは、1つのグローバルIPv4アドレスを使いながら、通信ごとの対応関係を管理することで複数端末の通信を成立させています。
NATでは外部から直接接続しにくい理由
内部端末から始めた通信では、NAPTルーターが変換情報を持っているため、戻ってきたパケットを元の端末へ転送できます。
一方、インターネット側から新しく通信を開始した場合、対応する変換情報がなければ、ルーターはその通信をどの内部端末へ渡すべきか判断できません。そのため、動的に作られるNAPTの変換情報だけでは、外部から内部のサーバーへ新規接続できません。
外部から特定の端末へ通信を届ける場合には、ポートフォワーディングなど、外部側の通信をどの内部端末へ渡すかをあらかじめ定める仕組みが使われます。NAT越えにはほかにも複数の方法がありますが、詳しい仕組みはこの記事の中心範囲には含めません。
CGNとは
CGN(Carrier Grade NAT)は、通信事業者側で多数の利用者のIPv4通信を変換し、限られたグローバルIPv4アドレスを共有する仕組みです。家庭用ルーターなどのNATに加えて通信事業者側でもNATが行われると、利用者から見るとNATが複数段存在する構成になります。
CGNで通信事業者と利用者側装置の間に使うため、100.64.0.0/10というShared Address Spaceが予約されています。これは192.168.0.0/16など、RFC 1918で定義されたプライベートIPv4アドレスとは別のアドレス範囲です。
CGNもIPv4アドレスを多くの利用者で共有するための仕組みですが、外部からの接続や通信の識別などでは、家庭内だけでNATを使う場合より制約が増えることがあります。
IPv6とNATの関係
IPv6は非常に大きなアドレス空間を持つため、IPv4のように「グローバルIPアドレスを節約するためにNATを使う」という必要性は基本的にありません。これはIPv6で境界のセキュリティ対策が不要という意味ではなく、通信を許可・拒否する制御はNATとは分けて考えます。
ただし、IPv6とIPv4の間で通信するためにアドレスやプロトコルを変換する仕組みはあります。たとえばNAT64は、IPv6ネットワークからIPv4サーバーへ通信する際などに利用される変換技術です。IPv6自体の基本については、「IPv6とは?IPv4との違いと128ビットアドレスの基本を解説」で解説しています。
まとめ
NATは、ネットワークの境界でIPアドレスを別のIPアドレスへ変換する仕組みです。その中でもNAPTは、IPアドレスだけでなくTCPやUDPのポート番号も利用して通信を対応付けるため、複数の内部端末で1つのグローバルIPv4アドレスを共有できます。
NAPTルーターは、変換前と変換後の組み合わせを変換テーブルで管理し、戻ってきた通信を正しい内部端末へ転送します。NATとNAPTの違いを理解すると、家庭や社内LANの端末がプライベートIPアドレスを使いながらインターネットへ通信できる理由を説明できるようになります。