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
IPsecを使用したVPN拠点間接続(2拠点) : コマンド設定
その他
Fortigateを使ってIPSec-VPNを構築してみる(Fortigate60D-RTX1100編) | 30代未経験ネットワークエンジニアのblog