【注意】FortiGate RAM 2GB以下の小型モデルで ver.7.4.4からProxy機能廃止、ver.7.6.0からSSL-VPN機能廃止 被害者が散見しています> Membership

FortiGate でのヘアピン NAT 設定ガイド

目次

本記事について

本記事では、Fortinet 社のファイアウォール製品である FortiGate について、ヘアピン NAT を設定して内部端末から外部 IP アドレスを経由して内部サーバにアクセスできるようにする方法について説明します。

本記事ではセントラル NAT が無効(デフォルト)であることを前提にしています。

動作確認環境

本記事の内容は以下の機器にて動作確認を行った結果に基づいて作成されています。

  • FortiGate-60F
    • バージョン 7.4.3

ヘアピン NAT とは

以下図のようなネットワークにおいて、DMZ に存在する Web サーバを外部ネットワークに公開する要件があるとします。これを実現するためには FortiGate にて外部ネットワーク側の特定アドレス・ポート宛の通信を Web サーバ宛にポートフォワーディング(宛先変換)するよう設定します。さらに、内部ネットワークの端末から同じように外部ネットワークの特定アドレス・ポート宛に通信した場合にも Web サーバに接続させたい場合があります(下図オレンジの通信)。このためには、外部ネットワークから通信させる場合とは異なる設定が必要となります。

このときの内部ネットワークの端末から外部ネットワーク側のアドレスを経由して内部のアドレスに接続できるようにするための NAT 設定のことをヘアピン NAT と呼びます。

以下ではヘアピン NAT の設定方法を説明します。

外部アドレスが FortiGate のインターフェースアドレスの場合

まず、内部端末からの宛先アドレスが FortiGate の外部側インターフェースのアドレスである場合のヘアピン NAT の設定方法について説明します。

ここでは以下のようなネットワーク構成を想定します。FortiGate の wan1 インターフェースのアドレスである 10.100.1.2 の TCP ポート 8888 宛の接続について、宛先を 10.10.10.100 ポート 80 に変換し DMZ 内の Web サーバと通信させることを考えます。

この場合、以下の設定が必要となります。

  • ポートフォワーディング用の VIP
  • 内部から外部アドレスへの通信を許可するファイアウォールポリシー
  • 外部から DMZ への通信を許可するファイアウォールポリシー

ここでは GUI で設定する場合について説明します。

ポートフォワーディング用の VIP の設定

STEP
バーチャルIP設定画面の表示

GUI 左側のメニューから「ポリシー&オブジェクト > バーチャルIP」をクリックします。

表示されたバーチャルIP画面にて「新規作成」をクリックします。

STEP
バーチャルIPの設定

バーチャルIP設定画面が表示されるため各項目を設定します。

  • 名前には任意の分かりやすい名前を入力します
  • ネットワーク欄では次の通り設定します
    • インターフェースは対象通信を着信するインターフェースを設定します
    • タイプはスタティックNATとします
    • 外部IPアドレス/範囲には変換前の宛先アドレスを入力します
      • 今回の例では FortiGate の wan1 のアドレスです
    • マップ>IPv4アドレス/範囲には変換後の宛先アドレスを入力します
      • 今回の例では Web サーバのアドレスです
  • ポートフォワードを有効にし次の通り設定します
    • プロトコルは対象通信に合わせて選択します
      • 今回の例では TCP です
    • ポートマッピングタイプは 1対1 にします
    • 外部サービスポートは変換前の宛先ポート番号を入力します
      • 今回の例では 8888 です
    • IPv4ポートへマップは変換後の宛先ポート番号を入力します
      • 今回の例では 80 です

以上の設定ができたら「OK」をクリックします。

STEP
設定の確認

バーチャルIP画面でバーチャルIPが追加されたことを確認します。

以上でバーチャルIPの設定は完了です。

内部から外部アドレスへの通信を許可するファイアウォールポリシーの設定

内部ネットワークから FortiGate の外部側インターフェースのアドレスへの通信を許可するファイアウォールポリシーを設定します。ポイントは宛先のアドレスを FortiGate の外部側インターフェースのアドレスとし(今回の例では wan1 のアドレス)、サービスを変換前のポート(今回の例では TCP/8888) にすることです。

外部から DMZ への通信を許可するファイアウォールポリシー

外部から DMZ への通信を許可するファイアウォールポリシーは、通常のポートフォワーディング設定と同様に設定します。送信元は外部の任意のアドレスからの通信を許可することとして all にします。宛先はあらかじめ作成していた VIP を指定します。サービスには変換後のポートとなるサービスを設定します。

以上でヘアピン NAT の設定は完了です。

外部アドレスが FortiGate が持つアドレスとは異なる場合

続いて外部アドレスが FortiGate が持つアドレスとは異なるアドレスである場合のヘアピン NAT の設定方法を説明します。

ここでは以下のようなネットワーク構成を想定します。FortiGate の wan1 インターフェースのアドレスセグメントに含まれる 10.100.1.10 の TCP ポート 8888 宛の接続について、宛先を 10.10.10.100 ポート 80 に変換し DMZ 内の Web サーバと通信させることを考えます。

