NAT (Network Address Translation) は、パケットがルータ (境界) を通るときに送信元 / 宛先の IP アドレスを書き換える技術。自宅の何台もの端末が 192.168.x.x という同じような番号なのに、外から見ると全部 1 つの公開 IP に見えるのは NAT のおかげ。とくにポート番号まで使い分けて「多数 : 1」を実現する PAT (NAPT / IP マスカレード) が、いま家庭・社内のほぼ全ルータで動いている。本稿では NAT が生まれた理由 / 種類 / 変換テーブルの動作 / ポートフォワーディング / NAT が壊す副作用 / そして「NAT ≠ ファイアウォール」までを扱う。
NAT とは — 国境でアドレスを書き換える #
NAT は、プライベートな世界 (LAN) と 公開された世界 (インターネット) の境目に立つ通訳。中から外へ出るパケットの送信元 IP を公開 IP に貼り替え、戻ってきた返信を元の端末に貼り直す。
社内には内線 (プライベート IP) がたくさんあるが、外から見える番号は代表電話 1 本 (公開 IP)。外線に発信すると相手には代表番号が表示され、かかってきた電話は交換手 (ルータ) が正しい内線に取り次ぐ。「どの内線が今どの相手と話しているか」を交換手が台帳で管理している — これが NAT の変換テーブル。
なぜ生まれたか — IPv4 枯渇とプライベートアドレス #
IPv4 のアドレスは約 43 億個しかなく、早くから枯渇が見えていた。そこで「外に出ない内輪用の番号」= プライベートアドレス (RFC 1918) を定め、外と話すときだけ NAT で公開 IP に変換する方式が普及した。
| 範囲 | CIDR | よく使う場所 |
|---|---|---|
| 10.0.0.0 – 10.255.255.255 | 10.0.0.0/8 | 大規模社内 |
| 172.16.0.0 – 172.31.255.255 | 172.16.0.0/12 | 中規模 / Docker 等 |
| 192.168.0.0 – 192.168.255.255 | 192.168.0.0/16 | 家庭 / 小規模 |
これらの番号はインターネット上でルーティングされない。だから外と通信するには必ず NAT (または IPv6) が要る。
3 つの種類 — Static / Dynamic / PAT #
| 種類 | 対応 | 用途 |
|---|---|---|
| Static NAT | 1 : 1 固定 | 公開サーバに常に同じ公開 IP を割り当てる |
| Dynamic NAT | 多 : 多 (プール) | 公開 IP の在庫から空きを動的に貸す |
| PAT / NAPT | 多 : 1 (+ポート) | 家庭・社内の定番。1 つの公開 IP を全端末で共有 |
世の中で「NAT」と言えばほぼ PAT を指す。Linux では MASQUERADE、家庭用ルータでは「IP マスカレード」と呼ばれる、あの機能。
PAT の仕組み — ポートで多数を 1 つにまとめる #
「多数 : 1」をどう実現するのか。答えはポート番号。ルータは「内側の IP:ポート」と「公開 IP:書き換え後ポート」の対応を変換テーブルに記録し、戻りのパケットを逆引きして正しい端末へ返す。
192.168.1.10:51000 → 宛先 93.184.216.34:443。ルータが送信元を公開 IP:新ポート 203.0.113.5:40001 に書き換え、対応をテーブルに記録。203.0.113.5:40001 宛に返す。ルータはテーブルを逆引きし、宛先を本来の 192.168.1.10:51000 に戻して LAN 内へ。40002 を割り当てる。ポートで見分けるから 1 つの公開 IP に何百台でも相乗りできる。ポートフォワーディング — 外から中のサーバへ繋ぐ #
PAT は「中→外」の通信を前提にしている。テーブルは中からの発信で初めて作られるので、外から勝手に中へは入れない。自宅でゲームサーバや Web を公開したいときは、ルータに手動で道を作る — これが ポートフォワーディング (DNAT / 静的ポート変換)。
# 外からの 203.0.113.5:8080 を 192.168.1.50:80 へ転送する設定
WAN 203.0.113.5 : 8080 ──▶ LAN 192.168.1.50 : 80
# Linux ルータなら iptables の DNAT で同等
$ iptables -t nat -A PREROUTING -p tcp --dport 8080
-j DNAT --to-destination 192.168.1.50:80
ポートフォワーディングは「インターネットに直接口を開ける」行為。古いルータ管理画面、RDP (3389)、SMB (445)、未認証の IoT などを安易に転送すると即スキャンされ侵入される。UPnP による自動穴あけも、マルウェアに悪用される典型。公開するなら最小限・認証必須・パッチ必須。
NAT が壊すもの — エンドツーエンドの代償 #
NAT は便利だが、「すべての端末が直接届き合う」というインターネット本来の前提を崩す。そのため副作用がある。
- 外からの接続開始ができない — P2P・オンライン対戦・在宅サーバが素直に繋がらない。
- VoIP / ビデオ通話 — 双方が NAT の内側だと直接繋げないため、
STUN(自分の公開アドレスを知る) /TURN(中継サーバ経由) / ICE で穴を開ける。 - CGNAT (キャリアグレード NAT) — IPv4 枯渇が深刻化し、ISP 側でさらに NAT を重ねる構成。利用者は公開 IP すら持たず、ポート開放もできないことがある。
- IPv6 という本来の解 — アドレスが膨大な IPv6 では原則 NAT は不要で、エンドツーエンドが復活する。
セキュリティ上の意味 — 「NAT はファイアウォールではない」 #
PAT の副産物として「外から勝手に入れない」性質があるため、NAT を防御だと誤解しがち。だが NAT の目的はアドレス変換であって、フィルタリングではない。
| 項目 | NAT(PAT) | ファイアウォール |
|---|---|---|
| 外→中の未要求接続を遮断 | 副産物として概ね遮断 | 明示的に制御 |
| 中→外の通信を制御 | 素通し | ポリシーで制御 |
| マルウェアの外部通信を止める | 止めない | 止められる |
中で動くマルウェアの C2 通信 (中→外) は NAT を平然と通り抜ける。境界にはきちんとしたステートフルファイアウォールを置き、NAT はあくまでアドレス変換役と割り切る。
まとめ — 押さえる 5 点 #
- NAT はルータで IP アドレスを書き換える技術。生まれた理由は IPv4 枯渇。
- 定番は PAT (NAPT / IP マスカレード)。ポート番号で多数の端末を 1 公開 IP に相乗りさせる。
- 戻りは変換テーブルの逆引きで正しい端末へ返る。
- 外→中はテーブルがないため入れない。公開したいなら ポートフォワーディング (DNAT)(=攻撃面が増える)。
- NAT はファイアウォールではない。中→外は素通し。境界には別途 FW を置く。