【Fortigate】AzureとのVPN(IPSec)接続と動作確認 FortiOS7.0.3

サーバのクラウド移行が進むなか、オンプレミスとクラウドの間を安全につなぐ方法として、インターネット経由の VPN(IPsec)接続がよく使われます。今回は、Azure 上の仮想マシンと FortiGate を IPsec でつなぐ手順と動作を確認します。

この記事でわかること
  1. Azure 側で作るリソース(仮想ネットワーク、ゲートウェイサブネット、仮想ネットワークゲートウェイ、ローカルネットワークゲートウェイ、接続)と、その関係
  2. FortiGate 側の IPsec(IKEv2)、スタティックルート、ポリシーの設定
  3. 端末から Azure の仮想マシンへの疎通と、ログでの確認方法

検証構成

FortiGate の LAN(port2、10.0.200.0/24)にいる端末から、Azure の仮想ネットワーク上の仮想マシン(172.16.1.4)へ通信します。FortiGate の wan1(port3)から、インターネット経由で Azure の仮想ネットワークゲートウェイへ IPsec トンネルを張ります。

AzureVNet 172.16.0.0/16IPsec(IKEv2)Internet10.0.200.100FortiGatelan / port210.0.200.0/24wan1 / port3VPNGWGatewaySubnet172.16.255.0/24VM-1172.16.1.4172.16.1.0/24
図1 検証構成(グローバル IP アドレスは省略しています)
項目値
FortiGate の LANport2(lan)、10.0.200.0/24。端末は 10.0.200.100
FortiGate の WANwan1(port3)。グローバル IP は(伏せています)
Azure の仮想ネットワークIPSec-TEST、172.16.0.0/16(西日本リージョン)
Azure のサブネットIPSec-Subnet 172.16.1.0/24(仮想マシン)、GatewaySubnet 172.16.255.0/24(ゲートウェイ)
FortiOS7.0.3
MSS について

IPsec ではヘッダが増えるぶん、大きなパケットが通らなくなることがあります。MSS の設定はこの記事では扱いません。FortiGate での設定は サイト間IPSec設定(PPPoE網間接続)と動作確認 を参照してください。Azure との VPN では、TCP MSS を 1350 バイトに、トンネルインタフェースの MTU を 1400 バイトにすることが推奨されています。

Azure 側の設定

Azure に新しくリソースグループを作り、その中に仮想ネットワーク、仮想マシン、仮想ネットワークゲートウェイなどを作っていきます。作るリソースと、その関係は次のとおりです。

リソースグループ fortigate_ipsec_test(西日本)仮想ネットワーク IPSec-TEST(172.16.0.0/16)IPSec-Subnet172.16.1.0/24仮想マシン VM-1172.16.1.4GatewaySubnet172.16.255.0/24仮想ネットワークゲートウェイ VPNGWVPNGW のパブリック IP(VPNGW-PIP)がFortiGate から見たトンネルの宛先接続 Fortigate-VPNサイト対サイト(IPsec)共有キー・IKEv2ローカル NW ゲートウェイLOC-GWIP:FortiGate の WANアドレス空間 10.0.200.0/24VPNGW とLOC-GW を結び付ける
図2 Azure 側で作るリソースと、その関係
リソース役割
仮想ネットワーク(VNet)Azure 側のアドレス空間。仮想マシン用のサブネットと、ゲートウェイ用のサブネットを持つ
仮想ネットワークゲートウェイAzure 側の VPN 装置。FortiGate からの IPsec 接続を受ける
ローカルネットワークゲートウェイオンプレミス側(FortiGate)を表すもの。FortiGate の WAN の IP アドレスと、FortiGate の先にあるサブネットを登録する
接続仮想ネットワークゲートウェイとローカルネットワークゲートウェイを結び付け、共有キーや IKE のバージョンを決める

リソースグループを作る

Azure portal で リソース グループ ›› 作成 を開き、リソースグループを作ります。

画面イメージについて

この記事の画面は、実際の画面ではなく、検証時の画面から設定する項目(見るポイント)を抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。

