雑木林

頭の中の整理と忘れないための確認メモ

YAMAHAとFortiGateのIPsec相互接続

拠点間接続を安価に行う場合、IPsecによるインターネットVPNが候補に挙がるかと思います。
同一メーカーだとサンプルを試すだけで簡単にできるので、我が家も実家との接続に利用しています。
一方、異なるメーカーの場合は「やめたほうがいい」と言われることが多いです。
プロトコルが一緒なら大丈夫でしょ?」と思って見事にハマりましたので以下に記載します。

今回利用した機種

注意すべき点

試行錯誤した結果、注意すべき点は以下になります。

  • IKEのモードを合わせる。接続がうまくいかない場合はIKEのバージョンを変える。
  • Diffie-Hellmanグループを合わせる。使うグループは1つに絞り込む(DH 2推奨)
  • PFSの有無を揃える。
  • local id、local name、local address、remote id、remote name、remote addressを合わせる。
  • 鍵の有効期間を合わせる。Yamahaはデフォルト値が少し短め。

設定例

正常に接続、通信ができた設定は以下になります。YAHAMA側は改良の余地ありそうですが…。

YAMAHA側の設定(インターネット接続部、経路情報設定は省略)
トンネルインタフェースやIPsecポリシーID番号は好きな番号に変更してください。
またike local、ike remote、ipsec ike pre-shared-keyは適宜読み替えてください。

tunnel select 10
 ipsec tunnel 10
  ipsec sa policy 10 10 esp aes-cbc sha-hmac
  ipsec ike version 10 1
  ipsec ike always-on 10 on
  ipsec ike encryption 10 aes-cbc
  ipsec ike esp-encapsulation 10 on
  ipsec ike group 10 modp1024
  ipsec ike hash 10 sha
  ipsec ike keepalive log 10 off
  ipsec ike keepalive use 10 on dpd
  ipsec ike local address 10 YAMAHA側のローカルアドレス(YAMAHAのLAN1 IPアドレス)
  ipsec ike local id 10 YAMAHA側のローカルセグメント(FortiGate側設定のPhase2リモートアドレス)
  ipsec ike local name 10 ネットボランチDNS名 fqdn
  ipsec ike pfs 10 on
  ipsec ike pre-shared-key 10 text 事前共有鍵
  ipsec ike remote address 10 FortiGateのFQDN
  ipsec ike remote id 10 FortiGateの内部セグメント(FortiGate側設定のPhase2ローカルアドレス)
  ipsec ike remote name 10 FortiGateのFQDN fqdn
  ipsec auto refresh 10 on
 ip tunnel mtu 1438
 ip tunnel tcp mss limit auto
 tunnel enable 10

FortiGate側の設定(経路情報は省略)
同様に適宜読み替えを行ってください。

config vpn ipsec phase1-interface
    edit "ToRTX1200"
        set type ddns
        set interface "インターネットに接続しているポート"
        set keylife 28800
        set mode aggressive
        set peertype any
        set proposal aes128-sha1
        set dhgrp 2
        set remotegw-ddns "ネットボランチDNS名"
        set psksecret 事前共有鍵
    next
end

config vpn ipsec phase2-interface
    edit "ToRTX1200"
        set phase1name "ToRTX1200"
        set proposal aes128-sha1
        set dhgrp 2
        set keylifeseconds 28800
        set src-subnet FortiGateの内部セグメント
        set dst-subnet YAMAHA側のローカルセグメント
    next
end

config firewall policy
    edit 21
        set name "lan-ipsec"
        set srcintf "内部セグメントポート"
        set dstintf "ToRTX1200"
        set srcaddr "all"
        set dstaddr "all"
        set action accept
        set schedule "always"
        set service "ALL"
    next
    edit 22
        set name "ipsec-lan"
        set srcintf "ToRTX1200"
        set dstintf "内部セグメントポート"
        set srcaddr "all"
        set dstaddr "all"
        set action accept
        set schedule "always"
        set service "ALL"
    next
end

うまく接続が確立できれば、以下のような結果になります。
YAMAHA

# show status tunnel 10
TUNNEL[10]:
説明:
  インタフェースの種類: IPsec
  トンネルインタフェースは接続されています
  開始: 2020/02/12 02:04:02
  通信時間: 24分13秒
  受信: (IPv4) 15 パケット [1260 オクテット]
        (IPv6) 0 パケット [0 オクテット]
  送信: (IPv4) 3401 パケット [177332 オクテット]
        (IPv6) 0 パケット [0 オクテット]

FortiGate