この場合、以下の設定が必要となります。

  • ポートフォワーディング用の VIP
  • 内部から外部アドレスへの通信を許可するファイアウォールポリシー
  • 外部から DMZ への通信を許可するファイアウォールポリシー

ここでは GUI で設定する場合について説明します。

ポートフォワーディング用の VIP の設定

STEP
バーチャルIP設定画面の表示

GUI 左側のメニューから「ポリシー&オブジェクト > バーチャルIP」をクリックします。

表示されたバーチャルIP画面にて「新規作成」をクリックします。

STEP
バーチャルIPの設定

バーチャルIP設定画面が表示されるため各項目を設定します。

  • 名前には任意の分かりやすい名前を入力します
  • ネットワーク欄では次の通り設定します
    • インターフェースは対象通信を着信するインターフェースを設定します
    • タイプはスタティックNATとします
    • 外部IPアドレス/範囲には変換前の宛先アドレスを入力します
      • 今回の例では 10.100.1.10 です
    • マップ>IPv4アドレス/範囲には変換後の宛先アドレスを入力します
      • 今回の例では Web サーバのアドレスです
  • ポートフォワードを有効にし次の通り設定します
    • プロトコルは対象通信に合わせて選択します
      • 今回の例では TCP です
    • ポートマッピングタイプは 1対1 にします
    • 外部サービスポートは変換前の宛先ポート番号を入力します
      • 今回の例では 8888 です
    • IPv4ポートへマップは変換後の宛先ポート番号を入力します
      • 今回の例では 80 です

以上の設定ができたら「OK」をクリックします。

STEP
設定の確認

バーチャルIP画面でバーチャルIPが追加されたことを確認します。

以上でバーチャルIPの設定は完了です。

内部から外部アドレスへの通信を許可するファイアウォールポリシーの設定

内部ネットワークから外部アドレスへの通信を許可するファイアウォールポリシーを設定します。ポイントは宛先のアドレスを外部のアドレスとし(今回の例では 10.100.1.10 のアドレス)、サービスを変換前のポート(今回の例では TCP/8888) にすることです。

外部から DMZ への通信を許可するファイアウォールポリシー

外部から DMZ への通信を許可するファイアウォールポリシーは、通常のポートフォワーディング設定と同様に設定します。送信元は外部の任意のアドレスからの通信を許可することとして all にします。宛先はあらかじめ作成していた VIP を指定します。サービスには変換後のポートとなるサービスを設定します。

以上でヘアピン NAT の設定は完了です。

参考:VIP の CLI コンフィグ

CLI コンフィグでは VIP の設定はconfig firewall vipに該当します。

以下は VIP のコンフィグ例です。

config firewall vip
    edit "VIP_10.100.1.10_8888"
        set uuid 696741ce-0303-51ef-361a-cc6d16ae7028
        set extip 10.100.1.10
        set mappedip "10.10.10.100"
        set extintf "wan1"
        set portforward enable
        set extport 8888
        set mappedport 80
    next
end

uuidについては VIP 設定後に自動で設定されるため手動で設定する必要はありません。

参考資料

あわせて読みたい
Technical Tip: Configuring Hairpin NAT (VIP) Description   This article describes how to configure Hairpin NAT. Hair-pinning also known as NAT loopback is a technique where a machine accesses another machi...

【おすすめ】FortiGate の設計構築中なら以下の記事も役立つかもです

Amazon アフィリエイトリンク

以下は Amazon アフィリエイトリンクです。インフラエンジニアにそこそこおすすめなアイテムです。

note メンバーシップへの参加もお待ちしています!

note(ノート)
陰の構築者たちのメンバーシップ|シェイド@陰の構築者 ネットワーク設計構築をする人に役立つメンバーシップです。 独自ブログ(https://shadowgarden.org/)にてネットワークエンジニア向け情報を発信しており、その活動を応援...

【アフィリエイト】おすすめ WordPress テーマ【SWELL

当サイトでは WordPress テーマとして SWELL を使用しています。以前は無料・高機能テーマとして知られる Cocoon を使用していて Cocoon も使いやすかったのですが、SWELL を使い始めてからは SWELL のほうが圧倒的に使いやすいなと思いました。そして何より読み込み速度が速い。SWELL を使い始めてから、過去の Cocoon のブログを見直したときに「あれ、こんなに表示遅かったっけ?」という感覚になりました。

また SWELL はデフォルトでもオシャレなデザインですが柔軟にカスタマイズすることもでき個性のあるサイトを作成できます。さらにブログパーツや広告タグといった再利用可能なブログの「部品」も作成することができ、ブログ作成効率も高いです。

技術ブログやアフィリエイト等での収益化を見据えたブログの作成に SWELL は最適です。初見では価格が高いなと思うと思いますが、私としては SWELL を採用して良かったしそれ以上の価値があると感じています。
ブログの新設やテーマ変更を考えている人は一度 SWELL を検討してみてください。
以下の画像リンクから詳細な情報を確認できます。

レンタルサーバーを探している人には安定性に定評のあるエックスサーバーをお勧めします。
当サイトもエックスサーバーを使用しています。WordPress のインストールも簡単にできます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次