【Fortigate】NATの種類

Fortigate

設定するときに宛先と送信元どっちだっけ?VIPとIPプールどっち使うんだっけ?と混乱することが多いのでメモとして設定事例を交えて記載していきます。
ただし、技術は常に進歩していますので新しい機能が出てきているかもしれません。

NAT(Network Address Translation)とは

NATはIPアドレスを変換する技術になります。
IPv4のアドレスの数には限りがあり、IPアドレスの枯渇が問題になっています。
そのため一般的にはNATによるアドレス変換が必要になります。

NATの種類

IPアドレスにはLAN側で利用するプライベートIPアドレスとWAN側で利用するグローバルIPアドレスがあり、IPアドレスを変換する向きによって使う技術が変わります。
主にNATには下記の種類があります。

  • 送信元NAT(SNAT)
    • Static SNAT
    • Dynamic SNAT
  • 宛先NAT(DNAT)
    • VIP(Virtual IP)

送信元NAT(SNAT)

SNATには StaticDynamic の2種類があります。
図に記載している「サーバ」から「インターネット」宛てのIPアドレスを変換してインターネットに出られるようにします。

Static SNAT

基本的に1対1で変換されますがポートを紐づける(NAPT)することで多対1で変換することができます。

Dynamic SNAT

IPプールを利用してインターネット側のIPアドレスを複数持たせることで1対多や多対多のアドレス変換に対応することができます。

宛先NAT(DNAT)

図に記載している「インターネット」から「サーバ」にIPアドレスを変換します。
VIPを使って変換します。

VIP(Virtual IP)

意味はそのまま「仮想IP」、仮想的なIPを作成して実IPにマッピングします。
主な利用用途は下記の2つパターンだと思います。

  1. 外部IPアドレスを内部IPアドレスにマッピングしたい場合
  2. IPアドレスで負荷分散や冗長性を持たせたい場合

VIPの設定例

宛先NATで利用することを説明しましたが、VIPには様々な設定パターンがありますので設定例を記載していきます。
ついでにポートフォワード設定で「80」から「8080」も入れています。
数が多すぎるので使いそうなパターンだけ例を挙げていきます。

① IP → IP

Static NATを利用して変換します。

② IP → FQDN

タイプはFQDN、外部にIPを指定して設定します。

③ FQDN → IP(I/F → IP)

FQDNではできなかったので、I/Fの入力パケットに対してアドレス変換する方法です。
Static NATを利用して変換します。

④ FQDN → FQDN

タイプと外部にFQDNを設定します。

VIP設定後にポリシー適用

VIPを設定したらポリシー適用が必要になります。

VIPによる負荷分散

下記の通りServer-load-Balancerで負荷分散することも可能です。
例はHTTPの負荷分散をする方法で、HTTPSにする場合はFortigateに証明書の登録が必要になります。
config realservers にサーバIPを記載することで分散対象を増やすことができます。

config firewall vip
    edit "http-host-ldb"
        set type server-load-balance
        set extintf "wan1"
        set server-type http
        set ldb-method http-host
        set extport 80
        config realservers
            edit 1
                set ip 192.168.1.1
                set port 80
            next
        end
    next

最後に

最後までお読みいただきありがとうございました。
Central NATを有効にすればPaloAltoやASAのようにポリシーとNATテーブルを分離することができます。
ただし、宛先NATには対応していないので正直使い勝手は悪いです。(Fotinetさん改良を希望します)

参考サイト