Azure portal(リソース グループを作成します)画面イメージ
プロジェクトの詳細
サブスクリプション(利用するサブスクリプション)
1リソース グループfortigate_ipsec_test
リソースの詳細
2リージョン(Asia Pacific) 西日本
図3 リソースグループの作成(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1リソース グループ任意の名前。今回は fortigate_ipsec_test
2リージョン任意のリージョン。今回は西日本

仮想ネットワークを作る

仮想ネットワーク ›› 作成 で仮想ネットワークを作ります。IP アドレス タブでは、仮想ネットワーク全体のアドレス空間と、その中のサブネットを決めます。今回は 172.16.0.0/16 を全体のアドレス空間にし、その中に仮想マシンを置くサブネット 172.16.1.0/24 を作ります。

Azure portal(仮想ネットワークの作成)画面イメージ
基本
1リソース グループfortigate_ipsec_test
2名前IPSec-TEST
地域西日本
IP アドレス
3IPv4 アドレス空間172.16.0.0/16
4サブネット
サブネット名サブネット アドレス範囲
IPSec-Subnet172.16.1.0/24
図4 仮想ネットワークの作成(実際の画面ではなく、2つのタブの設定項目をまとめたイメージです)
No.項目設定内容
1リソース グループSTEP 1 で作った fortigate_ipsec_test
2名前・地域任意の名前。今回は IPSec-TEST。地域はリソースグループと同じ西日本
3IPv4 アドレス空間172.16.0.0/16。FortiGate 側(10.0.200.0/24)と重ならない範囲にする
4サブネットサブネットの追加 で、仮想マシン用の IPSec-Subnet(172.16.1.0/24)を作る

ゲートウェイサブネットを作る

仮想ネットワークゲートウェイを置くためのサブネットとして、ゲートウェイサブネットを作ります。仮想ネットワーク(IPSec-TEST) ›› 設定 ›› サブネット ›› ゲートウェイ サブネット を開きます。名前は GatewaySubnet に決まっていて、変えられません。今回は 172.16.0.0/16 の中から 172.16.255.0/24 を割り当てます。

Azure portal(サブネットの追加)画面イメージ
名前GatewaySubnet(固定)
1サブネット アドレス範囲172.16.255.0/24
172.16.255.0 – 172.16.255.255 (251 + 5 個の Azure 予約アドレス)
図5 ゲートウェイサブネットの追加(実際の画面ではなく、設定項目のポイントを示したイメージです)

Azure は各サブネットで5個のアドレスを予約するので、/24 で使えるのは 251 個です。サブネットの一覧には、仮想マシン用とゲートウェイ用の2つが並びます。

Azure portal(仮想ネットワーク ›› サブネット)画面イメージ
名前IPv4IPv6使用可能な IP
IPSec-Subnet172.16.1.0/24–250
GatewaySubnet172.16.255.0/24–動的使用に依存する可用性
図6 サブネットの一覧(実際の画面ではなく、表示のポイントを示したイメージです)
補足

ゲートウェイサブネットには、ゲートウェイ以外のもの(仮想マシンなど)を置きません。大きさは、Basic SKU 以外では /27 以上が必要で、Microsoft は /27 以上を推奨しています。今回の /24 はこの条件を満たしています。

仮想マシンを作る

仮想マシン ›› 作成 で、172.16.1.0/24 上に疎通確認用の仮想マシンを作ります。今回は Windows Server にします。

Azure portal(仮想マシンの作成)画面イメージ
基本
1リソース グループfortigate_ipsec_test
仮想マシン名VM-1
地域(Asia Pacific) 西日本
可用性オプションインフラストラクチャ冗長は必要ありません
セキュリティの種類Standard
2イメージ[smalldisk] Windows Server 2019 Datacenter – Gen2
サイズStandard_B2s – 2 vcpu 数、4 GiB のメモリ
3ユーザー名・パスワード(伏せています) ●●●●●●●●
ネットワーク
4仮想ネットワークIPSec-TEST
サブネットIPSec-Subnet (172.16.1.0/24)
パブリック IP(新規) VM-1-ip
NIC ネットワーク セキュリティ グループ○ なし◉ Basic○ 詳細
パブリック受信ポート○ なし◉ 選択したポートを許可する
受信ポートを選択RDP (3389)
図7 仮想マシンの作成(実際の画面ではなく、2つのタブの設定項目をまとめたイメージです)
No.項目設定内容
1リソース グループ・名前・地域fortigate_ipsec_test、任意の名前(今回は VM-1)、西日本
2イメージ・サイズWindows Server 2019 の smalldisk 版。サイズは任意(今回は Standard_B2s)
3管理者アカウントログオンに使うユーザー名とパスワード
4ネットワーク仮想ネットワーク IPSec-TEST、サブネット 172.16.1.0/24、パブリック IP は(新規)と付いたもの

作成すると、仮想マシンにパブリック IP アドレスが割り当てられ、RDP で接続できるようになります。あとで ping による疎通確認をするので、検証では RDP でログインし、Windows のファイアウォールを無効にしました。

Azure portal(仮想マシン VM-1 ›› 概要)画面イメージ
オペレーティング システムWindows
サイズStandard B2s (2 vcpu 数、4 GiB メモリ)
1パブリック IP アドレス(伏せています)
仮想ネットワーク/サブネットIPSec-TEST/IPSec-Subnet
DNS 名未構成
図8 仮想マシンの概要(実際の画面ではなく、表示のポイントを示したイメージです)
注意
  • ping を通すだけなら、Windows のファイアウォールを丸ごと無効にしなくても、ICMPv4 のエコー要求を許可する受信規則を有効にすれば足ります。
  • RDP(3389)をインターネットに開けたままにするのは危険です。検証が終わったら閉じるか、接続元の IP アドレスを絞ってください。
  • 仮想マシンのネットワークセキュリティグループ(NSG)は、既定の規則で「VirtualNetwork」からの受信を許可しています。この VirtualNetwork には VPN でつながったオンプレミスのアドレス空間も含まれるので、10.0.200.0/24 からの ping は NSG を通過します。

仮想ネットワークゲートウェイを作る

FortiGate からの IPsec 接続を受ける VPN ゲートウェイとして、仮想ネットワーク ゲートウェイ ›› 作成 で仮想ネットワークゲートウェイを作ります。パブリック IP アドレスは新規に作ります。

Azure portal(仮想ネットワーク ゲートウェイの作成)画面イメージ
インスタンスの詳細
1名前VPNGW
地域西日本
2ゲートウェイの種類◉ VPN○ ExpressRoute
VPN の種類◉ ルート ベース○ ポリシー ベース
3SKUVpnGw1
世代Generation1
4仮想ネットワークIPSec-TEST
サブネットGatewaySubnet (172.16.255.0/24)
パブリック IP アドレスの種類○ Basic◉ Standard
パブリック IP アドレス
5パブリック IP アドレス◉ 新規作成○ 既存のものを使用
パブリック IP アドレス名VPNGW-PIP
パブリック IP アドレスの SKUStandard
図9 仮想ネットワークゲートウェイの作成(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1名前・地域任意の名前(今回は VPNGW)、西日本
2ゲートウェイの種類・VPN の種類VPN、ルートベース
3SKU・世代VpnGw1、Generation1
4仮想ネットワークSTEP 2 の IPSec-TEST。サブネットは自動で GatewaySubnet になる
5パブリック IP アドレス新規作成(今回は VPNGW-PIP)

作成が終わると、仮想ネットワークゲートウェイにパブリック IP アドレスが自動で割り当てられます。このアドレスが、FortiGate から見た IPsec トンネルの接続先になります。

Azure portal(仮想ネットワーク ゲートウェイ VPNGW ›› 概要)画面イメージ
SKUVpnGw1
ゲートウェイの種類VPN
VPN の種類ルート ベース
仮想ネットワークIPSec-TEST
1パブリック IP アドレス(伏せています)(VPNGW-PIP)
図10 仮想ネットワークゲートウェイの概要(実際の画面ではなく、表示のポイントを示したイメージです)
現在の状況

検証時は SKU に VpnGw1 を使いました。Azure では、可用性ゾーンに対応しない VpnGw1〜5 の SKU は 2025年11月1日以降は新規作成できなくなり、2026年9月以降に廃止される予定と案内されています。これから作る場合は、VpnGw1AZ などの可用性ゾーン対応 SKU を選びます。

ローカルネットワークゲートウェイを作る

FortiGate 側の WAN のアドレスと、FortiGate の先にあるサブネットを登録するローカルネットワークゲートウェイを、ローカル ネットワーク ゲートウェイ ›› 作成 で作ります。

Azure portal(ローカル ネットワーク ゲートウェイの作成)画面イメージ
1リソース グループfortigate_ipsec_test
地域西日本
名前LOC-GW
2エンドポイント◉ IP アドレス○ FQDN
3IP アドレス(伏せています)
4アドレス空間10.0.200.0/24
図11 ローカルネットワークゲートウェイの作成(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1リソース グループ・地域・名前fortigate_ipsec_test、西日本、任意の名前(今回は LOC-GW)
2エンドポイントIP アドレス
3IP アドレスFortiGate の WAN 側(wan1)の固定のグローバル IP アドレス
4アドレス空間FortiGate のローカルサブネット(10.0.200.0/24)。Azure はこの宛先の通信をトンネルへ送る

接続を追加する

仮想ネットワークゲートウェイに接続を追加し、ローカルネットワークゲートウェイと結び付けて、共有キーなどを設定します。仮想ネットワーク ゲートウェイ(VPNGW) ›› 設定 ›› 接続 ›› 追加 を開きます。

Azure portal(接続の追加)画面イメージ
ホーム ›› 仮想ネットワーク ゲートウェイ ›› VPNGW ›› 接続の追加
1名前Fortigate-VPN
2接続の種類サイト対サイト (IPsec)
3仮想ネットワーク ゲートウェイVPNGW
ローカル ネットワーク ゲートウェイLOC-GW
4共有キー (PSK)●●●●●●●●
Azure プライベート IP アドレスを使用する☐
BGP を有効にする☐
5IKE プロトコル○ IKEv1◉ IKEv2
図12 接続の追加(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1名前任意の名前。今回は Fortigate-VPN
2接続の種類サイト対サイト(IPsec)
3ゲートウェイ仮想ネットワークゲートウェイは VPNGW、ローカルネットワークゲートウェイは LOC-GW
4共有キー (PSK)事前共有鍵。FortiGate 側と同じ値にする
5IKE プロトコルIKEv2

FortiGate 側の設定

IPsec トンネルを作る

VPN ›› IPsec ウィザード で IPsec の設定をします。最初の画面で名前とテンプレートタイプを決め、次へ をクリックします。

FortiGate 管理画面画面イメージ
VPN ›› IPsec ウィザード ›› VPNセットアップ
1名前Azure-VPN
2テンプレートタイプ○ サイト間○ ハブアンドスポーク○ リモートアクセス◉ カスタム
< 戻る3次へ >キャンセル
図13 IPsec ウィザードの最初の画面(実際の画面ではなく、設定項目のポイントを示したイメージです)

次の画面で、ネットワーク、認証、フェーズ1、フェーズ2を設定します。

FortiGate 管理画面画面イメージ
VPN ›› IPsec トンネル ›› Azure-VPN
ネットワーク
IPバージョンIPv4
1リモートゲートウェイスタティックIPアドレス
IPアドレス(伏せています)
2インターフェースwan1 (port3)
3NATトラバーサル○ 有効◉ 無効○ 強制
4デッドピア検知○ 無効◉ アイドル時○ オンデマンド
DPD再試行回数・間隔3 回、20 s
認証
方式事前共有鍵
5事前共有鍵●●●●●●●●
6IKE バージョン○ 1◉ 2
フェーズ1プロポーザル
7暗号化 / 認証
暗号化認証
AES256SHA1
3DESSHA1
AES256SHA256
Diffie-Hellmanグループ☑ 2(ほかは ☐)
鍵の有効時間(秒)28800
フェーズ2の編集
ローカルアドレスサブネット 0.0.0.0/0.0.0.0
リモートアドレスサブネット 0.0.0.0/0.0.0.0
8フェーズ2プロポーザル
暗号化認証
AES256SHA1
3DESSHA1
AES256SHA256
Replay Detection / PFS☑ 有効 / ☑ 有効
Diffie-Hellmanグループ☑ 14 ☑ 5
9オートネゴシエーション☑
鍵の有効時間(秒)43200
図14 IPsec トンネルの設定(実際の画面ではなく、3つに分かれた画面の設定項目をまとめたイメージです)
No.項目設定内容
1リモートゲートウェイ・IPアドレススタティックIPアドレス。Azure の仮想ネットワークゲートウェイのパブリック IP アドレス(図10)
2インターフェースインターネット側の wan1 (port3)
3NATトラバーサル無効。FortiGate と Azure の間で NAT が入る環境では有効にする
4デッドピア検知アイドル時。通信がないときに相手の生存を確かめる
5事前共有鍵Azure の接続で設定した共有キー
6IKE バージョン2(Azure の接続と合わせる)
7フェーズ1AES256-SHA1、3DES-SHA1、AES256-SHA256。DH グループ 2、鍵の有効時間 28800 秒
8フェーズ2フェーズ1と同じ組み合わせ。ローカル・リモートのアドレスは 0.0.0.0/0(ルートベースの Azure に合わせ、宛先はルーティングで決める)
9オートネゴシエーション有効。通信を待たずにトンネルを張り、切れたときも自動で張り直す
暗号の設定について

フェーズ1の値(AES256-SHA1 などの組み合わせ、DH グループ 2、28800 秒)は、Azure のルートベース VPN ゲートウェイが既定で受け付ける組み合わせに含まれます。ただし、DH グループ 2(1024 ビット)や 3DES は今では強度が低い設定です。本番では、Azure の接続にカスタムの IPsec/IKE ポリシーを設定して、DH グループ 14 以上や AES256/SHA256 以上など、より強い組み合わせに両側をそろえることを検討してください。

スタティックルートを作る

ネットワーク ›› スタティックルート で 新規作成 をクリックし、Azure のサブネット 172.16.1.0/24 へのスタティックルートを作ります。インタフェースには、トンネルインタフェース Azure-VPN を指定します。

FortiGate 管理画面画面イメージ
ネットワーク ›› スタティックルート ›› スタティックルートの編集
自動ゲートウェイ検索○ オフ
1宛先◉ サブネット○ インターネットサービス
172.16.1.0/255.255.255.0
2インターフェースAzure-VPN
アドミニストレーティブ・ディスタンス10
ステータス◉ 有効化済み○ 無効化済み
図15 スタティックルートの作成(実際の画面ではなく、設定項目のポイントを示したイメージです)

ファイアウォールポリシーを作る

LAN からトンネルインタフェースへのポリシーを作ります。端末のアドレスのまま Azure へ届けるため、NAT は無効にします。

FortiGate 管理画面画面イメージ
ポリシー&オブジェクト ›› ファイアウォールポリシー ›› 新規ポリシー
名前To_Azure_VPN
1着信インターフェースlan (port2)
発信インターフェースAzure-VPN
送信元all
2宛先172.16.1.0/24
スケジュールalways
サービスALL
アクション◉ 許可○ 拒否
インスペクションモード◉ フローベース○ プロキシベース
3NAT○ オフ
図16 ファイアウォールポリシーの作成(実際の画面ではなく、設定項目のポイントを示したイメージです)

作成すると、ポリシーの一覧に次のように表示されます。

FortiGate 管理画面画面イメージ
ポリシー&オブジェクト ›› ファイアウォールポリシー
名前FromTo送信元宛先サービスアクションNAT
To_Azure_VPNlan (port2)Azure-VPNall172.16.1.0/24ALL✔ 許可 無効化済み
図17 ポリシーの一覧(実際の画面ではなく、表示のポイントを示したイメージです)
補足

このポリシーは LAN → Azure 方向だけです。Azure 側から FortiGate の LAN へ通信を始める必要がある場合は、逆向き(Azure-VPN → lan)のポリシーも作ります。

ポリシーを作ったあとで VPN ›› IPsec トンネル を見ると、トンネルインタフェース Azure-VPN がアップしています。

FortiGate 管理画面画面イメージ
VPN ›› IPsec トンネル
トンネルインターフェースバインディングステータス
Azure-VPNwan1 (port3)1 アップ
図18 IPsec トンネルの一覧(実際の画面ではなく、表示のポイントを示したイメージです)

緑のアイコンと「アップ」は、トンネルが確立していることを表します。

動作確認

端末(10.0.200.100)から Azure 上の仮想マシン(172.16.1.4)へ ping を打ちます。

端末(10.0.200.100)のコマンドプロンプト画面イメージ
C:\Users\(伏せています)>ping 172.16.1.4 Pinging 172.16.1.4 with 32 bytes of data:1Reply from 172.16.1.4: bytes=32 time=13ms TTL=127Reply from 172.16.1.4: bytes=32 time=12ms TTL=127Reply from 172.16.1.4: bytes=32 time=13ms TTL=127Reply from 172.16.1.4: bytes=32 time=12ms TTL=127 Ping statistics for 172.16.1.4:    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-seconds:    Minimum = 12ms, Maximum = 13ms, Average = 12ms
図19 端末から Azure の仮想マシンへの ping(実際の画面ではなく、表示内容のポイントを示したイメージです)

4回とも応答があり、IPsec 経由で仮想マシンと通信できています。ログ&レポート ›› 転送トラフィック を見ると、この通信に IPsec 用のポリシー To_Azure_VPN が適用されていることがわかります。

FortiGate 管理画面画面イメージ
ログ&レポート ›› 転送トラフィック
送信元宛先サービス結果ポリシーID
10.0.200.100172.16.1.4PING✔ 3.30 kB / 3.30 kB1To_Azure_VPN (3)
図20 転送トラフィックのログ(実際の画面ではなく、表示のポイントを示したイメージです)

うまくいかないとき

状態よくある原因確認すること
トンネルがアップしない共有キー、IKE のバージョン、フェーズ1・2の暗号の組み合わせが両側で合っていないAzure の接続と FortiGate の IPsec 設定を見比べる。FortiGate では diagnose vpn ike 系のデバッグで交渉の失敗理由を見る
トンネルがアップしないリモートゲートウェイやローカルネットワークゲートウェイの IP アドレスの誤りFortiGate のリモートゲートウェイが VPNGW のパブリック IP か、LOC-GW の IP が FortiGate の wan1 のアドレスかを確かめる
トンネルはアップするが ping が通らないFortiGate のルート・ポリシーがない、NAT が有効、LOC-GW のアドレス空間に 10.0.200.0/24 がないスタティックルートとポリシー、LOC-GW のアドレス空間を確かめる
FortiGate のログでは許可されているのに応答がない仮想マシンの OS のファイアウォールが ICMP を拒否しているWindows ファイアウォールで ICMPv4 のエコー要求が許可されているかを確かめる

まとめ

Azure 側で5種類のリソースを作り、FortiGate 側で IPsec、ルート、ポリシーを設定して、オンプレミスの端末から Azure の仮想マシンへ IPsec 経由で通信できることを確認しました。設定した項目をまとめます。

場所設定今回の値
Azureリソースグループfortigate_ipsec_test(西日本)
Azure仮想ネットワーク・サブネットIPSec-TEST 172.16.0.0/16、IPSec-Subnet 172.16.1.0/24、GatewaySubnet 172.16.255.0/24
Azure仮想マシンVM-1(172.16.1.4)
Azure仮想ネットワークゲートウェイVPNGW(VPN、ルートベース、VpnGw1)
AzureローカルネットワークゲートウェイLOC-GW(IP は FortiGate の wan1、アドレス空間 10.0.200.0/24)
Azure接続Fortigate-VPN(サイト対サイト、共有キー、IKEv2)
FortiGateIPsec トンネルAzure-VPN(wan1、IKEv2、フェーズ1・2 は AES256-SHA1 ほか)
FortiGateスタティックルート172.16.1.0/24 → Azure-VPN
FortiGateポリシーTo_Azure_VPN(lan → Azure-VPN、NAT 無効)
現在の状況

この記事は FortiOS 7.0.3 で検証しました。FortiOS 7.0 系はすでにサポートが終了しています。新しいバージョンや現在の Azure portal では、画面の項目名や配置が変わっています。

この構成を2本のトンネルにして SD-WAN で振り分ける手順は、【Fortigate】IPSec + SD-WAN機能の動作確認 で紹介しています。

コメント