ここでは、PAシリーズにおけるNAT設定の基本的な概念についてご紹介します。
NATの設定(その1)で紹介した宛先NATの設定を行う際、NATポリシーの送信元ゾーンと宛先ゾーンをどちらもUntrustゾーンに設定しました。その理由を知ることでNAT設定に関する理解が深まるかと思います。
- NAT処理フロー
PAシリーズがNAT通信時に行うフローについての説明します。 - 送信元NAT時のフロー
NATポリシーとSecurityポリシーのゾーンは同一です。 - 宛先NAT時のフロー
一般的な構成では、NATポリシーとSecurityポリシーのゾーンが異なる場合があります。
送信元NAT時との違いを確認します。
NAT処理フロー
PAシリーズのNATの処理フローの概要について説明します。
少し古いですが公式HPにUnderstanding and Configration NATというドキュメントがありますので併せて参照ください。
まず前提として、FWはルーティングテーブルを見て、そのIPがどのゾーンに所属しているかを決定しています。
- パケットを受信したインターフェイスを元に送信元ゾーンを決定します。
送信元インターフェイスは変更できないので送信元ゾーンが確定します。 - パケットの宛先IPをルーティングテーブルでチェックして、ネクストホップの出力インターフェイスを確認します。
- 出力インターフェイスに設定しているゾーンを宛先ゾーンとして決定します。
- 送信元NATの場合は送信元ゾーン、宛先ゾーンが確定します。
- 宛先NATの場合は宛先ゾーンが変更になる可能性があるので仮決定の状態です。
- ①(受信IFによる送信元ゾーン)- ③(NAT変換前の宛先ゾーン)を元にNATポリシーをチェックします。
- NATポリシーはこの仮決定のゾーンでチェックが行われます。
- NATポリシーに基づき、NAT変換を行います。
- 宛先NATの場合、宛先IPがNATにより変更され、その影響で出力インターフェイスが変更になる場合があるため、宛先NAT適用後の宛先IPを再度ルーティングテーブルでチェックし、変更後の出力インターフェイスを確認します。
- NAT後の出力インターフェイスを元に宛先ゾーンが確定します。
- ①(受信IFによる送信元ゾーン)- ⑦(NAT変換後の宛先ゾーン)を元にセキュリティポリシーをチェックします。
- 上述の通り、宛先NATにおいては、NATポリシーと、セキュリティポリシーでポリシーチェック時の宛先ゾーンが異なる場合があることに注意しましょう。
これらを踏まえて、NATの設定(その1)で設定したポリシーを再度確認してみます。
送信元NATのフロー
送信元NATの構成を再掲します。
NATポリシーとセキュリティポリシーのルールは以下のようになります。
ここで、先ほどのフローに当てはめて考えます。
- WindowsクライアントPCから出力されたパケットは、FWのインターフェイスe1/2に入ります。インターフェイスe1/2はTrustゾーンに割り当てられていますので、送信元ゾーンはTrustゾーンで確定します。
- 宛先ゾーンを決定するために、宛先IP(1.1.1.1)のルーティングテーブルを確認します。ルーティング設定の説明については割愛しますが、インターネット側にデフォルトルートが設定されている前提とします。この場合宛先IP(1.1.1.1)はデフォルトルートにマッチしますので、出力インターフェイスはe1/3となります。
- インターフェイスe1/3はUntrustゾーンに割り当てられていますので、宛先ゾーンはUntrustゾーンになります。また、送信元NATでは宛先IPは変換されませんのでここで宛先ゾーンも確定します。
- ①(送信元ゾーン:Trustゾーン)、③(宛先ゾーン:Untrustゾーン)を元にNATポリシーをチェックします。
- NATによるアドレス変換が行われます。
- 宛先NATは行われませんので、宛先は変わりません。
- 宛先NATは行われませんので、宛先ゾーンも変わりません。
- ①(送信元ゾーン:Trustゾーン)、⑦=③(宛先ゾーン:Untrustゾーン)を元に、セキュリティポリシーのチェックを行い通信制御を行います。
このように、送信元NATの場合、NATポリシーとセキュリティポリシーではゾーンは同一となります。
宛先NATのフロー
続いて、宛先NAT(再掲)のフローについても確認してみましょう。
NATポリシーとセキュリティポリシーのルールは以下のようになります。
ここでも、先ほどのフローに当てはめて考えます。
- インターネットPC(9.9.9.9)から出力されたパケットは、FWのインターフェイスe1/3に入ります。インターフェイスe1/3はUntrustゾーンに割り当てられていますので、送信元ゾーンはUntrustゾーンで確定します。
- 宛先ゾーンを決定するために、宛先IPのルーティングテーブルを確認します。
- ここで、宛先IPはインターネット側に公開されているNAT用のIP(10.0.3.102)です。
- この宛先IP(10.0.3.102)は、インターネット側のインターフェイスe1/3に設定したセグメント(10.0.3.0/24)マッチしますので、出力インターフェイスはe1/3となります。
- ちなみに、別セグメントでNAT用のIPプールを設定した場合も、そのIPプールのゾーンはルーティングテーブルによって割り当てられます。IPプールへのルートがない場合、ゾーンが割り当てられずNAT処理ができなくなります。※1
- インターフェイスe1/3はUntrustゾーンに割り当てられていますので、宛先ゾーンはUntrustゾーンになります。
- ①(送信元ゾーン:Untrustゾーン)、③(宛先ゾーン:Untrustゾーン)を元にNATポリシーをチェックします。
- NATによるアドレス変換が行われます。
- この設定例では送信元NATも行われますが、ゾーンの決定には関与しませんので、ここでは無視します。
- 宛先NATが行われ、宛先IPが、10.0.3.102 → 10.0.2.251に変換されます。
- 宛先NATにより宛先IPが変更になったので、再度ルーティングテーブルを確認します。
- 宛先IPは、Windows Server 2019のIP(10.0.2.251)にNAT変換されています。
- この宛先IP(10.0.2.251)は、ルーティングテーブル上では内部インターフェイスe1/2が所属するセグメント(10.0.2.0/24)にマッチしますので、出力インターフェイスはe1/2となります。
- 宛先NATにより変更となった出力インターフェイスe1/2はTrustゾーンに割り当てられていますので、宛先ゾーンはTrustゾーンに変更されます。
- ①(送信元ゾーン:Untrustゾーン)、⑦(宛先ゾーン:Trustゾーン)を元に、セキュリティポリシーのチェックを行い通信制御を行います。
- セキュリティポリシーに設定する宛先IPアドレスはNAT変換前のIP、つまりNAT IP宛に対して設定しますので間違えない様にしましょう。
このように宛先NATの場合、NATポリシーとセキュリティポリシーではゾーンが異なる場合があります。
基本的にはNATの設定でご紹介している設定パターンを覚えてもらえれば問題ありませんが、構成によっては異なる設定方法が必要な場合もありますので、その際にこのフローを思い出してもらえれば幸いです。
※1 インターネットゲートウェイに設置されたFWには、ほとんどの場合デフォルトルートが設定されているはずです。このデフォルトルートは、ルートの存在しないNAT用のIPプールのゾーン決定にも利用されます。デフォルトルートは一般的にインターネット向けに設定されますので、ルートのないIPプールはインターネット側のゾーン(Untrust)に割り当てられます。「宛先NATポリシーはUntrust-to-Untrustで設定するもの」と記載したのはこのような理由からで、基本的にはあまり意識していなくても宛先NATは動作します。しかしFWがデフォルトゲートウェイを持たない場合、IPプールへのルーティングが設定されていないとゾーンを割り当てることができませんし、逆にIPプールへのStaticルートが設定されている場合はそのルートに基づいてゾーンを設定する必要があります。インターネットからDMZにあるグローバルIP宛の通信を宛先NATでTrust側に転送したいというような場合や、デフォルトルートが設定されない閉域網などで利用する場合、後述するUターンNATを利用するような場合には、このフローに基づいて設定を行うことでトラブルを回避できるかと思います。
コメント欄 質問や感想、追加してほしい記事のリクエストをお待ちしてます!