$ diagnose vpn ike status
connection: 1/3
IKE SA: created 1/4  established 1/1  times 70/70/70 ms
IPsec SA: created 1/1  established 1/1  times 90/90/90 ms
 

$ diagnose vpn ike gateway list
 
name: ToRTX1200
version: 1
interface: port2 4
addr: XXX.XXX.XXX.X:500 -> XXX.XX.XX.XXX:500
created: 1920s ago
peer-id: xxx.aa0.netvolante.jp
peer-id-auth: no
IKE SA: created 1/2  established 1/1  time 70/70/70 ms
IPsec SA: created 1/1  established 1/1  time 90/90/90 ms
 
  id/spi: 3 04a782ad0f3fc9f3/93b8c58edb2d977a
  direction: responder
  status: established 1894-1894s ago = 70ms
  proposal: aes128-sha1
  key: f6febfe8a25c8caf-6c6b28ae55c8c863
  lifetime/rekey: 28800/26635
  DPD sent/recv: 00000000/3e715ce5
  peer-id: xxx.aa0.netvolante.jp
 
  
$ diagnose vpn tunnel list
list all ipsec tunnel in vd 0
------------------------------------------------------
name=ToRTX1200 ver=1 serial=10 XXX.XXX.XXX.X:0->XXX.XX.XX.XXX:0
bound_if=4 lgwy=static/1 tun=intf/0 mode=auto/1 encap=none/0
proxyid_num=1 child_num=0 refcnt=12 ilast=8 olast=8 ad=/0
stat: rxp=3386 txp=0 rxb=460496 txb=0
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=ToRTX1200 proto=0 sa=1 ref=2 serial=1
  src: 0:XXX.XXX.XXX.XX/255.255.255.248:0
  dst: 0:XXX.XXX.XX.X/255.255.255.0:0
  SA:  ref=3 options=10226 type=00 soft=0 mtu=1280 expire=26623/0B replaywin=2048
       seqno=1 esn=0 replaywin_lastseq=00000000 itn=0
  life: type=01 bytes=0/0 timeout=28532/28800
  dec: spi=4264bb41 esp=aes key=16 d53a416795463f32eaa11fb8a3833124
       ah=sha1 key=20 e5f4d02ad9afb443e084399e9ab9f2d3ffe2c7ae
  enc: spi=125af41b esp=aes key=16 0c0369f625f5a53446d09a6aaa7436e0
       ah=sha1 key=20 5c29de2c3a52593a2fb28b9bc1d40f24d66886a2
  dec:pkts/bytes=0/0, enc:pkts/bytes=0/0

ハマりどころ(詰まっていた時の症状)

IKEv2で接続できない

結論からいうと諦めました。
片側からしか接続が確立張れなかったり、しばらくすると切断されるなどなど…。
うまくいくこともあるんですが、私の環境では非常に不安定でした。

FortiGateのデバッグログから以下のような表示が繰り返されます…。

ike 0:ToRTX1200:26: initiator received AUTH msg
ike 0:ToRTX1200:26: received peer identifier FQDN 'xxx.aa0.netvolante.jp'
ike 0:ToRTX1200:26: auth verify done
ike 0:ToRTX1200:26: initiator AUTH continuation
ike 0:ToRTX1200:26: authentication failed
ike 0:ToRTX1200:26: schedule delete of IKE SA 4b278e2c14d06b2e/24319952c32ae671
ike 0:ToRTX1200:26: scheduled delete of IKE SA 4b278e2c14d06b2e/24319952c32ae671
ike 0:ToRTX1200: connection expiring due to phase1 down
ike 0:ToRTX1200: deleting
ike 0:ToRTX1200: schedule auto-negotiate
ike 0:ToRTX1200: deleted
ike 0:ToRTX1200: set oper down

YAMAHA側ではSAが大量生成されます…なぜにー。

tunnel10# show ipsec sa
Total: isakmp:5 send:6 recv:6

sa   sgw isakmp connection   dir  life[s] remote-id
-----------------------------------------------------------------------------
1     10   -    ike          -    28787   XXX.XXX.XXX.X
2     10   2    tun[010]esp  send 28787   XXX.XXX.XXX.X
3     10   2    tun[010]esp  recv 28787   XXX.XXX.XXX.X
4     10   -    ike          -    28791   XXX.XXX.XXX.X
5     10   -    ike          -    28794   XXX.XXX.XXX.X
6     10   2    tun[010]esp  send 28791   XXX.XXX.XXX.X
7     10   2    tun[010]esp  recv 28791   XXX.XXX.XXX.X
8     10   2    tun[010]esp  send 28794   XXX.XXX.XXX.X
9     10   2    tun[010]esp  recv 28794   XXX.XXX.XXX.X
10    10   -    ike          -    28798   XXX.XXX.XXX.X
11    10   2    tun[010]esp  send 28798   XXX.XXX.XXX.X
11    10   2    tun[010]esp  recv 28798   XXX.XXX.XXX.X
...

