This site covers Fortinet and A10 as part of *** Shadowgarden.org ***

FortiGate v7.6.6 拠点間 IPsec VPN (IKEv2) 設定ガイド

目次

本記事について

本記事では、Fortinet 社のファイアウォール製品である FortiGate について、拠点間で IPsec VPN 接続を確立し、それぞれの拠点のローカルネットワーク間で IPsec トンネルを介した通信を行う方法について説明します。

動作確認環境

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

  • FortiGate-60F
    • FortiOS 7.6.6

前提と事前決定事項

WAN を介して接続可能な2つの拠点の双方で FortiGate が直接 WAN に接続しています。この2台の FortiGate 間で IPsec VPN 接続を行うことを目的とします。

拠点内部セグメント間で IPsec トンネルを介した通信を行うことを想定します。

IKE バージョンは 2 を推奨

IKE バージョンについては 1 と 2 のどちらかを選択して使用可能ですが、FortiOS 7.6.6 ではバージョン 2 がデフォルトであり、セキュリティ面からもバージョン 2 を使用することをお勧めします。本記事では IKEv2 を使用することを前提とします。

暗号化・認証アルゴリズムについて

IPsec VPN 設定のフェーズ1とフェーズ2のそれぞれで暗号化・認証アルゴリズムのペアを選択する必要があります。FortiGate のデフォルトの設定ではいくつかのペアが有効になっていますが、複数のアルゴリズムペアが有効の場合、対向ルータと共通のアルゴリズムの中から強度のより強いものが使用されます。

対向ルータで使用しているアルゴリズムを特定できる場合は複数のアルゴリズムを有効化する意味がないので、必要な1つのみに絞って有効化することをお勧めします。

アルゴリズムの選択基準としては1例としては CRYPTREC が公開している「電子政府推奨暗号リスト」が参考になります。2026年3月版に基づくと「表2 耐量子計算機暗号(PQC)リスト」に含まれる AES-256/SHA-512 のペアがお勧めです。

ただしより強度の高いアルゴリズム程 IPsec 確立時の計算時間やリソース消費が多くかかるといわれているため、IPsec 確立時の動作やリソース状況に問題が無いかは確認することをお勧めします。

DH グループについて

IPsec VPN 設定のフェーズ1とフェーズ2のそれぞれで DH グループを指定する必要があります。DH グループは番号が大きいほどセキュリティ強度が高いとされています。

FortiOS 7.6.6 のデフォルトでは 20,21 が有効になっていますが、DH グループも対向ルータで使用している DH グループを特定できる場合は複数の番号を有効化する意味がないので、必要な1つのみに絞って有効化することをお勧めします。

DH グループの選定に関しては Fortinet コミュニティに以下情報があります。

重要なポイント:

  • グループ1、2、5 → レガシー。後方互換性のためにどうしても必要な場合を除き、使用を避けてください。
  • グループ14(MODP 2048) →楕円曲線グループが利用できない場合はベースラインセーフ。
  • グループ19および20(ECP) →楕円曲線グループ、効率的で推奨されます。
  • グループ21(MODP 3072) →14よりも強度が高いが重量も重い。ECCが使用できない場合は許容範囲内とみなされる。
  • グループ31(Curve25519) → 最新鋭で、セキュリティとパフォーマンスの両面で非常におすすめです。

FortiGateでは、IPsecフェーズ1または2を設定する際に、ピアの互換性に応じてグループ14、19、20、または31を選択するのがベストプラクティスです 。

https://community.fortinet.com/fortigate-3/technical-tip-understanding-diffie-hellman-groups-and-ikev1-vs-ikev2-in-fortigate-vpns-211318

トンネルインターフェースの IP アドレスはオプション

FortiGate では IPsec の設定を行うと対応するトンネルインターフェースが作成されます。トンネルインターフェースには IP アドレスを設定することができますが、必須ではなくオプションです。

トンネルインターフェースに IP アドレスを設定するとトンネルインターフェース宛の Ping、SSH、HTTPS 等の管理アクセス等をすることができますが、必要ないのであれば IP アドレスを設定する必要はありません。

