NAT(Network Address Translation)の基本概念
NATは、パケットがネットワークを通過するときにIPアドレスを別のIPアドレスへ書き換える技術である。
主な目的は次の通り。
- アドレス空間の節約:プライベートIP → グローバルIPへの変換
- 内部アドレス体系の隠蔽:ネットワーク構成の表出を防ぐ
- 柔軟性の確保:内部アドレス変更を外部に影響させずに運用できる
なお、NAT自体はセキュリティ機能ではなく、あくまでアドレス変換の仕組みである。
外部からの不正アクセスを防ぐのは、ファイアウォールのステートフル検査やポリシー設定が担う。
NATの種類と役割
ファイアウォールで扱う主要なNATは以下の4種類。
SNAT(Source NAT)
送信元アドレスを変換する。
内部ネットワークから外部へ出る際に利用される。
例
内部PC(192.168.1.10)が外部へ出るとき、
送信元を 203.0.113.5 に書き換える。
DNAT(Destination NAT)
外部から内部へ入る通信の宛先アドレスを変換する。
いわゆるポートフォワーディングに該当する。
例
203.0.113.5:80 → 内部Webサーバ 192.168.1.20:80
PAT(NAPT:Port Address Translation)
1つのグローバルIPを複数端末で共有するため、IPだけでなくポート番号も変換する技術。
家庭用ルータのNATの大半はこの仕組み。
Static NAT(固定NAT)
1対1でIPを固定的に対応させる。
サーバなどで安定した外部アクセスが必要な場合に使用する。
NATとファイアウォールの関係
NATは単にアドレス変換を行うだけであり、通信を許可するかどうかはファイアウォールのポリシーによって決まる。
- 新しいセッションの開始には明示的な許可ルールが必要
- 既存セッションの戻り通信は、ステートフル機能により自動的に許可される
このため、DNATを設定しても、ファイアウォールのアクセスルールを許可しなければ通信は成立しない。
代表的な構成例
外部公開サーバ(DNAT)
外部からの80番ポートのアクセスを内部サーバに転送する設定。
必要な要素
- DNAT設定:外部IP → 内部サーバIP
- ファイアウォールポリシー:外部→内部の80番ポートを許可
- 戻り通信はステートフルにより自動処理される
※ SNATは通常必須ではないが、非対称ルーティングが起こる環境では追加が必要になる。
内部PCのインターネット接続(SNAT / PAT)
内部端末が外部ネットワークへ出る際に必要。
- SNAT:内部ネットワーク→外部への送信元IP変換
- PAT:複数端末を1つのグローバルIPで共有
出口IPを固定したい場合やログ監査が必要な場面で一般的に使用される。
VPNなどでアドレスが重複する場合のNAT
拠点間VPNでアドレス体系が衝突する場合、片側のネットワークにNATを挟んで独立したアドレス空間として扱う。
トラブル発生時に確認すべきポイント
片方向のみ通信が成立する
原因として多いのは以下。
- ルーティング不整合
- SNAT不足による戻り経路の逸脱
- DNAT適用後の戻り通信の経路が誤っている
ポートフォワーディングが機能しない
確認手順は次の通り。
- DNAT設定が正しいか
- ファイアウォールポリシーで許可されているか
- 戻り通信の経路が正しい(ゲートウェイ設定など)
- サーバ側で該当ポートが待ち受け(LISTEN)されているか
ベンダーごとの概念上の違い(概要)
FortiGate
- DNAT:VIP(Virtual IP)
- SNAT:IP Pool + NAT
- ポリシー内でNAT適用を指定する
Palo Alto Networks
- NATポリシーとセキュリティポリシーが明確に独立している
Cisco ASA / FTD
object network を作成し、
nat (inside,outside) 形式で変換を定義する
これらはあくまで設定方法の違いであり、概念自体は共通している。
まとめ
- NATはアドレス変換、ファイアウォールは通信の許可・拒否を担当する
- SNAT・DNAT・PAT・Static NAT の4種類を理解すれば、ほぼ全ての構成に対応可能
- DNATだけでは不十分で、ファイアウォールポリシーの許可が必須
- SNATは外部公開サーバでは必須ではないが、経路不整合が起こる環境では使用する
- トラブルの多くはルーティングまたはポリシー設定の不整合に起因する
以上、ファイアウォールのNAT設定についてでした。
最後までお読みいただき、ありがとうございました。