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

FortiGate 拠点間 IPsec VPN 接続設定ガイド

目次

本記事について

本記事では、Fortinet 社のファイアウォール製品である FortiGate について、各拠点の VPN 装置間を IPsec VPN で接続するための設定方法を説明します。

動作確認環境

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

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

想定するシナリオ

この組織には拠点Aと拠点Bがあり、拠点Aには FortiGate があり拠点B には Cisco C891FJ ルータがあります。
それぞれの機器を VPN 装置として設定し、拠点間を IPsec VPN で接続します。

なお、Cisco ルータ側ではルートベースの IPsec VPN が設定されていることを前提とします。

IPsec VPN の設定方法

設定は以下の手順で行います。

  • IKE フェーズ1 の設定
  • IKE フェーズ2 の設定
  • トンネルインターフェースの設定
  • スタティックルートの設定
  • ファイアウォールポリシーの設定

なおここでは IKE フェーズ1、IKE フェーズ2 の設定は CLI で行うこととします。

IKE フェーズ1 の設定

IKE フェーズ1 のコンフィグはconfig vpn ipsec phase1-interfaceです。

config vpn ipsec phase1-interface
    edit "Tunnel0"
        set interface "wan1"
        set peertype any
        set net-device disable
        set proposal aes256-sha256
        set dpd disable
        set dhgrp 15
        set nattraversal disable
        set remote-gw 100.2.1.50
        set psksecret ENC dLtaL1eBtsu85f94v3HWosaKxPTCanDkUmBFrK03hGII8xpYUbRQZ03lTXcjh0uNRKJl/szc6qjYPmQC5RdwNnphD29KJ3xUILZGVO5l7a0tZPvqFko4g81b+qb/cJMwug+Nla4lgWuW01xi97umtYvRhWlX4/H+YWg3PlVGWJ9t6RpEmxAziVEqewQNgcjM/xI11g==
    next
end

上のコンフィグ例のように、一つの IPsec トンネルが一つのedit項目に対応します。

ここでは IKE フェーズ1 設定のパラメータを以下の通りとしますが、設定値は案件の要件に合わせてください。

◆IKE フェーズ1

設定項目CLI 設定項目ここでの設定値
WAN接続インターフェース (FortiGate)interfacewan1
IKE フェーズ1 設定名edit ID 値Tunnel0
IKE バージョンike-version1
暗号化アルゴリズムproposalaes256
ハッシュアルゴリズムproposalsha256
認証方式authmethod事前共有鍵
オートネゴシエーションauto-negotiate有効
DH グループdhgrp15
ISAKMP ライフタイムkeylife86400秒
事前共有鍵psksecretipsec-password
IKE キープアライブ(DPD)有効化dpd無効
IKE モードmodeMain
ISAKMP のピアアドレスremote-gw100.2.1.50
NAT トラバーサル有効化nattraversal無効
config vpn ipsec phase1-interface
    edit "Tunnel0"
        set interface "wan1"
        set ike-version 1
        set proposal aes256-sha256
        set authmethod psk
        set auto-negotiate enable
        set dhgrp 15
        set keylife 86400
        set psksecret ipsec-password
        set dpd disable
        set mode main
        set remote-gw 100.2.1.50
        set nattraversal disable
    next
end

トンネルインターフェースの自動作成

IKE フェーズ1 の設定を行うと、インターフェース設定内にトンネルインターフェースのコンフィグが自動で追加されます。

config system interface
    edit "Tunnel0"
        set vdom "root"
        set type tunnel
        set snmp-index 15
        set interface "wan1"
    next
end

上のコンフィグ例の通り、type が tunnel で IKE フェーズ1 で設定した WAN 接続インターフェースに紐づく設定となります。

IKE フェーズ2 の設定

IKE フェーズ2 のコンフィグはconfig vpn ipsec phase2-interfaceです。

config vpn ipsec phase2-interface
    edit "Tunnel0"
        set phase1name "Tunnel0"
        set proposal aes256-sha256
        set pfs disable
        set auto-negotiate enable
    next
end

上のコンフィグ例のように、一つの IPsec トンネルが一つのedit項目に対応します。

ここでは IKE フェーズ2 設定のパラメータを以下の通りとしますが、設定値は案件の要件に合わせてください。

◆IKE フェーズ2