GUI の VPN ウィザードでの設定は非推奨

GUI の VPN ウィザードは手軽に IPsec の設定ができますが、使用するオブジェクト、ポリシー、スタティックルートが自動で作成されるため柔軟な設定ができず結局設定後に手動で調整が必要になります。また各オブジェクトにコメントで VPN ウィザードで設定した旨のコメントが設定されます。このため FortiGate 設計・構築案件においては VPN ウィザードを使用して設定することは非推奨です。

本記事では VPN ウィザードではなく、通常の新規トンネル作成画面での設定方法、CLI での設定方法について説明します。

拠点間 IPsec VPN 設定の流れ

インターフェース IP アドレス設定、対向拠点と疎通するためのルーティング設定については完了していることを前提とします。

拠点間 IPsec VPN は以下の流れで設定します。

STEP
IPsec 通信を行う自拠点アドレスグループ、対向拠点アドレスグループの作成

IPsec ではローカルプロキシID、リモートプロキシIDと呼ばれる、IPsec 通信を行う自拠点と対向拠点のアドレスを定義する必要があります。この設定で使用するアドレスオブジェクトおよびアドレスグループを作成します。

STEP
IPsec フェーズ1 の設定、IPsec フェーズ2 の設定

IPsec 設定にはフェーズ1とフェーズ2の2段階があります。それぞれ設定します。

STEP
IPsec 通信用スタティックルートの設定

IPsec トンネルを通したい宛先ネットワークについて IPsec トンネルを出力先とするスタティックルートを設定します。また必要に応じて IPsec トンネル未確立時はパケットを破棄するようブラックホールルートを作成します。

STEP
IPsec 通信用ファイアウォールポリシーの設定

IPsec 通信についても通常の通信と同様にファイアウォールポリシーで許可設定を行う必要があります。送信元側拠点と宛先側拠点それぞれでポリシー設定が必要です。

  • 送信元側拠点 → 内部インターフェースを入力、トンネルインターフェースを出力とするポリシー
  • 宛先側拠点 → トンネルインターフェースを入力、内部インターフェースを出力とするポリシー

拠点間 IPsec VPN 設定手順 (GUI、CLI)

この項目では拠点A側の FortiGate を設定する場合の設定例を掲載します。拠点B側の FortiGate でも同様に設定してください。

① アドレスオブジェクト、アドレスグループの設定

まず、IPsec 設定およびスタティックルートで使用するアドレスオブジェクト、アドレスグループを作成します。

本記事の構成例の場合、拠点A、拠点Bの内部セグメントに対応するアドレスオブジェクト、グループを作成します。

作成するオブジェクト、グループ例
  • アドレスオブジェクト
    • 10.1.1.0/24・・・拠点A側内部セグメント
    • 10.1.2.0/24・・・拠点A側内部セグメント
    • 10.2.1.0/24・・・拠点B側内部セグメント
    • 10.2.2.0/24・・・拠点B側内部セグメント
  • アドレスグループ
    • IPsec_Group_A
      • メンバー:10.1.1.0/24、10.1.2.0/24
    • IPsec_Group_B
      • メンバー:10.2.1.0/24、10.2.2.0/24

GUI 設定手順

STEP
アドレスオブジェクト新規作成画面表示

左メニューから「ポリシー&オブジェクト > アドレス」を開き、「Address」タブにある「新規作成」をクリックします。

STEP
アドレスオブジェクトの作成

拠点A側内部セグメントを示すアドレスと、拠点B側内部セグメントを示すアドレスを作成します。これらのアドレスは拠点別にグループ化するためインターフェースを「any」にする必要があります

なお、拠点Aの FortiGate では拠点Bの内部セグメントを示すアドレスオブジェクトを後で設定するスタティックルート設定の宛先としても使用予定のためルーティング設定」を ON にすることがポイントです。

STEP
アドレスグループ新規作成画面表示

左メニューから「ポリシー&オブジェクト > アドレス」を開き、「Address Group」タブにある「新規作成」をクリックします。

