宛先の IP アドレスを、あらかじめ決めたルールで別の IP アドレスに変換して転送するしくみを、宛先 NAT と呼びます。FortiGate で宛先 NAT を行うには、バーチャル IP(VIP)を使います。
この記事では、バーチャル IP の設定とファイアウォールポリシーへの適用、ログでの確認、そして内部から外部への通信がどう変換されるかを確認します。検証時の FortiOS は 6.2.4 です。
- バーチャル IP(スタティック NAT)の設定
- バーチャル IP を宛先にしたファイアウォールポリシーの設定
- セッションとログでの変換の確認と、内部から外部への通信での変換
宛先 NAT のしくみ
次の構成を考えます。外部の端末 A が、IP アドレス 10.0.0.100 に向けて通信します。FortiGate は宛先の 10.0.0.100 を 10.0.1.10 に変換し、内部の端末に転送します。
端末 A からは、10.0.1.10 というアドレスは見えません。あくまで 10.0.0.100 と通信しているように見えます。この機能は、主にグローバルアドレスをプライベートアドレスに変換するときに使います。
バーチャル IP の設定
バーチャル IP を作る
10.0.0.100 と 10.0.1.10 の対応づけは、バーチャル IP で設定します。ポリシー&オブジェクト ›› バーチャルIP を開き、新規作成 をクリックします。
この記事の画面は、実際の画面ではなく、検証時の画面から設定する項目(見るポイント)を抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。
| VIPタイプ | IPv4 |
| 1名前 | DestNAT |
| コメント |
| インターフェース | any |
| 2タイプ | ◉ スタティックNAT○ FQDN |
| 3外部IPアドレス/範囲 | 10.0.0.100 |
| 4マップされたIPアドレス/範囲 | 10.0.1.10 |
| オプションのフィルタ | OFF |
| ポートフォワード | OFF |
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | 名前 | 任意の名前です。今回は DestNAT にします。 |
| 2 | タイプ | スタティックNAT を選びます。 |
| 3 | 外部IPアドレス/範囲 | 変換前の宛先 IP アドレス 10.0.0.100 を入力します。 |
| 4 | マップされた IPアドレス/範囲 | 変換後の宛先 IP アドレス 10.0.1.10 を入力します。 |
ポートフォワードを有効にしていないので、すべての TCP/UDP ポートが変換の対象になります。特定のポートだけを変換したいときは、ポートフォワードを有効にしてポートを指定します。
OK をクリックすると、一覧に次のように表示されます。
| 名前 | 詳細 | インターフェース |
|---|---|---|
| ⊟ IPv4バーチャルIP | ||
| 1DestNAT | 10.0.0.100 → 10.0.1.10 | any |
| ⋮ | ||
ファイアウォールポリシーの設定
バーチャル IP を宛先にしたポリシーを作る
ポリシー&オブジェクト ›› ファイアウォールポリシー を開き、新規作成 をクリックします。宛先にバーチャル IP を指定すると、そのポリシーに一致した通信の宛先が変換されます。
| 1名前 | External->Internal |
| 2着信インターフェース | port1 |
| 3発信インターフェース | port2 |
| 4送信元 | all |
| 5宛先 | DestNAT |
| スケジュール | always |
| 6サービス | PING RDP SSH |
| アクション | ◉ 許可○ 拒否 |
| インスペクションモード | ◉ フローベース○ プロキシベース |
| NAT | ON |
| IPプール設定 | ◉ 発信インターフェースのアドレスを使用○ ダイナミックIPプールを使う |
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | 名前 | 任意の名前です。今回は External->Internal にします。 |
| 2 | 着信インターフェース | 外部側のインターフェース port1 を選びます。 |
| 3 | 発信インターフェース | 内部側のインターフェース port2 を選びます。 |
| 4 | 送信元 | 制限せず all にします。 |
| 5 | 宛先 | バーチャル IP の DestNAT を選びます。 |
| 6 | サービス | 管理用の通信を想定して、PING、RDP、SSH にします。 |
このポリシーでは NAT も有効にしています。そのため、外部から内部への通信は、宛先だけでなく送信元も、発信インターフェース(port2)側のアドレスに変換されます(あとで確認するセッションの SOURCE-NAT の値です)。
動作確認
外部から 10.0.0.100 に RDP する
外部の端末 A から 10.0.0.100 にリモートデスクトップ(RDP)で接続すると、10.0.1.10 の端末のデスクトップが表示されます。
変換の状態(NAT テーブル)は、CLI の get system session list で確認できます。
FortiGate
# get system session list PROTO EXPIRE SOURCE SOURCE-NAT DESTINATION DESTINATION-NAT - tcp 3598 126.XXX.XXX.XXX:49932 10.0.1.99:49932 10.0.0.100:3389 10.0.1.10:3389
| 列 | 今回の値と意味 |
|---|---|
| SOURCE | 元の送信元(端末 A)です。 |
| SOURCE-NAT | 変換後の送信元 10.0.1.99 です。ポリシーの NAT で、port2 側のアドレスに変換されています。 |
| DESTINATION | 元の宛先 10.0.0.100:3389(RDP)です。 |
| DESTINATION-NAT | 変換後の宛先 10.0.1.10:3389 です。バーチャル IP で変換されています。 |
ログ&レポート ›› 転送トラフィック でも、通信のログを確認できます。
| 送信元 | 宛先 | サービス | 結果 |
|---|---|---|---|
| (伏せています) | 110.0.0.100 | RDP | ✓ 700.24 kB / 1.73 MB |
| NAT変換 | 送信元&宛先 |
| 送信元 IP | (伏せています) |
| 送信元 NAT IP | 10.0.1.99 |
| 送信元インターフェース | port1 |
| 2宛先 IP | 10.0.0.100 |
| 宛先 NAT IP | 10.0.1.10 |
| ポート | 3389 |
| 宛先インターフェース | port2 |
ログの詳細を見ると、宛先 IP の 10.0.0.100 が、NAT IP として 10.0.1.10 に変換されていることがわかります。
内部から外部への通信
内部の 10.0.1.10 から外部にアクセスする
内部から外部へのポリシーは、すべての送信元・宛先・サービスを許可し、NAT の IP プール設定は 発信インターフェースのアドレスを使用 にしているものとします。
| 名前 | Internal->External |
| 着信インターフェース | port2 |
| 発信インターフェース | port1 |
| 送信元/宛先 | all / all |
| サービス | ALL |
| アクション | ◉ 許可○ 拒否 |
| 1NAT | ON |
| IPプール設定 | ◉ 発信インターフェースのアドレスを使用○ ダイナミックIPプールを使う |
内部の 10.0.1.10 の端末から Google にアクセスし、ログ&レポート ›› 転送トラフィック でログの詳細を確認します。
| 送信元 | 宛先 | サービス | アプリケーション名 | 結果 |
|---|---|---|---|---|
| 10.0.1.10 | www.google.com | HTTPS | Google.Services | ✓ 1.85 kB / 970 B |
| NAT変換 | 送信元 |
| 1送信元 IP | 10.0.1.10 |
| 送信元 NAT IP | 10.0.0.100 |
| 送信元インターフェース | port2 |
| 宛先 IP | (伏せています) |
| ポート | 443 |
| 宛先インターフェース | port1 |
送信元 IP の 10.0.1.10 が、NAT IP として 10.0.0.100 に変換されていることがわかります。
ポリシーでは、送信元を発信インターフェースのアドレスに変換する設定にしています。それでも、マップされた IP アドレス(10.0.1.10)からの通信は、バーチャル IP の対応づけどおり、外部 IP アドレス(10.0.0.100)に変換されました。スタティック NAT のバーチャル IP は、ポリシーの NAT が有効なとき、内部から外部への通信の送信元の変換にも使われます。
まとめ
| 通信 | 変換 | 設定 |
|---|---|---|
| 外部 → 内部 | 宛先 10.0.0.100 → 10.0.1.10 | バーチャル IP(スタティック NAT)を作り、ポリシーの宛先に指定する |
| 内部 → 外部 | 送信元 10.0.1.10 → 10.0.0.100 | ポリシーの NAT が有効なら、バーチャル IP の対応づけどおりに変換される |
コメント