0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

#0167(2025/06/13)NATの解説

Posted at

はじめに: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以外の層での設計が不可欠だ。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?