STEP
アドレスグループの作成

拠点A側内部セグメントをまとめたグループと、拠点B側内部セグメントをまとめたグループを作成します。

なお、拠点Aの FortiGate では拠点Bの内部セグメントを示すアドレスグループを後で設定するスタティックルート設定の宛先としても使用予定のためルーティング設定」を ON にすることがポイントです。

CLI 設定手順

上の GUI 設定例と同等の設定を CLI を行う場合は以下の設定コマンドを実行します。

◆アドレスオブジェクト

config firewall address
    edit "10.1.1.0/24"
        set subnet 10.1.1.0 255.255.255.0
    next
    edit "10.1.2.0/24"
        set subnet 10.1.2.0 255.255.255.0
    next
    edit "10.2.1.0/24"
        set allow-routing enable
        set subnet 10.2.1.0 255.255.255.0
    next
    edit "10.2.2.0/24"
        set allow-routing enable
        set subnet 10.2.2.0 255.255.255.0
    next
end

◆アドレスグループ

config firewall addrgrp
    edit "IPsec_Group_A"
        set member "10.1.2.0/24" "10.1.1.0/24"
    next
    edit "IPsec_Group_B"
        set allow-routing enable
        set member "10.2.1.0/24" "10.2.2.0/24"
    next
end

② IPsec フェーズ1/フェーズ2 の設定

GUI 設定手順

STEP
VPNトンネル新規作成画面表示

左側メニューから「VPN > VPNトンネル」を開き、「新規作成」をクリックします。

STEP
IPsec フェーズ1 設定

以下のような設定画面が表示されるため各項目を要件に応じて設定します。ポイントとなる箇所にコメントを付けています。

STEP
IPsec フェーズ2 設定

以下のような設定画面が表示されるため各項目を要件に応じて設定します。ポイントとなる箇所にコメントを付けています。

STEP
トンネル追加完了確認

VPNトンネル画面にてリストにトンネルが追加されたことを確認します。

STEP
トンネルインターフェース追加確認

ネットワーク > インターフェース」画面にて WAN インターフェース配下にトンネルインターフェースが追加されていることを確認します。

CLI 設定手順

◆IPsec フェーズ1 設定

config vpn ipsec phase1-interfaceがフェーズ1 に該当するコンフィグ項目です。

以下は GUI 設定例と同等の設定コマンドです。

config vpn ipsec phase1-interface
    edit "Tunnel-To-B"
        set interface "wan1"
        set ike-version 2
        set peertype any
        set net-device disable
        set proposal aes256-sha512
        set dhgrp 20
        set nattraversal disable
        set transport udp
        set remote-gw 100.1.1.2
        set psksecret password
    next
end

デフォルト値も含むフルコンフィグだと以下です。

config vpn ipsec phase1-interface
    edit "Tunnel-To-B"
        set type static
        set interface "wan1"
        set ip-version 4
        set ike-version 2
        set local-gw 0.0.0.0
        set keylife 86400
        set authmethod psk
        unset authmethod-remote
        set peertype any
        set monitor-min 0
        set net-device disable
        set passive-mode disable
        set exchange-interface-ip disable
        set aggregate-member disable
        set packet-redistribution disable
        set peer-egress-shaping disable
        set mode-cfg disable
        set proposal aes256-sha512
        set localid ''
        set localid-type auto
        set auto-negotiate enable
        set negotiate-timeout 30
        set fragmentation enable
        set ip-fragmentation post-encapsulation
        set dpd on-demand
        set comments ''
        set npu-offload enable
        set dhgrp 20
        set suite-b disable
        set eap disable
        set ppk disable
        set wizard-type custom
        set reauth disable
        set idle-timeout disable
        set ha-sync-esp-seqno enable
        set fgsp-sync disable
        set inbound-dscp-copy disable
        set auto-discovery-sender disable
        set auto-discovery-receiver disable
        set auto-discovery-forwarder disable
        set encapsulation none
        set nattraversal disable
        set fragmentation-mtu 1200
        set childless-ike disable
        set rekey enable
        set fec-egress disable
        set fec-ingress disable
        set network-overlay disable
        set dev-id-notification disable
        set link-cost 0
        set kms ''
        set exchange-fgt-device-id disable
        set ems-sn-check disable
        set qkd disable
        set transport udp
        set remote-gw 100.1.1.2
        set add-gw-route disable
        set psksecret password
        set dpd-retrycount 3
        set dpd-retryinterval 20
    next
