FortiGateで宛先NATを設定する方法をご紹介します。
画像をクリックすると拡大表示されますので、
画像が見にくい場合はぜひご利用ください。
宛先NATとは
宛先NATとはその名の通り宛先IPアドレスを変換することです。
インターネット上にサーバを公開したい場合や、
閉域回線などを使用している際に、
各拠点内のローカルIPアドレスが重複している場合などに使用するケースが多いです。
デフォルトルートやスタティックルートが記載できない(したくない)環境で、
あたかも同一LAN内にいるように思わせることも可能です。

FortiGateに宛先NATを設定する方法
FortiGateで宛先NATを設定することはGUIとCLIの両方で実施することができます。
設定する内容自体は簡単なのですが、
設定の流れや必要となる設定が少し紛らわしいのでご注意ください。
宛先NATは数多く設定するものでもないので、
GUIとCLIのどちらかお好きな方で設定してください。
慣れないうちは視認性が高く、設定イメージも付きやすい、
GUIで設定をすることをおすすめします。
宛先NATの設定シナリオ
こちらの例のようにクライアントからサーバ宛の通信の宛先IPアドレスを、
『10.0.0.100→192.168.1.100』のように宛先NATで変換していきます。

GUIで宛先NATを設定する方法
GUIで宛先NATを設定するには、
『ポリシー&オブジェクト』→『バーチャルIP』から、
『新規作成』→『バーチャルIP』を選択します。

今回必要となる設定をしたものがこちらになります。

各値をそれぞれ見ていきます。
【必須】名前
任意の名前を入力してください。
日本語入力も可能ですが、2byte文字は表示系のエラーを引き起こしやすいため、
半角英数字で入力するようにしてください。
【任意】コメント
必要があればコメントを入力してください。
こちらも同様の理由で半角英数字で入力するようにしてください。
【任意】カラー
GUI上で色を変更することができます。
動作的には何も影響しないです。
【必須】インタフェース
基本的に『any』で問題ないかと思います。
【必須】外部IPアドレス/範囲
【変換前】のIPアドレスを入力してください。
ここでは『10.0.0.100』を入力しています。
今回はIPアドレスで入力をしていますが、範囲で入力することも可能です。
【必須】マップされたIPアドレス/範囲
【変換後】のIPアドレスを入力してください。
ここでは『192.168.1.100』を入力しています。
今回はIPアドレスで入力をしていますが、範囲で入力することも可能です。
すべて入力が完了したら『OK』を押下します。
バーチャルIP一覧に戻りますので、作成したバーチャルIPがあるか確認してください。

IPv4ポリシーに適用する
作成したバーチャルIPをIPv4ポリシーに適用します。
IPv4ポリシーの『宛先』に作成したバーチャルIPを設定してください。

このときNATは無効のままで問題ありません。
混同しやすいのですが、IPv4ポリシー上のNATはNAPT(送信元NAT)の動作をします。
NAPTが必要であれば設定して頂いて問題ありません。
CLIで宛先NATを設定する方法
CLIで宛先NATを設定する際も同様で、まずはバーチャルIPを作成します。
1 2 3 4 5 6 7 |
config firewall vip edit "DNAT" set extip 10.0.0.100 set extintf "any" set mappedip "192.168.1.100" next end |
作成したバーチャルIPをIPv4ポリシーの『dstaddr』に適用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
config firewall policy edit 2 set srcintf "port1" set dstintf "port2" set srcaddr "all" set dstaddr "DNAT" set action accept set schedule "always" set service "ALL" set logtraffic all set fsso disable next end |
宛先NATが動作しているかの確認
宛先NATが動作しているかを確認してきます。
CLIで『get system session list』コマンドを使用して確認していきます。
『DESTINATION』欄と『DESTINATION-NAT』欄を確認すると、
『10.0.0.100』から『192.168.1.100』に変換されていることがわかります。
1 2 3 4 5 6 7 |
FortiGate # get system session list PROTO EXPIRE SOURCE SOURCE-NAT DESTINATION DESTINATION-NAT icmp 49 10.0.0.1:9198 - 10.0.0.100:8 192.168.1.100:9198 icmp 50 10.0.0.1:9454 - 10.0.0.100:8 192.168.1.100:9454 icmp 51 10.0.0.1:9710 - 10.0.0.100:8 192.168.1.100:9710 icmp 52 10.0.0.1:9966 - 10.0.0.100:8 192.168.1.100:9966 icmp 53 10.0.0.1:10222 - 10.0.0.100:8 192.168.1.100:10222 |
GUIではトラフィックログで確認することができます。

トラフィックログの表示方法についてはこちら
戻り通信は気にしなくてよい
FortiGateはステートフルインスペクションです。
『port1』→『port2』向けのIPv4ポリシーを定義しておけば、
その戻り通信に関してはIPv4ポリシーを別途作成する必要はありません。
これは宛先NATを使用している場合でも一緒です。
パケットキャプチャでも確認をしていきます。

クライアント(10.0.0.1)から、
サーバ(10.0.0.100、実際は192.168.1.100)宛にPingを実施しました。
このときのキャプチャをport1側で取得しています。

FortiGateで宛先NATが実施されたport2側のキャプチャを確認します。
宛先IPアドレスが、
『10.0.0.100』から『192.168.1.100』に変換されていることがわかります。

では、サーバからのPing応答の戻り通信を確認していきます。
戻り通信ですので、送信元IPアドレスに注目していきます。
送信元IPアドレスがサーバのアドレス『192.168.1.100』になっています。

FortiGateで経由してport1側のキャプチャを確認します。
送信元IPアドレスが、
『192.168.1.100』→『10.0.0.100』に変換されていることがわかります。

今回はクライアント(port1)からサーバ(port2)向けにPingを実施しましたが、
サーバ(port2)発の通信は宛先NAT(サーバ側から見たら送信元NAT)はされません。
ステートフルインスペクションは戻り通信に対して行われますので、
サーバ(port2)発の通信を行いたい場合は別途IPv4ポリシーを設定する必要があります。
さいごに
宛先NAT自体を使用するケースが少ないかとは思いますが、
いざというときに使えるように頭の片隅に入れておくとよいかと思います。
NAPT(PAT・IPマスカレード)の設定についてはこちら
その他の設定についてはこちら
FortiOS5.2系に関する本はこちら
FortiOS6.0系に関する本はこちら