設定項目CLI 設定項目ここでの設定値
IKE フェーズ2 設定名edit ID 値Tunnel0
対応付ける IKE フェーズ1 の設定名phase1nameTunnel0
暗号化アルゴリズムproposalaes256
認証アルゴリズムproposalsha256
PFS グループpfs無効
オートネゴシエーションauto-negotiate有効
IPsec SA ライフタイムkeylifeseconds43200秒
IPsec 通信モードencapsulationトンネルモード
ローカルプロキシIDsrc-subnet0.0.0.0 0.0.0.0
リモートプロキシIDdst-subnet0.0.0.0 0.0.0.0
config vpn ipsec phase2-interface
    edit "Tunnel0"
        set phase1name "Tunnel0"
        set proposal aes256-sha256
        set pfs disable
        set auto-negotiate enable
        set keylifeseconds 43200
        set encapsulation tunnel-mode
        set src-subnet 0.0.0.0 0.0.0.0
        set dst-subnet 0.0.0.0 0.0.0.0
    next
end

対向 VPN 装置が Cisco 機器でポリシーベース VPN が設定されている場合、ローカルプロキシID、リモートプロキシID を対向 VPN 装置と厳密に合わせないと IPsec 確立ができないとの情報があったため注意してください。

トンネルインターフェースの設定

IKE フェーズ1 の設定後に自動作成されたトンネルインターフェースに対して IP アドレスと対向のアドレスを設定します。

設定項目CLI 設定項目ここでの設定値
トンネルインターフェースのアドレスip10.1.254.1
対向機器のトンネルアドレスremote-ip10.1.254.2
config system interface
    edit "Tunnel0"
        set ip 10.1.254.1 255.255.255.255
        set remote-ip 10.1.254.2 255.255.255.255
    next
end

ipremote-ipのサブネットは255.255.255.255とします。

設定後のトンネルインターフェースのコンフィグは以下のようになります。

config system interface
    edit "Tunnel0"
        set vdom "root"
        set ip 10.1.254.1 255.255.255.255
        set type tunnel
        set remote-ip 10.1.254.2 255.255.255.255
        set snmp-index 15
        set interface "wan1"
    next
end

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

拠点Aから拠点Bに通信する際には IPsec トンネルを通るようスタティックルートの設定を行います。

以下のように拠点B宛のルートを設定します。発信インターフェースはトンネルインターフェースとします。

config router static
    edit 2
        set dst 10.2.1.0 255.255.255.0
        set device "Tunnel0"
    next
end

edit ID は未使用の番号を使用してください。上のコンフィグ例のedit 2はあくまで例です。

ここでは説明を省略していますが IPsec 確立のために対向 VPN 装置のグローバル IP 宛ルートも必要です。通常は WAN 向けのデフォルトルートで対応できますが、対向 VPN 装置へのルートが存在しない場合は追加で設定してください。

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

拠点Aから拠点Bへの通信を許可するファイアウォールポリシーを設定します。

以下のように発信インターフェースをトンネルインターフェースと設定することがポイントです。

その他の項目は通常のファイアウォールポリシーの設定と同様に設定します。

必要に応じて拠点Bから拠点Aへの通信を許可するファイアウォールポリシーも設定します。この場合は以下のように着信インターフェースをトンネルインターフェースと設定します。

以上で設定は完了です。

IPsec VPN 状態確認

GUI の IPsec トンネル画面

GUI の「VPN > IPsecトンネル」画面でトンネルのアップ・ダウン状態を確認できます。

ステータス」欄の「アップ」をクリックします。

以下の画面が表示され、着信・発信データ量とフェーズ1・フェーズ2それぞれのステータスを確認できます。

GUI で確認できるのはここまでです。これ以上の詳細情報を確認するためには CLI で以下のコマンドを実行する必要があります。

get vpn ike gateway

IPsec 接続に成功している場合

以下のように11行目の IKE SA、12行目の IPsec SA 状態でestablished: 1/1と表示されます。また16行目にstatus: establishedと表示されます。

FortiGate-60F # get vpn ike gateway

vd: root/0
name: Tunnel0
version: 1
interface: wan1 5
addr: 100.1.1.50:500 -> 100.2.1.50:500
created: 1174s ago
peer-id: 100.2.1.50
peer-auth: no
IKE SA  created: 1/1  established: 1/1  time: 40/40/40 ms
IPsec SA  created: 1/1  established: 1/1  time: 50/50/50 ms

  id/spi: 95 8ad384940d7e43a8/2b17f58bfe2c4b16
  direction: initiator
  status: established 1174-1174s ago = 40ms
  proposal: aes-256-sha256
  key: 3e07e7bf8968a84e-2c7c5c59fe6c3a67-18610faa504c62cd-f3bfce317ad50be0
  lifetime/rekey: 86400/84925
  DPD sent/recv: 00000000/00000000

IPsec 接続できていない場合

以下のように14行目にstatus: connectingと表示されます。

FortiGate-60F # get vpn ike gateway

