FortiGate で IPsec VPN を設定する例です。
作業環境
■ FortiGate
- 型番:FortiGate 60E
- バージョン:v6.0.9
■ ルータ
- Cisco C891FJ-K9
- バージョン:15.3(3)M5
IPsec VPN 設定手順
ネットワーク構成
IPsec VPN 設計
項目 | IKE フェーズ1 | IKE フェーズ2 |
セキュリティプロトコル | – | esp |
暗号化アルゴリズム | 3des | 3des |
ハッシュアルゴリズム | sha1 | – |
認証方式/認証アルゴリズム | pre-share | esp-sha-hmac |
DH/PFS グループ | 1 | 無効 |
ISAKMP/IPsec SA ライフタイム | 86400秒 | 3600秒 |
Pre-shared Key | password | – |
IPsec 通信モード | – | tunnel |
IKE キープアライブ(DPD) | 無効 | – |
IPsec の対象トラフィック | – | 10.10.1.0/24 ⇔ 10.10.3.0/24 |
IKE モード | Main | Quick |
ISAKMP/IPsec のピアアドレス | 200.1.1.1 (200.1.1.2) | 200.1.1.1 (200.1.1.2) |
ルータの設定
■ ルータの設定(IPsec VPN 用設定の抜粋)
# IKE ポリシーの設定(IKE フェーズ 1)
crypto isakmp policy 1
authentication pre-share
encryption 3des
group 1
hash sha
lifetime 86400
# 共通鍵の指定 (password) と対向ルータのIPアドレス (200.1.1.1) の設定
crypto isakmp key password address 200.1.1.1
# IPsec トランスフォーム (TF-SET) の設定
crypto ipsec transform-set TF-SET esp-3des esp-sha-hmac
mode tunnel
# IPsec トラフィックの送信元と送信先の定義
ip access-list extended A-ipsec
permit ip 10.10.3.0 0.0.0.255 10.10.1.0 0.0.0.255
# 暗号 MAP の設定(IKEフェーズ2の設定)
crypto map CP-MAP 1 ipsec-isakmp
match address A-ipsec
set peer 200.1.1.1
set transform-set TF-SET
set security-association lifetime seconds 3600
# インタフェースへ IPsec ポリシーを適用
interface fastEthernet 0
crypto map CP-MAP
# ルーティング設定
ip route 10.10.1.0 255.255.255.0 200.1.1.1
FortiGate の設定
IPsec トンネルの設定
GUI の [VPN]→[IPsecトンネル] と選択した画面で [新規作成] をクリックします。
以下の画面でテンプレートタイプ [カスタム] を選択後、名前を入力し、[次へ] をクリックします。ここで設定した名前がトンネルインターフェースの名前になります。
VPN トンネルの設定画面となるため、上に記載している設計通りに各項目を設定していきます。
各項目が設定できたら画面下部の [OK] ボタンをクリックします。
[IPsecトンネル] の画面でトンネルが追加されていることを確認します。
以上で IPsec トンネルについての設定は完了です。
CLI でのコンフィグ確認
上記の IPsec トンネルの設定によって追加されたコンフィグは以下の通りです。
config vpn ipsec phase1-interface
edit "hogeVPN"
set interface "wan2"
set peertype any
set proposal 3des-sha1
set dpd disable
set dhgrp 1
set nattraversal disable
set remote-gw 200.1.1.2
set psksecret ENC oSJbXdsXEV28XR7DANmxLBxh+M3zVbguy28zXzi810jOv/9DFxEbPbiF4+wb5R8a+gLMvUh6f/Ls5z6rVNZPkBRKbgMiuzSbtApOHydyUSVUji1K7U/M4gk/t8m1V4cbSfMSzs3cjEGAa5X3jLzoBx5k53wxS8zqMrIo4l2y72QF2V4xOrC+1MJo3JmWeIAnOqA/iQ==
next
end
config vpn ipsec phase2-interface
edit "hogeVPN"
set phase1name "hogeVPN"
set proposal 3des-sha1
set pfs disable
set keylifeseconds 3600
set src-subnet 10.10.1.0 255.255.255.0
set dst-subnet 10.10.3.0 255.255.255.0
next
end
#### 以下は↑を投入すると自動で入る
config system interface
edit "hogeVPN"
set vdom "root"
set type tunnel
set snmp-index 16
set interface "wan2"
next
end
CLI で設定する場合は、config vpn ipsec phase1-interface と config vpn ipsec phase2-interface の設定を投入するだけで良く、config system interface のトンネルインターフェースの設定は自動で追加されます。
ポリシーの設定
VPN 内で通信できるようポリシーを設定します。
まずアドレスオブジェクトを追加します。以下のように 10.10.3.0/24 のアドレスオブジェクトを作成します。ここで、インターフェースには上で作成したトンネルインターフェースを設定します。
10.10.1.0/24 のアドレスオブジェクトについても作成します。
続いてポリシーを設定します。
以下のように 10.10.1.0/24 から 10.10.3.0/24 への通信を許可するポリシーを作成します。
同様に 10.10.3.0/24 から 10.10.1.0/24 への通信を許可するポリシーも作成します。
以上でポリシーの設定は完了です。
スタティックルートの設定
VPN へのルートを追加します。インターフェースにはトンネルインターフェースを指定します。
端末間の疎通確認
この時点で端末 A と端末 B の疎通が取れる状態になっているはずなので端末 A と端末 B の間で ping をしてみます。
■ 端末 A → 端末 B の ping
※ 最初の通信時は VPN 確立のために疎通できるまでに少し時間がかかります
■ 端末 B → 端末 A の ping
疎通確認後、FortiGate の GUI の [IPsecトンネル] 画面のステータスがアップになっていることを確認します。
CLI での状態確認(FortiGate)
IPsec トンネルの状態サマリ
FGT # get vpn ipsec tunnel summary
'hogeVPN' 200.1.1.2:0 selectors(total,up): 1/1 rx(pkt,err): 1/0 tx(pkt,err): 6/3
rx/tx がカウントアップしていること。
IPsec トンネルの状態詳細
FGT # get vpn ipsec tunnel details
gateway
name: 'hogeVPN'
type: route-based
local-gateway: 200.1.1.1:0 (static)
remote-gateway: 200.1.1.2:0 (static)
mode: ike-v1
interface: 'wan2' (6)
rx packets: 1 bytes: 112 errors: 0
tx packets: 6 bytes: 360 errors: 3
dpd: on-demand/negotiated idle: 20000ms retry: 3 count: 0
selectors
name: 'hogeVPN'
auto-negotiate: disable
mode: tunnel
src: 0:10.10.1.0/255.255.255.0:0
dst: 0:10.10.3.0/255.255.255.0:0
SA
lifetime/rekey: 3600/939
mtu: 1446
tx-esp-seq: 7
replay: enabled
inbound
spi: b6d3bcf0
enc: 3des a4593314d86840877574ce505f3cb5a1da5dad776bcdcabd
auth: sha1 a17f6c017664fa6a9f04306451f1012af1290eb6
outbound
spi: 930527e7
enc: 3des 2b0e04adf13362a39983efde93b753e2e7c2419e2ba45451
auth: sha1 0cbc298567e94e4e711582a2a1728c22dbb9f6cf
NPU acceleration: encryption(outbound) decryption(inbound)
rx/tx がカウントアップしていること。
VPN トンネルリストの表示
FGT # diagnose vpn tunnel list
list all ipsec tunnel in vd 0
------------------------------------------------------
name=hogeVPN ver=1 serial=5 200.1.1.1:0->200.1.1.2:0
bound_if=6 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/8 options[0008]=npu
proxyid_num=1 child_num=0 refcnt=10 ilast=4 olast=184 ad=/0
stat: rxp=1 txp=6 rxb=112 txb=360
dpd: mode=on-demand on=1 idle=20000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=hogeVPN proto=0 sa=1 ref=2 serial=1
src: 0:10.10.1.0/255.255.255.0:0
dst: 0:10.10.3.0/255.255.255.0:0
SA: ref=6 options=10226 type=00 soft=0 mtu=1446 expire=767/0B replaywin=1024
seqno=7 esn=0 replaywin_lastseq=00000001 itn=0
life: type=01 bytes=0/0 timeout=3300/3600
dec: spi=b6d3bcf0 esp=3des key=24 a4593314d86840877574ce505f3cb5a1da5dad776bcdcabd
ah=sha1 key=20 a17f6c017664fa6a9f04306451f1012af1290eb6
enc: spi=930527e7 esp=3des key=24 2b0e04adf13362a39983efde93b753e2e7c2419e2ba45451
ah=sha1 key=20 0cbc298567e94e4e711582a2a1728c22dbb9f6cf
dec:pkts/bytes=1/60, enc:pkts/bytes=6/672
npu_flag=03 npu_rgwy=200.1.1.2 npu_lgwy=200.1.1.1 npu_selid=2 dec_npuid=1 enc_npuid=1
stat: の rx/tx がカウントアップしていること、SA: の情報が表示されていること。
CLI での状態確認(Cisco)
ISAKMP SA の確立を確認
RT#show crypto isakmp sa
IPv4 Crypto ISAKMP SA
dst src state conn-id status
200.1.1.2 200.1.1.1 QM_IDLE 2003 ACTIVE
IPv6 Crypto ISAKMP SA
state が QM_IDLE となっていること。
IPsec SA の確立を確認
RT#show crypto session
Crypto session current status
Interface: FastEthernet0
Session status: UP-ACTIVE
Peer: 200.1.1.1 port 500
Session ID: 0
IKEv1 SA: local 200.1.1.2/500 remote 200.1.1.1/500 Active
IPSEC FLOW: permit ip 10.10.3.0/255.255.255.0 10.10.1.0/255.255.255.0
Active SAs: 2, origin: crypto map
Session status: UP-ACTIVE となっていること。
RT#show crypto ipsec sa
interface: FastEthernet0
Crypto map tag: CP-MAP, local addr 200.1.1.2
protected vrf: (none)
local ident (addr/mask/prot/port): (10.10.3.0/255.255.255.0/0/0)
remote ident (addr/mask/prot/port): (10.10.1.0/255.255.255.0/0/0)
current_peer 200.1.1.1 port 500
PERMIT, flags={origin_is_acl,}
#pkts encaps: 157, #pkts encrypt: 157, #pkts digest: 157
#pkts decaps: 297, #pkts decrypt: 297, #pkts verify: 297
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 0, #pkts compr. failed: 0
#pkts not decompressed: 0, #pkts decompress failed: 0
#send errors 0, #recv errors 0
local crypto endpt.: 200.1.1.2, remote crypto endpt.: 200.1.1.1
plaintext mtu 1446, path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0
current outbound spi: 0xB6D3BCF0(3067329776)
PFS (Y/N): Y, DH group: group1
inbound esp sas:
spi: 0x930527E7(2466588647)
transform: esp-3des esp-sha-hmac ,
in use settings ={Tunnel, }
conn id: 5, flow_id: Onboard VPN:5, sibling_flags 80000040, crypto map: CP-MAP
sa timing: remaining key lifetime (k/sec): (4196921/1992)
IV size: 8 bytes
replay detection support: Y
Status: ACTIVE(ACTIVE)
inbound ah sas:
inbound pcp sas:
outbound esp sas:
spi: 0xB6D3BCF0(3067329776)
transform: esp-3des esp-sha-hmac ,
in use settings ={Tunnel, }
conn id: 6, flow_id: Onboard VPN:6, sibling_flags 80000040, crypto map: CP-MAP
sa timing: remaining key lifetime (k/sec): (4196921/1992)
IV size: 8 bytes
replay detection support: Y
Status: ACTIVE(ACTIVE)
outbound ah sas:
outbound pcp sas:
pkts がカウントアップしていること、Status が ACTIVE(ACTIVE) になっていること。
FortiGate VPN 関連コマンド
- IKE をリスタートする
# diagnose vpn ike restart
- IKE ゲートウェイをクリアする
# diagnose vpn ike gateway clear
※ VPN 接続ができなくなったときは IKE をリスタートすると復旧するかも
参考ページ
―――――――――――――
次のステップ → 【参考】AWS の VPC と自宅 NW との間で IPsec VPN を構築する
―――――――――――――