はじめに:NATが誕生した背景
1990年代後半、IPv4アドレス枯渇が現実味を帯び始めた。そこで登場したのがNetwork Address Translation (NAT)。プライベートIP空間とグローバルIP空間を相互変換し、家庭からエンタープライズ、クラウドまで広く普及した。本稿では、エンジニアが押さえるべきNATのメカニズム、実装、課題、そしてIPv6時代の展望を3000文字で俯瞰する。
1. NATの基礎知識
- アドレス枯渇対策:RFC1918で定義された10.0.0.0/8、172.16.0.0/12、192.168.0.0/16の私的アドレス空間を内部に、有限なグローバルアドレスを外部に配置。
- 基本コンセプト:転送経路上でIPヘッダを書き換え、送信元(SNAT)または宛先(DNAT)を置換。典型的ホームルータはNAPT(PAT)でポート番号まで多重化。
2. NATテーブルとアルゴリズム
ルータは《内部IP:内部ポート→外部IP:外部ポート》のマッピングエントリを生成し、一定時間アイドルで削除する。実装差分はあれど、多くはハッシュテーブルでO(1)ルックアップを実現。TCPは4タプル、UDPは5タプル+状態で管理し、ICMPは識別子で追跡する。
3. NATの分類
- SNAT:送信元IPを書き換えて外部へ。クラウドVPCのアウトバウンド通信に多用。
- DNAT:宛先IPを書き換えて内部へ。ポートフォワーディングの本質。
- NAPT(PAT):IP+ポートを併用し、数万ホストを1個のグローバルIPに集約。
- NAT64/46:IPv6 ↔ IPv4変換。移行期のゲートウェイとして機能。
- NAT66:IPv6↔IPv6のアドレス隠蔽。技術的には可能だが原則非推奨。
4. 代表的な実装例
- Linux iptables/nftables:
POSTROUTING -j MASQUERADEが典型。nf_conntrackで状態管理。 - Cisco ASA:
nat (inside,outside) dynamic interfaceによりSNAT。 - AWS NAT Gateway:スケーラブルなマネージドSNAT。1‐N変換を冗長構成で自動化。
5. NAT越え技術
- 直接方式:静的ポートフォワーディング、DMZ、UPnP/PCPによる自動開放。
- 中継方式:STUNで候補取得、TURNでメディアリレー、ICEで経路選択。WebRTCやVoIPで必須。
- トンネル方式:OpenVPN/WireGuardで仮想NICを張り、NATを透過する。
6. セキュリティと運用上の論点
- "NAT = ファイアウォール" は誤解。状態追跡は副次的効果に過ぎず、ACLやFWで明示的に制御を。
- ログ:NAPT環境では Syslog+NetFlow で外部ポートを含めて記録しなければ、利用者特定が困難。
- アプリ依存性:FTP, SIP, H.323 などアドレスをペイロードに埋め込むプロトコルはALG(Application Layer Gateway)が必要。
7. IPv6時代の再考
IPv6では各ホストがグローバルユニキャストアドレスを持ち、エンドツーエンド接続が復活する設計。ただし企業ポリシー上、アドレス秘匿や多段NAT66を導入するケースもゼロではない。ポイントは「NATで守る」のではなく、IPv6向けステートフルFWとIDS/IPSで層防御を行うこと。
8. コンテナ・マイクロサービスとNAT
Dockerはユーザ空間でveth + bridgeを組み、デフォルトでSNAT(MASQUERADE)を適用。Kubernetesではkube-proxyまたはCNIプラグインがNAT/Overlayを制御する。EgressトラフィックのIPを固定化したい場合、AWSのEgress-Only GatewayやStatic Egress NATが解となる。
9. NATスケールの課題と最適化
- CGN(Carrier Grade NAT):ISPが数百万セッションを束ねる。タイムアウト短縮やアグレッシブなポート再利用でスケール。
- ハードウェアオフロード:ASIC/SmartNICでNATルックアップを処理し、CPU負荷を削減。
10. まとめ:エンジニアが今押さえるべきポイント
- IPv4運用は当面続く。NATテーブル枯渇・ログ保全・ALGバグに備える。
- 新規システムはIPv6ネイティブ+FWを前提設計し、NAT依存を減らす。
- NAT越え要件(VoIP/リアルタイム通信)は初期段階で設計に織り込む。
- クラウドではNAT Gateway/Transit Gatewayの料金と性能上限を把握し、必要ならPrivateLinkやDirect Connectを検討。
Key Takeaway: NATはIPv4の延命装置から、クラウド/コンテナ時代のトラフィック制御技術へと役割を変えつつある。IPv6普及後も“アドレス変換”という考え方自体は残るが、セキュリティと観測性を両立させるためには、NAT以外の層での設計が不可欠だ。