FortiGateのデバッグログにmissing IDci fieldが大量に記録される

local id、remote idの不一致が原因のようです。
正しく設定されているか確認しましょう。

ike 0: IKEv1 exchange=Quick id=5e8345c8957bb7c9/b7f39c705c3cb914:d032c54e len=316
ike 0: in 5E8345C8957BB7C9B7F39C705C3CB91408102001D032C54E0000013C3BCE62A06D7F19D587FDAD3934BF7091E6EE59EBDD84FE0F5F02D6A390C317D7757F9934E97468979197B9F318BDCC2D4408F37AA9CD73E3BC9A4B42331959FCC01F685BA416AE6BA8694897DFFCFBA83C14BEBE43FCEB1577B7CD7EAA0236E6663C5C547AAE6C5506150C6C947E274B83795CE6EBC7EADA5DD5CC4D68EBA056239705DBE5F9B04D0097FF8DCCE63020E7C161323220C14F2AB60A13A36A7AE8891DD1356A6AE2B363891D096570F955A5E952B3A496186B6C4D3F2E550B05EFD47027F1DEF5A9370AB1EEDED528747D2758CFFEAA5B17211E8B624D94E9CF5AACF71D9AE3A5128BAC34A79F3293BA3089167AB1CBDE9B06483FD5A0968ADD8408E115C81D0CD1598517D8409AFEDDBDD2C3AC2DD491C4642944BC8BEE021596
ike 0:ToRTX1200:1:3: responder received first quick-mode message
ike 0:ToRTX1200:1: dec 5E8345C8957BB7C9B7F39C705C3CB91408102001D032C54E0000013C010000182B8C13BA79463E11DF50F63A0056F295B2C05C120A00003800000001000000010000002C010304014657FFC200000020010C000080030002800100018002708080040001800500028006008004000044B9D9D047F49358B537CE6E2DE1E8733E5AFAB0FB627F1CA9179CA8BF2BF6ABF9E0ED896AE8478D864C3AD9075C7AC0A9622076D88E257AD3404D4D1539289C9F0000008455DC7F29C173EAC71F702B7E9AB4B5AE2097912362DB6552882EC5B889FB6E58F61F8C7100FB1670F3442448763520334C1613491BCBBF614700230E03F76A0A8A264A6FB780B906A2D9B73F8F28485D88D7423A5ABD7BBD54F657477B6831CC9B8BE75C5EC304446C91F9A43B4D8CAD7228B5B44DB34A07361662741BF966D70000000000000007
ike 0:ToRTX1200:1::3: missing IDci field
ike 0:ToRTX1200:1: info_send_n1, type 18
ike 0:ToRTX1200:1: enc 5E8345C8957BB7C9B7F39C705C3CB91408100501A8DC8E93000000400B000018AAED67AFA2D6C6F745A1A80F9794878616B89B9A0000000C0000000101000012
ike 0:ToRTX1200:1: out 5E8345C8957BB7C9B7F39C705C3CB91408100501A8DC8E930000004CDB83EF66DCE1317EFC379E9348DC08CA23471A54DAE528FF40880F1A883CA66A50F64BC53356CF807C97535010A3BF27
ike 0:ToRTX1200:1: sent IKE msg (p1_notify_18): XXX.XXX.XXX.X:500->XXX.XX.XX.XXX:500, len=76, id=5e8345c8957bb7c9/b7f39c705c3cb914:a8dc8e93
ike 0:ToRTX1200:1: error processing quick-mode message from XXX.XX.XX.XXX as responder
ike 0: comes XXX.XX.XX.XXX:500->XXX.XXX.XXX.X:500,ifindex=4....

参考にしたサイト

FortiGate
FortiGate to YAMAHA RTX1200 Configuration

Yamaha
IPsec の設定

IPsecを使用したVPN拠点間接続(2拠点) : コマンド設定

VPN(IPsec)接続ができない

その他
Fortigateを使ってIPSec-VPNを構築してみる(Fortigate60D-RTX1100編) | 30代未経験ネットワークエンジニアのblog

異機種間IPsec FortiGate 60D – RTX810 – nosense