本記事について
本記事では、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) | interface | wan1 |
IKE フェーズ1 設定名 | edit ID 値 | Tunnel0 |
IKE バージョン | ike-version | 1 |
暗号化アルゴリズム | proposal | aes256 |
ハッシュアルゴリズム | proposal | sha256 |
認証方式 | authmethod | 事前共有鍵 |
オートネゴシエーション | auto-negotiate | 有効 |
DH グループ | dhgrp | 15 |
ISAKMP ライフタイム | keylife | 86400秒 |
事前共有鍵 | psksecret | ipsec-password |
IKE キープアライブ(DPD)有効化 | dpd | 無効 |
IKE モード | mode | Main |
ISAKMP のピアアドレス | remote-gw | 100.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 の設定名 | phase1name | Tunnel0 |
暗号化アルゴリズム | proposal | aes256 |
認証アルゴリズム | proposal | sha256 |
PFS グループ | pfs | 無効 |
オートネゴシエーション | auto-negotiate | 有効 |
IPsec SA ライフタイム | keylifeseconds | 43200秒 |
IPsec 通信モード | encapsulation | トンネルモード |
ローカルプロキシID | src-subnet | 0.0.0.0 0.0.0.0 |
リモートプロキシID | dst-subnet | 0.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
トンネルインターフェースの設定
IKE フェーズ1 の設定後に自動作成されたトンネルインターフェースに対して IP アドレスと対向のアドレスを設定します。
設定項目 | CLI 設定項目 | ここでの設定値 |
---|---|---|
トンネルインターフェースのアドレス | ip | 10.1.254.1 |
対向機器のトンネルアドレス | remote-ip | 10.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
ip
とremote-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
ファイアウォールポリシーの設定
拠点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 の設計構築中なら以下の記事も役立つかもです
- 基礎知識
- 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 のインストールも簡単にできます。
コメント
コメント一覧 (2件)
設定非常に参考になります。
スタティックルートの設定で宛先のセグメントのIPが違うように見受けられます。
ご連絡ありがとうございます!
どちらかというと図の方が間違えていたので、図を修正しました。