PaloAlto の NAT 等のパケット処理順序
PaloAlto ではパケットを以下の順番で処理します。
- ルーティングテーブル検索:Src と Dst のゾーン/インタフェースを確定
- NAT処理 : NATポリシーによりNAT変換 (ポリシーで使われるゾーン/インタフェースは 1 で確定したもの) する。宛先NATがある場合はルーティングテーブルを再検索し、ゾーン/インタフェースを更新
- ACL処理 : セキュリティポリシーによりアクセス制御を実施 (ポリシーに書くアドレスは NAT 処理前のもの, ゾーンは NAT 処理後のもの)
パケット処理フローの概要図を以下に示します。
セッションテーブルと確認コマンド
PaloAlto では NAT ルールとセキュリティルールは設定が分かれていますが、Cisco ルータのような NAT 専用のセッションテーブルは無く、ステートフルインスペクションと NAT を 1 つのセッションテーブルで管理します。
確認コマンド show session id [id] で NAT 含めたセッションの状態を確認することができます。
以下の例では 10.1.1.100 が 198.51.100.11 に Source NAT 変換されるセッション状態を確認することができます。c2s flow とは Client to Server (往路) のフローで、s2c はその逆 (復路) です。
admin@Palo1> show session id 532123 Session 532123 c2s flow: source: 10.1.1.100 [Trust] dst: 203.0.113.11 proto: 6 sport: 46579 dport: 443 state: INIT type: FLOW src user: unknown dst user: unknown s2c flow: source: 203.0.113.11 [Untrust] dst: 198.51.100.11 proto: 6 sport: 443 dport: 10043 state: INIT type: FLOW src user: unknown dst user: unknown
PaloAltoのNAT設定例
シナリオ#1 Source NAT (NAPT)
社内の 192.168.1.0/24 からインターネットへ出る際に、NAPT により 198.51.100.11 に NAPT 変換する設定例を以下に示します。
NAPT 設定のときは「変換済みパケット」の「送信元変換」において "dynamic-ip-and-port" にチェックを入れます。
また、セキュリティポリシーには NAT 変換前の「10.1.1.0/24」を使って設定します。
シナリオ#2 Destination NAT (ルーティングが内向き)
インターネットから 198.51.100.80 宛に入ってきたときに、宛先を 10.3.1.80 に Destination NAT 変換するときの設定を以下に示します。なお、198.51.100.0/24 宛のルーティングが eth1 (Trust 側) を向いているものとします。
NAT ポリシーではルーティングテーブルで宛先の Zone/インタフェースが決まりますので、宛先ゾーン=Trust, 宛先インタフェース=eth1 になります。
なお、ポートフォワーディングをする場合、例えばインターネットからは 198.51.100.80 の宛先ポート tcp:80 のパケットを PaloAlto で宛先のIPを変換すると同時に宛先ポートを 8080 に変更する場合は以下のように NAT ポリシーを設定します。
シナリオ#3 destination NAT (ルーティングが外向き)
シナリオ#2 のときと違い、198.51.100.0/24 宛のルーティングが無いケースを考えます。このとき、198.51.100.80 はデフォルトルートに合致しますので、宛先ゾーン=Untrust, 宛先インタフェース=eth5 となります。
セキュリティポリシーについては、宛先 NAT によりルーティングテーブルの再検索が為され、ゾーン=Trust, 宛先インタフェース=eth1 となります。ただし、宛先 IP はオリジナルパケットの「198.51.100.80」に対して設定します。
シナリオ#4 双方向 NAT
PaloAlto の NAT ポリシーでは一方向のルールを設定します。例えばシナリオ#2や#3 においては、1対1 NAT の設定ではありますが、10.3.1.80 がインターネットに出ていくときには適用されません。方向が異なるからです。
このようなケースでは、逆方向のルールを明示的に追加してもよいですが、双方向 NAT を設定することでも実現できます。
双方向 NAT を有効にすると、逆の変換をする NAT ポリシーが暗黙で自動生成されます。基本的に Source と Destination が全て逆になりますが、例外的に送信元ゾーンは "any" で設定されます。
なので双方向 NAT を設定して片方向しかアクセスが成功しない場合は NAT ポリシーのゾーン設定を間違えている可能性が高いです。
シナリオ#5 UターンNAT
インターネットからアクセスするときと同じ宛先 IP を使って、内部から PaloAlto で折り返し NAT して内部のサーバにアクセスする設定です。
NAT 後にルーティングテーブル再検索をすると、宛先ゾーンが Trust になります。送信元も Trust であり、同一ゾーンはデフォルトでは許可されているため、セキュリティポリシーは設定を入れる必要がありません。
コメント