FortiGate と Cisco ルータとの間で IPsec VPN を構築する

ファイアウォール(UTM)

FortiGate で IPsec VPN を設定する例です。

作業環境

■ FortiGate

  • 型番:FortiGate 60E
  • バージョン:v6.0.9

■ ルータ

  • Cisco C891FJ-K9
  • バージョン:15.3(3)M5

IPsec VPN 設定手順

ネットワーク構成

IPsec VPN 設計

項目IKE フェーズ1IKE フェーズ2
セキュリティプロトコルesp
暗号化アルゴリズム3des3des
ハッシュアルゴリズムsha1
認証方式/認証アルゴリズムpre-shareesp-sha-hmac
DH/PFS グループ1無効
ISAKMP/IPsec  SA ライフタイム86400秒3600秒
Pre-shared Keypassword
IPsec 通信モードtunnel
IKE キープアライブ(DPD)無効
IPsec の対象トラフィック10.10.1.0/24 ⇔ 10.10.3.0/24
IKE モードMainQuick
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-interfaceconfig 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 をリスタートすると復旧するかも

参考ページ

IPsecとは
IPsecについて解説します。
Azure VPN Gateway と Fortigate で VPN がつながらない場合のトラブルシューティング方法 – Made in container

―――――――――――――

次のステップ → 【参考】AWS の VPC と自宅 NW との間で IPsec VPN を構築する

―――――――――――――

タイトルとURLをコピーしました