vd: root/0
name: Tunnel0
version: 1
interface: wan1 5
addr: 100.1.1.50:500 -> 100.2.1.50:500
created: 27s ago
IKE SA  created: 1/1
IPsec SA  created: 1/1

  id/spi: 98 c8eb0c933c868d38/0000000000000000
  direction: initiator
  status: connecting, state 3, started 27s ago

get vpn ipsec tunnel summary

IPsec 接続に成功している場合

IPsec 接続が成功するとselectors(total,up): 1/1のように up の数値がカウントアップします。
また通信が発生するとrx(pkt,err): 1/0 tx(pkt,err): 2/0のように pkt の数値がカウントアップします。

FortiGate-60F # get vpn ipsec tunnel summary
'Tunnel0' 100.2.1.50:0  selectors(total,up): 1/1  rx(pkt,err): 1/0  tx(pkt,err): 2/0

IPsec 接続できていない場合

IPsec 接続できていないとselectors(total,up): 1/0のように up の数値が 0 のままです。
またrx(pkt,err): 0/0 tx(pkt,err): 0/0のように pkt の数値も 0 のままです。

FortiGate-60F # get vpn ipsec tunnel summary
'Tunnel0' 100.2.1.50:0  selectors(total,up): 1/0  rx(pkt,err): 0/0  tx(pkt,err): 0/0

get vpn ipsec tunnel details

IPsec 接続に成功している場合

IPsec 接続が成功すると、以下のように10,11行目の rx,tx のパケットの数値がカウントアップします。また19行目以降の SA の情報が表示されます。

FortiGate-60F # get vpn ipsec tunnel details

gateway
  name: 'Tunnel0'
  local-gateway: 100.1.1.50:0 (static)
  remote-gateway: 100.2.1.50:0 (static)
  dpd-link: on
  mode: ike-v1
  interface: 'wan1' (5) vrf:0
  rx  packets: 8  bytes: 1026  errors: 0
  tx  packets: 15  bytes: 978  errors: 0
  dpd: disabled
  selectors
    name: 'Tunnel0'
    auto-negotiate: enable
    mode: tunnel
    src: 0:0.0.0.0/0.0.0.0:0
    dst: 0:0.0.0.0/0.0.0.0:0
    SA
      lifetime/rekey: 3600/2938
      mtu: 1438
      tx-esp-seq: e
      replay: enabled
      qat: 0
      inbound
        spi: 9a8b7a16
        enc:  aes-cb  cea27ed339468d0822abfe0e8be2e97902330a3b7e14aa06d605f44f00f97d4f
        auth: sha256  db28faa15e13bc9b9ca35beffcb0344ba4714d413568e31ae4e06344281675b2
      outbound
        spi: c35d1ff3
        enc:  aes-cb  372f03ea82c1d1cf61ad01742b4f0aead75bfe4313d5e8d724f75394048cd8c4
        auth: sha256  c5a8f9381a1da1ce576a1a87e4f2a4f304871717f0190f04a7b89f57b9f7ec59
      NPU acceleration: encryption(outbound) decryption(inbound)

IPsec 接続できていない場合

IPsec 接続ができていないと、以下のように10,11行目の rx,tx のパケットの数値が 0 のままです。また19行目以降の SA の情報が表示されません。

FortiGate-60F # get vpn ipsec tunnel details

gateway
  name: 'Tunnel0'
  local-gateway: 100.1.1.50:0 (static)
  remote-gateway: 100.2.1.50:0 (static)
  dpd-link: off
  mode: ike-v1
  interface: 'wan1' (5) vrf:0
  rx  packets: 0  bytes: 0  errors: 0
  tx  packets: 0  bytes: 0  errors: 0
  dpd: disabled
  selectors
    name: 'Tunnel0'
    auto-negotiate: enable
    mode: tunnel
    src: 0:0.0.0.0/0.0.0.0:0
    dst: 0:0.0.0.0/0.0.0.0:0

その他の diagnose 系コマンド

diagnose 系コマンドとして以下がありますが、取得できる情報は上記の get コマンドとあまり変わりません。

  • diagnose vpn ike status summary
  • diagnose vpn ike gateway
  • diagnose vpn ike status detailed
  • diagnose vpn ipsec status
  • diagnose vpn tunnel list

操作系コマンド

  • diagnose vpn ike restart
    • IKE の再起動ができます
  • diagnose vpn ike gateway clear
    • IKE ゲートウェイのクリアができます

設定は正しいのに上手く動作しない場合は上記のコマンドでリセットしてみると上手くいくかもしれません。

以上です。


【おすすめ】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をコピーしました!

コメント

コメント一覧 (2件)

  • 設定非常に参考になります。
    スタティックルートの設定で宛先のセグメントのIPが違うように見受けられます。

    • ご連絡ありがとうございます!
      どちらかというと図の方が間違えていたので、図を修正しました。

コメントする

目次