MENU
「安心のセキュリティをお得な価格」でご提供!
Fortinet商品など
ENGAGE fotinet

FortiGateの双方向natについて

FortiGateの「双方向NAT(Bi-directional NAT)」は、内部ネットワークと外部ネットワークの間で双方向にアドレス変換を行う機能です。

これは、通常の「SNAT(送信元NAT)」や「DNAT(宛先NAT)」とは異なり、一つの設定で双方向の通信が成り立つようにアドレスとポートを変換する仕組みです。

FortiGateで双方向NATを実現するには、Virtual IP(VIP)オブジェクトポリシーの適切な組み合わせが重要になります。

双方向NATとは何か?

たとえば、以下のような通信が必要な場合を考えてみましょう。

  • 内部サーバー(192.168.1.100)を外部からアクセスさせたい(→ DNAT
  • 同時に、内部サーバーから外部宛てのアクセス時も、同じグローバルIP(203.0.113.10)を使いたい(→ SNAT

このような要件では、DNATとSNATの両方を設定する必要があります。

FortiGateでは、VIPオブジェクトでDNATを設定し、SNATはポリシー内のオプションで実現します。

FortiGateでの双方向NATの設定手順

以下は、具体的な設定手順です。

Virtual IP(VIP)の作成(DNAT)

  1. FortiGate GUIにログイン
  2. Policy & Objects」→「Virtual IPs」→「Create New」をクリック
  3. 以下のように設定:

項目 内容
Name vip_web_server など任意の名前
Interface 外部向けインターフェース(例:wan1
External IP Address 公開IPアドレス(例:203.0.113.10
Mapped IP Address 内部サーバーのIP(例:192.168.1.100
Port Forwarding 必要に応じて有効に(例えばHTTPだけなら80番ポートを指定)

  1. 保存

これにより、外部 → 内部への通信(DNAT)が成立します。

ファイアウォールポリシーの作成(DNAT用)

WANからLANへ」のポリシーを作成

  • From」:WAN
  • To」:LAN
  • Destination」:上で作成したVIP
  • Service」:HTTPなど必要なサービス
  • NAT」:オフ(既にVIPで変換されているため)

ファイアウォールポリシーの作成(SNAT用)

LANからWANへ」のポリシーを作成

  • From」:LAN
  • To」:WAN
  • Source」:内部サーバーのIP(192.168.1.100
  • Destination」:all
  • NAT」:オンにして、IP Poolを指定(次項参照)

IP Poolの作成(SNAT時の送信元IPを制御)

  1. Policy & Objects」→「IP Pools」→「Create New
  2. 以下を入力

項目 内容
Name ip_pool_webserver など
Type One-to-One(1対1)
External IP Range 203.0.113.10(公開IP)
Internal IP Range 192.168.1.100(内部IP)

  1. 作成したIP Poolを先ほどのポリシーのNATセクションで指定

これで双方向NATが実現される状態

  • 外部クライアント203.0.113.10へHTTPでアクセス → FortiGateがDNATで192.168.1.100へ変換
  • 内部サーバーが外部へHTTPリクエスト → FortiGateがSNATで送信元IPを203.0.113.10へ変換

補足:CLIで設定する場合

CLIでも同様の設定が可能です。

例えば

config firewall vip
    edit "vip_web_server"
        set extip 203.0.113.10
        set mappedip 192.168.1.100
        set extintf "wan1"
    next
end

config firewall ippool
    edit "ip_pool_webserver"
        set startip 203.0.113.10
        set endip 203.0.113.10
        set type one-to-one
    next
end

config firewall policy
    edit 1
        set name "Allow_inbound"
        set srcintf "wan1"
        set dstintf "lan"
        set srcaddr "all"
        set dstaddr "vip_web_server"
        set action accept
        set schedule "always"
        set service "HTTP"
        set nat disable
    next
    edit 2
        set name "Allow_outbound"
        set srcintf "lan"
        set dstintf "wan1"
        set srcaddr "192.168.1.100"
        set dstaddr "all"
        set action accept
        set schedule "always"
        set service "HTTP"
        set nat enable
        set ippool enable
        set poolname "ip_pool_webserver"
    next
end

注意点

  • 対称性のある設定が重要です。DNATだけ設定してもSNATがなければ応答パケットが戻ってこないことがあります。
  • SNATに使うIP PoolがDNATで使われているIPと一致していることが「双方向NAT」ではポイントです。
  • 同じグローバルIPを使うと、通信が自然に見え、トラブルシュートも簡単になります。

まとめ

項目 内容
実現すること 同一グローバルIPを使った内部・外部通信の双方向変換
使う機能 VIP(Virtual IP) + IP Pool + 2つのポリシー
メリット NAT変換が対称で、トラブルが少ない。ポート単位の制御も可能
注意点 ポリシーの順序、IP Poolの設定ミスに注意

もし特定のプロトコル(SSH、SMTPなど)や複数の内部サーバーで同様の設定をしたい場合、ポートフォワーディングやポリシーテンプレートの工夫が必要になります。

以上、FortiGateの双方向natについてでした。

最後までお読みいただき、ありがとうございました。

カテゴリ一覧

ページトップへ