end

◆IPsec フェーズ1 設定後のトンネルインターフェース確認

フェーズ1 設定後、トンネルインターフェースが自動で追加されます。

FortiGate-60F-A # show system interface
config system interface
    #中略
    edit "Tunnel-To-B"
        set vdom "root"
        set type tunnel
        set snmp-index 15
        set interface "wan1"
    next
end

トンネルインターフェースのIPアドレス設定については以下の記事を参考にしてください。
https://kagechiku.com/fortigate-ipsec/#index_id6

◆IPsec フェーズ2 設定

config vpn ipsec phase2-interfaceがフェーズ1 に該当するコンフィグ項目です。

以下は GUI 設定例と同等の設定コマンドです。

config vpn ipsec phase2-interface
    edit "Tunnel-To-B"
        set phase1name "Tunnel-To-B"
        set proposal aes256-sha512
        set dhgrp 20
        set src-addr-type name
        set dst-addr-type name
        set src-name "IPsec_Group_A"
        set dst-name "IPsec_Group_B"
    next
end

デフォルト値も含むフルコンフィグだと以下です。

config vpn ipsec phase2-interface
    edit "Tunnel-To-B"
        set phase1name "Tunnel-To-B"
        set proposal aes256-sha512
        set pfs enable
        set dhgrp 20
        set replay enable
        set keepalive disable
        set auto-negotiate disable
        set inbound-dscp-copy phase1
        set auto-discovery-sender phase1
        set auto-discovery-forwarder phase1
        set keylife-type seconds
        set encapsulation tunnel-mode
        set comments ''
        set initiator-ts-narrow disable
        set diffserv disable
        set protocol 0
        set src-addr-type name
        set src-port 0
        set dst-addr-type name
        set dst-port 0
        set keylifeseconds 43200
        set src-name "IPsec_Group_A"
        set dst-name "IPsec_Group_B"
    next
end

③ IPsec 通信用スタティックルートの設定

GUI 設定手順

STEP
スタティックルート新規作成画面表示

左側メニューから「ネットワーク > スタティックルート」を開き、「新規作成」をクリックします。

STEP
対向拠点内部セグメント宛スタティックルート作成

以下の通りスタティックルートを設定し作成します。

宛先としてアドレスグループを指定したルートではなく、個別セグメントごとにサブネットタイプのルートを作成しても問題ありません。

STEP
(オプション)ブラックホールルート作成

Tunnel がダウンしている場合、対向拠点宛の通信がデフォルトルートに合致し WAN 向けにルーティングされる可能性があります。これを防止し、Tunnel がダウンしているときはパケット破棄するためにはブラックホールルートを作成します。

VPN ウィザードを使用してサイト間 IPsec VPN を設定した場合、自動でブラックホールルートが作成されます。

STEP
スタティックルート設定の確認

スタティックルート画面にてリストにルート設定が追加されたことを確認します。

CLI 設定手順

以下は GUI 設定例と同等の設定コマンドです。

config router static
    edit 2
        set device "Tunnel-To-B"
        set dstaddr "IPsec_Group_B"
    next
    edit 3
        set distance 254
        set blackhole enable
        set dstaddr "IPsec_Group_B"
        set vrf 0
    next
end

edit 番号は未使用の番号を指定してください。

④ IPsec 通信用ファイアウォールポリシーの設定

IPsec 通信についても通常の通信と同様にファイアウォールポリシーで許可設定を行う必要があります。送信元側拠点と宛先側拠点それぞれでポリシー設定が必要です。

  • 送信元側拠点 → 内部インターフェースを入力、トンネルインターフェースを出力とするポリシー
  • 宛先側拠点 → トンネルインターフェースを入力、内部インターフェースを出力とするポリシー

