この記事の要点
• NATはプライベートIPとグローバルIPを相互変換する技術
• 家庭ルーターで使われるのはNAPT(ポート番号も変換)
• RFC 1918で定義されたプライベートIP範囲(10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)
NATとは
NAT(Network Address Translation / ネットワークアドレス変換)は、プライベートIPアドレスとグローバルIPアドレスを相互変換する技術です。IPv4アドレスの枯渇問題を緩和するために広く使われています。
なぜ必要か: IPv4アドレスは約43億個しかなく、世界中のすべての機器に割り当てることができません。NATにより、1つのグローバルIPアドレスを複数の機器で共有できます。
プライベートIPとグローバルIP
グローバルIPアドレス
インターネット上で一意に識別される公開IPアドレスです。
- 特徴: 世界中で重複しない、ISPから割り当てられる
- 用途: Webサーバー、メールサーバー、インターネット接続
- 例:
8.8.8.8(Google DNS)、93.184.216.34(example.com)
プライベートIPアドレス
組織内のローカルネットワークでのみ使用されるIPアドレスです。
- 特徴: インターネット上でルーティングされない、自由に使える
- 用途: 家庭内LAN、企業内ネットワーク
- 例:
192.168.1.10(家庭内PC)、10.0.1.5(企業内サーバー)
プライベートIPアドレスの範囲(RFC 1918)
| クラス | アドレス範囲 | CIDR表記 | アドレス数 | 主な用途 |
|---|---|---|---|---|
| クラスA | 10.0.0.0 - 10.255.255.255 | 10.0.0.0/8 | 約1677万個 | 大規模企業ネットワーク |
| クラスB | 172.16.0.0 - 172.31.255.255 | 172.16.0.0/12 | 約104万個 | 中規模ネットワーク |
| クラスC | 192.168.0.0 - 192.168.255.255 | 192.168.0.0/16 | 約65,000個 | 家庭・小規模オフィス |
ポイント: プライベートIPアドレスは組織ごとに重複して使用できます。Aさんの家と Bさんの家の両方で `192.168.1.1` を使っても問題ありません。
その他の特殊なIPアドレス
| 範囲 | 用途 |
|---|---|
127.0.0.0/8 | ループバック(127.0.0.1 = localhost) |
169.254.0.0/16 | リンクローカル(DHCP失敗時の自動割り当て) |
0.0.0.0/8 | デフォルトルート、未指定アドレス |
224.0.0.0/4 | マルチキャスト |
240.0.0.0/4 | 予約済み(将来の利用) |
NATの基本動作
通信の流れ
内部ネットワーク NAT ルーター インターネット
[PC-A] 192.168.1.10 ──→ [NAT] 203.0.113.5 ──→ [Webサーバー] 93.184.216.34
│
送信元IPを変換
192.168.1.10 → 203.0.113.5
変換テーブル(NAT Table)
| 内部IP | 外部IP | 状態 |
|---|---|---|
| 192.168.1.10 | 203.0.113.5 | 変換中 |
| 192.168.1.11 | 203.0.113.5 | 変換中 |
問題点: 複数の内部機器が同じグローバルIPに変換されると、応答パケットをどの機器に返すべきか判別できません。この問題を解決するのがNAPTです。
NAPT(ポート番号も変換)
NAPT(Network Address Port Translation)またはPAT(Port Address Translation)は、IPアドレスだけでなくポート番号も変換することで、1つのグローバルIPアドレスを複数の機器で共有します。
NAPTの動作
内部 NAT ルーター 外部
192.168.1.10:52341 ──→ 203.0.113.5:10001 ──→ 93.184.216.34:443
192.168.1.11:52342 ──→ 203.0.113.5:10002 ──→ 93.184.216.34:443
│
IPアドレスとポート番号を両方変換
NAPT変換テーブル
| 内部IP:ポート | 外部IP:ポート | 宛先IP:ポート | プロトコル |
|---|---|---|---|
| 192.168.1.10:52341 | 203.0.113.5:10001 | 93.184.216.34:443 | TCP |
| 192.168.1.11:52342 | 203.0.113.5:10002 | 93.184.216.34:443 | TCP |
| 192.168.1.10:54321 | 203.0.113.5:10003 | 8.8.8.8:53 | UDP |
ポイント: 家庭用ルーターや企業ファイアウォールで使われているのは、通常NATではなくNAPTです。ポート番号を変換することで、数千台の機器を1つのグローバルIPで共有できます。
家庭用ルーターでのNAT/NAPT
典型的な家庭ネットワーク
インターネット(ISP)
│
│ グローバルIP: 203.0.113.5
│
┌───┴───┐
│ ルーター │ (NAT/NAPT機能)
└───┬───┘
│ プライベートIPネットワーク: 192.168.1.0/24
├─ [PC] 192.168.1.10
├─ [スマホ] 192.168.1.11
├─ [タブレット] 192.168.1.12
└─ [プリンター] 192.168.1.20
通信の例:PCからWebサイト閲覧
- 送信(PC → Webサーバー)
送信元: 192.168.1.10:52341
宛先: 93.184.216.34:443 (HTTPS)
ルーター通過後:
送信元: 203.0.113.5:10001 ← NAPTで変換
宛先: 93.184.216.34:443
- 受信(Webサーバー → PC)
送信元: 93.184.216.34:443
宛先: 203.0.113.5:10001
ルーター通過後:
送信元: 93.184.216.34:443
宛先: 192.168.1.10:52341 ← 変換テーブルで復元
NATの種類
Static NAT(静的NAT)
1つのプライベートIPを1つのグローバルIPに固定でマッピングします。
| 内部IP | 外部IP |
|---|---|
| 192.168.1.10 | 203.0.113.10 |
| 192.168.1.11 | 203.0.113.11 |
用途: 社内サーバーを外部公開する場合
Dynamic NAT(動的NAT)
プライベートIPを、プールされたグローバルIPの中から動的に割り当てます。
グローバルIPプール: 203.0.113.10 - 203.0.113.20
制限: プールのサイズ分の機器しか同時接続できない
NAPT / PAT(ポート変換)
1つのグローバルIPを複数のプライベートIPで共有します(最も一般的)。
用途: 家庭用ルーター、小規模オフィス
実践メモ: 家庭用ルーターの「NAT設定」は、実際にはNAPT(ポート変換込み)を指しています。
ポートフォワーディング(静的NAPT)
外部からの接続を特定の内部機器に転送する設定です。
設定例
外部からのアクセス:
203.0.113.5:8080 → 192.168.1.10:80 (内部Webサーバー)
203.0.113.5:2222 → 192.168.1.10:22 (内部SSHサーバー)
ルーター設定(概念図)
| 外部ポート | プロトコル | 内部IP | 内部ポート |
|---|---|---|---|
| 8080 | TCP | 192.168.1.10 | 80 |
| 2222 | TCP | 192.168.1.10 | 22 |
| 25565 | TCP | 192.168.1.20 | 25565 |
用途:
- 自宅サーバーの公開
- ゲームサーバーのホスティング
- リモートアクセス(VPNやRDP)
注意: ポートフォワーディングでサービスを公開すると、外部から攻撃を受ける可能性があります。不要なポートは開放しないでください。
NATの問題点
1. エンドツーエンド通信の破壊
NATはインターネットの「エンドツーエンド原則」(すべての端末が直接通信できる)を破壊します。
従来(NAT なし):
[PC A] ←─────────────→ [PC B]
直接通信可能
NAT 環境:
[PC A (プライベートIP)] ─× ← [PC B (プライベートIP)]
直接通信不可
2. P2P通信の困難さ
両端がNATの内側にいる場合、直接通信ができません。
影響を受けるアプリケーション:
- ビデオ会議(Zoom、Teams、Google Meet)
- P2Pファイル共有(BitTorrent)
- オンラインゲーム(P2P型)
- VoIP(SIP、WebRTC)
3. プロトコルの制限
一部のプロトコルはNATを通過できません(FTP Active Mode、一部のVPNなど)。
4. パフォーマンスへの影響
ルーターでの変換処理がオーバーヘッドになります。
NAT越え(NAT Traversal)
NATの問題を回避して、プライベートIP同士で通信するための技術です。
主要な技術
| 技術 | 正式名称 | 仕組み |
|---|---|---|
| STUN | Session Traversal Utilities for NAT | 自分のグローバルIPとポートを発見 |
| TURN | Traversal Using Relays around NAT | リレーサーバー経由で通信 |
| ICE | Interactive Connectivity Establishment | STUN/TURNを組み合わせて最適な経路を選択 |
STUN(自分のグローバルIPを発見)
1. クライアントがSTUNサーバーに問い合わせ
2. STUNサーバーが「あなたのグローバルIPは 203.0.113.5:10001 です」と返答
3. この情報を相手に伝えて直接通信
制限: 対称型NATでは動作しない
TURN(リレーサーバー経由)
[クライアントA] → [TURNサーバー] ← [クライアントB]
直接通信できない場合、TURNサーバーが中継
デメリット: サーバー負荷が高い、遅延が増加
ICE(最適な経路を自動選択)
1. STUN で直接接続を試行
2. 失敗した場合、TURN にフォールバック
3. 複数の候補経路から最適なものを選択
採用例: WebRTC、Skype、Zoom
ポイント: ZoomやGoogle Meetなどのビデオ会議システムは、ICE技術を使ってNATを越えた直接通信(P2P)を試み、失敗時にはリレーサーバー経由にフォールバックします。
NATとIPv6
IPv6ではNAT不要
IPv6は膨大なアドレス空間(128ビット = 約340澗個)を持つため、すべての機器にグローバルアドレスを割り当てられます。
IPv4 + NAT:
[PC] 192.168.1.10 → [ルーター] 203.0.113.5 → インターネット
IPv6(NAT不要):
[PC] 2001:db8::10 → インターネット(直接通信)
NPTv6(IPv6でのアドレス変換)
IPv6でもアドレス変換を行う技術(主にセキュリティ目的)。
用途:
- ISP変更時のアドレス再割り当ての簡素化
- 内部ネットワークの隠蔽
注意: NPTv6は一般的ではありません。IPv6ではファイアウォールで保護しつつ、NAT不要の設計が推奨されます。
NATの確認方法
自分のグローバルIPを確認
# コマンドラインで確認
curl ifconfig.me
curl ipinfo.io/ip
curl icanhazip.com
# Webサービス
https://www.whatismyip.com/
内部IPを確認
# Linux/macOS
ip addr show
ifconfig
# Windows
ipconfig
NATテーブルの確認(ルーター管理画面)
多くのルーターでは「NAT変換テーブル」や「セッション一覧」として確認できます。
内部IP:ポート 外部IP:ポート 宛先IP:ポート プロトコル
192.168.1.10:52341 → 203.0.113.5:10001 → 93.184.216.34:443 TCP
まとめ
NATはプライベートIPとグローバルIPを相互変換する技術で、IPv4アドレス枯渇問題の応急処置として広く使われています。家庭用ルーターで使われるのはNAPT(ポート番号も変換)で、1つのグローバルIPを複数機器で共有できます。プライベートIPの範囲はRFC 1918で定義され、10.0.0.0/8、172.16.0.0/12、192.168.0.0/16が使用されます。NATはエンドツーエンド通信を破壊するため、STUN/TURN/ICEなどのNAT越え技術が発展しました。IPv6では膨大なアドレス空間によりNAT不要になります。
注意: NATはセキュリティ機能ではありません。内部ネットワークを守るにはファイアウォールが必要です。NATは「副次的に内部を隠す効果」があるだけです。
参考リソース
- RFC 3022 - Traditional IP Network Address Translator (Traditional NAT)
- RFC 1918 - Address Allocation for Private Internets
- RFC 5389 - STUN (Session Traversal Utilities for NAT)
- RFC 8656 - TURN (Traversal Using Relays around NAT)
- RFC 8445 - ICE (Interactive Connectivity Establishment)
- Cloudflare Learning - What is NAT?