本記事について
本記事では、Fortinet 社のファイアウォール製品である FortiGate について、ヘアピン NAT を設定して内部端末から外部 IP アドレスを経由して内部サーバにアクセスできるようにする方法について説明します。
動作確認環境
本記事の内容は以下の機器にて動作確認を行った結果に基づいて作成されています。
- 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 の設定
GUI 左側のメニューから「ポリシー&オブジェクト > バーチャルIP」をクリックします。
表示されたバーチャルIP画面にて「新規作成」をクリックします。
バーチャルIP設定画面が表示されるため各項目を設定します。
- 名前には任意の分かりやすい名前を入力します
- ネットワーク欄では次の通り設定します
- インターフェースは対象通信を着信するインターフェースを設定します
- タイプはスタティックNATとします
- 外部IPアドレス/範囲には変換前の宛先アドレスを入力します
- 今回の例では FortiGate の wan1 のアドレスです
- マップ>IPv4アドレス/範囲には変換後の宛先アドレスを入力します
- 今回の例では Web サーバのアドレスです
- ポートフォワードを有効にし次の通り設定します
- プロトコルは対象通信に合わせて選択します
- 今回の例では TCP です
- ポートマッピングタイプは 1対1 にします
- 外部サービスポートは変換前の宛先ポート番号を入力します
- 今回の例では 8888 です
- IPv4ポートへマップは変換後の宛先ポート番号を入力します
- 今回の例では 80 です
- プロトコルは対象通信に合わせて選択します
以上の設定ができたら「OK」をクリックします。
バーチャル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 の設定
GUI 左側のメニューから「ポリシー&オブジェクト > バーチャルIP」をクリックします。
表示されたバーチャルIP画面にて「新規作成」をクリックします。
バーチャルIP設定画面が表示されるため各項目を設定します。
- 名前には任意の分かりやすい名前を入力します
- ネットワーク欄では次の通り設定します
- インターフェースは対象通信を着信するインターフェースを設定します
- タイプはスタティックNATとします
- 外部IPアドレス/範囲には変換前の宛先アドレスを入力します
- 今回の例では 10.100.1.10 です
- マップ>IPv4アドレス/範囲には変換後の宛先アドレスを入力します
- 今回の例では Web サーバのアドレスです
- ポートフォワードを有効にし次の通り設定します
- プロトコルは対象通信に合わせて選択します
- 今回の例では TCP です
- ポートマッピングタイプは 1対1 にします
- 外部サービスポートは変換前の宛先ポート番号を入力します
- 今回の例では 8888 です
- IPv4ポートへマップは変換後の宛先ポート番号を入力します
- 今回の例では 80 です
- プロトコルは対象通信に合わせて選択します
以上の設定ができたら「OK」をクリックします。
バーチャル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
参考資料
【おすすめ】FortiGate の設計構築中なら以下の記事も役立つかもです
- 基礎知識
- HA (冗長構成) 設定
- FortiGate HA モードの Active-Passive と Active-Active の違いを解説します
- FortiGate HA(冗長構成)の概要と設定ガイド【詳しく解説】※note記事
- FortiGate HA 構成時のコンフィグ同期の仕様について解説します
- FortiGate HA 構成時の NTP,Syslog,SNMP 等の送信元インターフェースを解説 [ha-direct 設定]
- FortiGate HA 構成時の仮想 MAC アドレスについて解説します
- FortiGate HA ハートビート送信間隔と障害判定しきい値の設定ガイド
- FortiGate HA 構成時のバックアップ及びリストア実施ガイド
- FortiGate HA 構成でのモニタインターフェースダウン時の通信断時間について解説
- FortiGate HA 構成に関するQ&A 【良くありそうな疑問集】
- VDOM (バーチャルドメイン) 設定
- トランスペアレントモード設定
- システム系設定
- 管理者アカウント設定
- 時刻・NTP 設定
- ロギング・Syslog 送信設定
- SNMP 設定
- DHCP サーバ機能設定
- Proxy サーバ機能設定
- アラートメール送信
- ネットワーク系設定
- インターフェース設定
- ルーティング設定
- DNS 設定
- NAT 及び NAPT 設定
- ファイアウォール系設定
- アドレス設定
- サービス設定
- ファイアウォールポリシー設定
- ゾーンを使用したポリシー設定
- VPN 系設定
- Tips
Amazon アフィリエイトリンク
以下は Amazon アフィリエイトリンクです。インフラエンジニアにそこそこおすすめなアイテムです。
note メンバーシップへの参加もお待ちしています!
【アフィリエイト】おすすめ WordPress テーマ【SWELL】
当サイトでは WordPress テーマとして SWELL を使用しています。以前は無料・高機能テーマとして知られる Cocoon を使用していて Cocoon も使いやすかったのですが、SWELL を使い始めてからは SWELL のほうが圧倒的に使いやすいなと思いました。そして何より読み込み速度が速い。SWELL を使い始めてから、過去の Cocoon のブログを見直したときに「あれ、こんなに表示遅かったっけ?」という感覚になりました。
また SWELL はデフォルトでもオシャレなデザインですが柔軟にカスタマイズすることもでき個性のあるサイトを作成できます。さらにブログパーツや広告タグといった再利用可能なブログの「部品」も作成することができ、ブログ作成効率も高いです。
技術ブログやアフィリエイト等での収益化を見据えたブログの作成に SWELL は最適です。初見では価格が高いなと思うと思いますが、私としては SWELL を採用して良かったしそれ以上の価値があると感じています。
ブログの新設やテーマ変更を考えている人は一度 SWELL を検討してみてください。
以下の画像リンクから詳細な情報を確認できます。
レンタルサーバーを探している人には安定性に定評のあるエックスサーバーをお勧めします。
当サイトもエックスサーバーを使用しています。WordPress のインストールも簡単にできます。
コメント