GUI 設定手順

STEP
ファイアウォールポリシー新規作成画面表示

左側メニューから「ポリシー&オブジェクト > ファイアウォールポリシー」を開き、「新規作成」をクリックします。

STEP
自拠点から対向拠点への通信を許可するポリシー設定

自拠点から対向拠点への通信要件がある場合は、該当する通信を許可するポリシーを作成します。IPsec トンネルを通る通信を対象とするためには発信インターフェースにトンネルインターフェースを指定します。

STEP
対向拠点から自拠点への通信を許可するポリシー設定

対向拠点から自拠点への通信要件がある場合は、該当する通信を許可するポリシーを作成します。IPsec トンネルを通る通信を対象とするためには着信インターフェースにトンネルインターフェースを指定します。

STEP
ファイアウォールポリシー設定の確認

ファイアウォールポリシー画面にてリストにポリシー設定が追加されたことを確認します。

CLI 設定手順

以下は GUI 設定例と同等の設定コマンドです。

config firewall policy
    edit 1
        set name "internal1_to_IPsec-To-B"
        set srcintf "internal1"
        set dstintf "Tunnel-To-B"
        set action accept
        set srcaddr "IPsec_Group_A"
        set dstaddr "IPsec_Group_B"
        set schedule "always"
        set service "ALL"
        set logtraffic all
    next
    edit 2
        set name "IPsec-To-B_to_internal1"
        set srcintf "Tunnel-To-B"
        set dstintf "internal1"
        set action accept
        set srcaddr "IPsec_Group_B"
        set dstaddr "IPsec_Group_A"
        set schedule "always"
        set service "ALL"
        set logtraffic all
    next
end

edit 番号は未使用の番号を指定してください。

以上で IPsec VPN 設定は完了です。

IPsec VPN 状態確認

GUI での状態確認

VPN トンネル画面にてトンネルのステータスがアップになっていることを確認します。ステータスの「アップ」をクリックすると詳細情報を表示できます。また「一致するログを表示」をクリックすることで関係する VPN ログを確認できます。

以下の詳細画面ではフェーズごとの状態を確認できます。

IPsec トンネル確立に成功している場合、VPN ログでは以下のようにフェーズ1、フェーズ2の success ログ、tunnle-up のログが表示されます。

CLI での状態確認

  • diagnose vpn ike gateway list
    • フェーズ1トンネルの状態確認
FortiGate-60F-A # diagnose vpn ike gateway list

vd: root/0
name: Tunnel-To-B
version: 2
interface: wan1 5
addr: 100.1.1.1:500 -> 100.2.1.1:500
tun_id: 100.2.1.1/::100.2.1.1
remote_location: 0.0.0.0
network-id: 0
transport: UDP
created: 835s ago
peer-id: 100.2.1.1
peer-id-auth: no
pending-queue: 0
PPK: no
IKE SA: created 1/2  established 1/1  time 30/30/30 ms
IPsec SA: created 1/2  established 1/1  time 10/10/10 ms

  id/spi: 39 48da26bd53ccec68/4fda1340bf20eb78
  direction: responder
  status: established 825-825s ago = 30ms
  proposal: aes256-sha512
  child: no
  SK_ei: ab71fa5a69773629-7a37d6cbfd5ddb52-d93f5bed6ababda3-e80b707b3a23e4f1
  SK_er: c65cc7177c058dd1-8b3f57b78d260a31-e8ac547b82c899cc-27f7fe88e7b905a8
  SK_ai: 7884fa171ab669c1-1a6f1d99a94c6b60-7d870050720e2e8d-7f028759744a9d45-5bcb4a9f5ec0a8f3-f5cbd66460dcbe8e-1d096d0dc7a2f318-83c5d14f57f3c7bd
  SK_ar: f21c83a83226b6a9-64ef8aa0f2cd4213-b472500b3b95a66d-0933ca45a3a9cb2d-1768af7d0972e107-25f7ecd87ccc7cac-59d3727ec2f257e0-01b097e6728a00af
  PPK: no
  message-id sent/recv: 0/2
  QKD: no
  PQC-KEM (IKE): no
  PQC-KEM (all IPsec): no
  lifetime/rekey: 86400/85304
  DPD sent/recv: 00000000/00000000
  peer-id: 100.2.1.1
  • diagnose vpn tunnel list
    • フェーズ2トンネルの状態確認
