作業環境
- FortiGate 60E
- version 7.0.3
「NAT が先かルーティングが先か」問題
ルータにおいて NAT を設定している場合、ルーティングとの関係で注意が必要です。
例えば Cisco ルータでは、outside source NAT を設定している場合における inside から outside への通信については宛先 NAT されますが、変換前の宛先アドレスに対してルーティングが実施されます。このため、変換前のアドレス宛のルーティング設定が必要になります。
さて、FortiGate についてはどうでしょうか。以下では FortiGate における NAT、ルーティングの適用順序について記載します。
【答え】FortiGate では宛先 NAT が先に適用される
FortiGate では、一般的にはバーチャル IP を使用したポリシーを設定することで宛先 NAT を実現します。
この場合の FortiGate における NAT、ルーティング、ポリシー適用の順序は以下の通りです。
- バーチャル IP オブジェクトの設定に基づいて宛先 NAT が適用される
- 変換後宛先 IP に対してルーティングが実施される
- 出力インターフェースが決まる
- ポリシー評価が実施され、適用ポリシーが決定される
バーチャル IP はポリシー設定の中で指定されるオブジェクトのため「適用ポリシーが決まってから宛先 NAT が適用されるのでは」と考えるかもしれませんが、先に宛先 NAT が適用されます。
宛先 NAT を適用するかどうかの評価の仕組みは以下の通りです。
- 作成されているバーチャル IP オブジェクトの内、いずれかのファイアウォールポリシーの「宛先」として指定されているもののみが評価対象となる
- 着信したパケットの宛先 IP アドレスがいずれかのバーチャル IP の「外部IPアドレス/範囲」に含まれている場合、対象バーチャル IP の設定に基づいて宛先 NAT される
この仕組みから、どのポリシーにも合致しないが宛先 NAT が適用される、ということも起こり得ます。
以下のログは暗黙の deny ポリシーによって拒否されたパケットのログですが、宛先 NAT が適用されていることが分かります。

FortiGate では変換後宛先へのルートがあれば良い
例えば以下画像のような構成で、FortiGate にて 192.168.1.20 から 172.16.1.10 に宛先 NAT される場合、左側の端末は右側の端末と通信するために変換前の 192.168.1.20 宛に通信します。この場合、FortiGate では変換後の宛先である 172.16.1.10 宛のルートがあれば良いということです。
