5.

NAT・NAPTとは|IPマスカレード・ポート変換・NAT越え(STUN/TURN)・CGNを解説

編集
この記事の要点
  • NAT はプライベート IP とグローバル IP を相互変換し、限られたグローバルアドレスを共有する技術。
  • NAPT(IP マスカレード/PAT)はポート番号も書き換え、1 個のグローバル IP を複数端末で共有する。
  • NAPT は送信元 IP+ポートと変換後ポートの対応表(NAT テーブル)を保持して戻りの通信を振り分ける。
  • 外部から内部へ自発的に接続できない問題を解決するのが NAT 越え(STUN/TURN/ポートフォワーディング)。
  • CGN(キャリアグレード NAT)は ISP が複数の加入者で 1 つのグローバル IP を共有させる大規模 NAT。
  • IPv6 ではアドレスが潤沢なため、アドレス節約目的の NAT は原則不要になると議論されている。

概要

NAT(Network Address Translation、ネットワークアドレス変換)は、組織内で使うプライベート IP アドレスと、インターネット上で通用するグローバル IP アドレスを相互に変換する技術です。IPv4 アドレスは枯渇しているため、家庭や企業の多数の端末すべてにグローバル IP を割り当てることは現実的ではありません。そこで内部ではプライベート IP を使い、インターネットへ出る境界(ルータ)でグローバル IP に変換することで、限られたアドレスを共有します。

現在広く使われているのは、IP アドレスだけでなくポート番号も変換する NAPT(Network Address Port Translation。IP マスカレード、PAT とも)です。これにより 1 個のグローバル IP を複数の内部端末で同時に共有でき、家庭用ルータのインターネット接続はほぼこの仕組みで成り立っています。

仕組み

NAPT ルータは、内部端末が外部へ通信を始めるたびに「内部の IP+ポート」と「変換後のグローバル IP+ポート」の対応をNAT テーブルに記録します。戻りのパケットが届いたら、このテーブルを逆引きして本来の内部端末へ転送します。

内部端末 A 192.168.1.10:51000 ──┐
内部端末 B 192.168.1.11:51000 ──┤  ルータ (グローバル 203.0.113.5)
                                 ▼
NAT テーブル:
┌──────────────────────────┬──────────────────────────┐
│ 内部 (IP:Port)           │ 外部 (IP:Port)           │
├──────────────────────────┼──────────────────────────┤
│ 192.168.1.10:51000       │ 203.0.113.5:40001        │
│ 192.168.1.11:51000       │ 203.0.113.5:40002        │
└──────────────────────────┴──────────────────────────┘

送信元ポートが同じ 51000 同士でも、変換後ポート(40001/40002)で区別するため衝突しません。これが「1 個のグローバル IP を多数で共有できる」理由です。応答パケットは宛先ポート 40002 を見て、内部端末 B へ正しく戻されます。

具体例・計算

外部のサーバへ HTTP リクエストを送ったときの変換の流れを、パケットのヘッダ単位で追います。

① 内部 → ルータ (変換前)
   送信元 192.168.1.10:51000  宛先 93.184.216.34:80

② ルータが書き換え (送信元を変換) → インターネットへ
   送信元 203.0.113.5:40001   宛先 93.184.216.34:80
   ※ NAT テーブルに対応を記録

③ サーバ → ルータ (応答が戻る)
   送信元 93.184.216.34:80    宛先 203.0.113.5:40001

④ ルータが逆変換 → 内部端末へ
   送信元 93.184.216.34:80    宛先 192.168.1.10:51000

外部から内部のサーバへ自発的に接続させたい場合(自宅サーバの公開など)は、NAT テーブルに動的なエントリがないため、あらかじめ静的に対応を設定する「ポートフォワーディング(静的 NAT)」を使います。

ポートフォワーディング設定例:
外部 203.0.113.5:8080  →  内部 192.168.1.20:80

外部から http://203.0.113.5:8080/ にアクセスすると
内部の Web サーバ 192.168.1.20:80 へ転送される

P2P 通信や VoIP では、双方が NAT の内側にいると直接つながれないため、NAT 越え技術を使います。STUN は自分のグローバル IP+ポートを知るためのサーバ、TURN はどうしても直接つながらないときに通信を中継するサーバです。

主な用途

  • 家庭・企業のインターネット接続 — 1 本のグローバル IP で社内・家庭内の多数端末を同時に接続します。
  • アドレス節約 — IPv4 アドレスの消費を抑え、ISP の契約数を増やせます(CGN)。
  • セキュリティの副次効果 — 外部から内部の端末へ直接到達しにくくなり、簡易的な防御として働きます(本来の目的ではない)。
  • サーバ公開 — ポートフォワーディングで特定サービスだけを外部へ公開します。

関連技術との比較

項目NAT(静的/基本)NAPT(IP マスカレード/PAT)CGN(キャリアグレード)
変換対象IP アドレスのみIP + ポートIP + ポート(大規模)
共有数1 対 1 が基本多 対 1多数の加入者 対 少数 IP
設置場所境界ルータ家庭用/企業ルータISP 設備
外部からの着信静的設定で可原則不可(要ポート開放)困難(複数加入者で共有)

注意点・落とし穴

  • 外部から内部へ自発接続できない — P2P・オンラインゲーム・VoIP で問題になり、STUN/TURN/UPnP などの NAT 越えが必要です。
  • NAT テーブルのタイムアウト — 一定時間通信がないとエントリが消え、長時間アイドルのコネクションが切れます。キープアライブで対策します。
  • CGN 環境の制約 — 加入者間でグローバル IP を共有するため、ポート開放ができず、IP 単位の規制(あるサイトの IP BAN)が無関係な利用者に波及することがあります。
  • NAT はセキュリティ機能ではない — 着信を遮るのは副次効果に過ぎず、ファイアウォールの代わりにはなりません。
  • IPv6 での扱い — IPv6 はアドレスが潤沢なため、アドレス節約目的の NAT は原則不要とされます。エンドツーエンド通信を取り戻せる一方、NAT に依存した防御を別途設計し直す必要があります。

関連リンク

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. IPアドレス
  2. サブネットとサブネットマスク
  3. CIDR表記
  4. IPv6
  5. NAT・NAPT
  6. ポート番号
  7. MACアドレス

最近更新/作成されたページ