FortiGate-60F-A # diagnose vpn tunnel list
list all ipsec tunnel in vd 0
------------------------------------------------------
name=Tunnel-To-B ver=2 serial=1 100.1.1.1:0->100.2.1.1:0 nexthop=0.0.0.0 tun_id=100.2.1.1 tun_id6=::100.2.1.1 status=up dst_mtu=0 weight=1
bound_if=5 real_if=0 lgwy=static/1 tun=intf mode=auto/1 encap=none/552 options[0228]=npu frag-rfc  run_state=0 role=primary accept_traffic=1 overlay_id=0

proxyid_num=1 child_num=0 refcnt=4 ilast=42964199 olast=42964199 ad=/0
stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-demand on=1 status=ok idle=20000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
fec: egress=0 ingress=0
proxyid=Tunnel-To-B proto=0 sa=1 ref=2 serial=1
  src: 0:10.1.2.0-10.1.2.255:0 0:10.1.1.0-10.1.1.255:0
  dst: 0:10.2.1.0-10.2.1.255:0 0:10.2.2.0-10.2.2.255:0
  SA:  ref=3 options=10226 type=00 soft=0 mtu=1280 expire=41994/0B replaywin=2048
       seqno=1 esn=0 replaywin_lastseq=00000000 qat=0 rekey=0 hash_search_len=1
  life: type=01 bytes=0/0 timeout=42928/43200
  dec: spi=856163ab esp=aes key=32 6d6fa084cf8ad86bdac9a1b8d3b5367d278fcc8f59c85ec6b14528b60d95e4e0
       ah=sha512 key=64 5d10f35d92cf824a41a08bb8b8719c21da104059245bcc5cb1ba3091e2ddb9dbe0954ed63a93fd2fa4020aeb01458172ec52bf2948ac21c4480a147ffdbd8cc4
  enc: spi=f4334430 esp=aes key=32 728c15e7736fce745dbccae6f601480b4375afd6ae44e3dc906e6d487a063276
       ah=sha512 key=64 6fdf8a058a5783ec533061957bba5db0d0f3137323a1d1bc992d2cfe428e0f93ee49dfbfd51fd79c39a404a318d4443d9f22003a0e2b503686d6d1653315a22c
  dec:pkts/bytes=0/0, enc:pkts/bytes=0/0
  npu_flag=00 npu_rgwy=0.0.0.0:0 npu_lgwy=0.0.0.0:0 npu_selid=0
  dec_npuid=0 enc_npuid=0 dec_engid=-1 enc_engid=-1 dec_saidx=-1 enc_saidx=-1
  • get router info routing-table all
    • ルーティングテーブル表示
    • 対向拠点セグメント宛で Tunnel 出力のルートがインストールされていることを確認
FortiGate-60F-A # get router info routing-table all
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
       O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       V - BGP VPNv4
       * - candidate default

Routing table for VRF=0
S*      0.0.0.0/0 [10/0] via 100.1.1.2, wan1, [1/0]
C       10.1.1.0/24 is directly connected, internal1
S       10.2.1.0/24 [10/0] via Tunnel-To-B tunnel 100.2.1.1, [1/0]
S       10.2.2.0/24 [10/0] via Tunnel-To-B tunnel 100.2.1.1, [1/0]
C       100.1.1.0/30 is directly connected, wan1

CLI での状態確認については以下の記事も参考にしてください。
https://kagechiku.com/fortigate-ipsec/#index_id9

参考資料


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

Amazon アフィリエイトリンク

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

【アフィリエイト】ブログ始めるならおすすめ

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

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次