ダイナミックNAT完全ガイド:仕組み・静的NAT/PAT比較、Cisco実装例と運用・トラブルシューティング
はじめに
インターネット接続やネットワーク設計の現場で頻繁に登場する「NAT(Network Address Translation)」。その中でも「ダイナミックNAT」は、プライベートIPアドレスとパブリックIPアドレスを動的に割り当てる方法としてよく使われます。本稿ではダイナミックNATの基本原理、静的NATやPAT(NAPT)との違い、実装例、運用上の注意点、トラブルシューティングやセキュリティ的観点まで、実務的かつ技術的に詳しく解説します。
ダイナミックNATとは(基本概念)
ダイナミックNATは、内部ネットワーク(プライベートIP)から外部ネットワーク(パブリックIP)へ送信する際に、事前に定めたパブリックIPアドレスプールから空いているアドレスを動的に割り当て、通信が終了または一定時間アイドルするとその割当てを解放する仕組みです。要点は次のとおりです。
- 1:1(IPアドレス単位)の変換を行う。
- 割り当ては「先着順(first-come-first-served)」で行われ、同じパブリックIPを複数の内部ホストで同時に共有することは基本的に行われない。
- 内部からのアウトバウンド接続のために使われ、外部から内部へ直接到達させるには静的なエントリやポートフォワーディングが別途必要になる。
ダイナミックNATの動作原理
ダイナミックNATを行うデバイスは、内部ホストの送信パケットを受け取ると翻訳テーブルを参照します。既存のエントリがあればそれを使い、なければプールから未使用のグローバルIPを割り当て、対応するマッピングを作成します。通常、そのマッピング(翻訳エントリ)は状態を持ち、一定のアイドルタイムアウト後に削除されます。
- 翻訳テーブルは「内部IP:内部ポート ↔ 外部IP:外部ポート(場合によりポートはそのまま)」という形で保持される(実装により表現は異なる)。
- TCPやUDPなどのプロトコルごとにタイムアウト値は異なり、ベンダーや設定で調整可能。
- エントリが存在する間は、外部からその外部IPに到着した応答パケットを内部ホストへ戻すことができる。
静的NAT・PAT(NAPT)との違い
NATの主要な種類とダイナミックNATの位置づけを整理します。
- 静的NAT(Static NAT): 特定の内部IPを常に特定の外部IPへ1対1でマッピングする。サーバ公開などに利用。
- ダイナミックNAT: 内部からの要求に応じてプールから外部IPを割り当てる1対1のマッピング。アウトバウンド中心。
- PAT / NAPT(ポートアドレス変換): 1つまたは少数のグローバルIPを複数の内部ホストで共有し、ポート番号で識別する。アドレス節約に有効。
まとめると、ダイナミックNATは「割り当ては動的だがマッピングはIP単位(1:1)」、PATは「ポートを使った多対1」であり、用途や必要なパブリックIP数によって選択されます。
代表的な用途と設計上の考慮点
ダイナミックNATは次のような場面で使われます。
- パブリックIPを複数保有しているが、内部ホスト数がその同時接続数を超えない環境(短時間で同時にアクセスするクライアント数が限られる場合)。
- セキュリティ上、内部ホストを固定の公開IPで公開したくない場合(ただし外部からの着信を許可する必要があるなら静的NATが必要)。
- 一時的に追加する外向き接続を管理したい場合。
考慮点としては、プールサイズと同時接続数の計画、翻訳テーブルのメモリ/CPU負荷、特定アプリケーション(IP内埋め込み情報を持つプロトコル)への対応、ログやデバッグ運用などが挙げられます。
実装例(Cisco IOSでの設定例)
代表的な実装例として、Cisco IOSでの簡単なダイナミックNATの設定を示します。
!-- パブリックIPのプール定義
ip nat pool MYPOOL 203.0.113.10 203.0.113.20 netmask 255.255.255.0
!-- 内部ネットワークを定義するACL(翻訳対象)
access-list 10 permit 192.168.1.0 0.0.0.255
!-- 内部→外部へプールを使用するダイナミックNAT設定
ip nat inside source list 10 pool MYPOOL
!-- インターフェースの設定
interface GigabitEthernet0/0
ip address 192.168.1.1 255.255.255.0
ip nat inside
interface GigabitEthernet0/1
ip address 203.0.113.1 255.255.255.0
ip nat outside
確認コマンドの例:
- show ip nat translations — 現在の翻訳エントリを表示
- show ip nat statistics — NATの統計情報を表示
- clear ip nat translation <entry> — エントリ削除(デバッグ用)
セッション管理とタイムアウト
翻訳エントリにはタイムアウトがあり、アイドル時間が経過すると解放されます。タイムアウト値は実装やプロトコルによって異なり、一般的には:
- TCP(確立済み): 長め(数分〜数時間)
- TCP(未確立/SYN): 短め
- UDP: 非接続型のため短め(数十秒〜数分)に設定されることが多い
タイムアウト設定は過度に短くすると長時間の通信や応答が途切れてしまう一方、過度に長くするとプール枯渇や翻訳テーブル肥大の原因となります。運用ではプロトコルの性質と接続頻度を踏まえて調整します。
アプリケーション互換性(問題となるプロトコル)
NATはパケットヘッダのIPアドレスを変更しますが、アプリケーションによってはパケット内にIPアドレスやポートを埋め込んでいる場合があり、単純なNATでは通信が成立しないことがあります。代表例:
- FTP(アクティブモード): ペイロードにIP/ポート情報が含まれるため、ALG(Application Layer Gateway)やFTPプロキシが必要となることがある。
- SIP(VoIP): SDP内のIPアドレス/ポートが問題になる。SIP ALGやSTUN/TURN/ICEなどのNATトラバーサル技術が用いられる。
- IPsec(AH): AHはIPヘッダに対する認証を行うため、NATによるIPヘッダ変更はAHを破壊する。NAT越えのためにNAT-T(UDPラッピング)などを使う。
これらはNATの「破壊的影響」として現場でよく遭遇するため、必要に応じてALGs、プロキシ、あるいはアプリケーション側のNAT対応機能を使う必要があります。
制限・運用上の問題点
ダイナミックNATにはいくつかの制限・注意点があります。
- プール枯渇: 同時に外部接続を必要とする内部ホスト数がプールのサイズを超えると、新規接続は失敗する。
- 外部から内部への着信: 基本的に内部からの発信によってのみマッピングが作られるため、外部からの任意着信はできない(公開するサービスには静的NATやポートフォワーディングが必要)。
- ログ・フォレンジック: 動的に変わるため、トラブル時やセキュリティ監査で誰がいつどのパブリックIPを使っていたかを追うには翻訳ログの保管が必要。
- IPベースの認証やアクセス制御の影響: 公開IPが変わるとログインIP制限などが機能しない場合がある。
スケーラビリティとキャリア環境(CGN)
IPv4アドレス枯渇に伴い、ISPレベルで大量のユーザをさばくためにCarrier-Grade NAT(CGN、Large Scale NAT)が使われます。CGNは多くの場合NAPTを用いて多数の顧客を少数のパブリックIPで共有しますが、ダイナミックNAT的なプール割当ての考え方も採用されます。CGNではログ保管、トラブル時の顧客識別、ポート枯渇への対応など運用面の課題がさらに重くなります。
トラブルシューティングのポイント
運用中に発生しやすい問題とチェックする項目を列挙します。
- 「通信できない」場合: NATプールの空き(プール枯渇)を確認する(show ip nat statistics / translations)。
- 「外部からの応答が来ない」場合: 翻訳エントリが作成されているか(show ip nat translations)を確認。
- 「一部アプリケーションだけ動かない」場合: FTPやSIP等のALGsの有効化、あるいはパケットキャプチャでペイロード内IPを確認。
- 「IPsecが動かない」: AHの問題やNAT越えのためのNAT-Tの有無を確認。
- ログが必要な場合: NATイベントのログ機能を有効にし、長期保存ポリシーを設計する。
ベストプラクティス
実運用での推奨事項:
- 必要最小限のパブリックIP数を見積もり、余裕を持ったプールサイズを用意する。
- タイムアウト値はアプリケーション特性に合わせて調整する(UDPが多ければ短く、長時間接続を伴うTCPは長めなど)。
- 問題追跡のためのログと翻訳テーブルの定期的な記録を行う。
- アプリケーション特有の問題(FTP/SIP等)にはALGやプロキシ、トラバーサル技術を導入する。
- セキュリティポリシーとしてNATそのものをファイアウォール代替と見なさず、適切なアクセス制御と検査機能を併用する。
将来展望:IPv6とNATの関係
IPv6の普及は原則としてアドレス不足問題を解消し、NATの必要性を低下させます。設計上は「エンドツーエンド」の接続性回復が期待されますが、現実にはIPv4との共存期が長く、移行中はNAT(およびCGN)の運用が継続する見込みです。また、セキュリティやポリシー面でNAT的な役割が必要な場合は、アドレス変換に代わる機能(ファイアウォール、プロキシ、トランスレーションアプライアンス等)に注力することになります。
まとめ
ダイナミックNATは、プライベートIPとパブリックIPを動的に1:1で紐づける仕組みで、アウトバウンド通信に便利な一方、プール枯渇や特定プロトコルとの互換性問題、外部からの着信不可といった制約があります。設計ではパブリックIPの数、タイムアウト、ログポリシー、アプリケーションの特性を踏まえた上で、静的NATやPATと組み合わせるなど柔軟な構成を採ることが重要です。
参考文献
- RFC 2663 - IP Network Address Translator (NAT) Terminology and Considerations
- RFC 3022 - Traditional IP Network Address Translator (Traditional NAT)
- RFC 4787 - Network Address Translation (NAT) Behavioral Requirements for Unicast UDP
- IANA - Special-Purpose Address Registry (RFC1918 プライベートアドレスに関する情報)
- Cisco - NAT Overview / Configuring NAT(製品ドキュメント)


