IPSec 命名注意事项
IPSec 命名注意事项
注意事项 1
ADVPN 环境下,有时候会遇到所有 Spoke 与 Hub 的 IPSec 连接建立成功,但 Spoke 之间在流量触发后,Shortcut 连接无法建立的情况。
问题现象
检查 Spoke 与 Hub 间的 IPSec 连接状态是否正常。
在 Spoke 上执行 IKE Debug,检查输出日志,如下所示,Spoke 已经收到了 Hub 返回的 shortcut-offer:
# diagnose debug application ike -1 # diagnose debug enableike 0:FGT-ADVPN-HUB-1:17: notify msg received: SHORTCUT-OFFER ike 0:FGT-ADVPN-HUB-1: shortcut-offer 172.26.22.22->172.10.10.1 psk 64 ppk 0 ver 1 mode 0 ike 0 looking up shortcut by addr 172.10.10.1, name FGT-ADVPN-HUB-1问题出现在另一个 Spoke 发送的 shortcut-reply 后,当 Spoke 收到另一个 Spoke 发送的 shortcut-reply(经由 Hub 转发)后,准备与其建立 Shortcut 连接,但由于 Shortcut 连接的名字过长(Shortcut 连接的名字是在与 Hub 的连接名称基础上加上字符“_[number]”,FGT - ADVPN - HUB - 1_0),导致无法发起 Shortcut 连接。
ike 0:FGT-ADVPN-HUB-1:17: notify msg received: SHORTCUT-REPLY ike 0:FGT-ADVPN-HUB-1: recv shortcut-reply 17386919350863387436 3d31b000f3a4cb20/918e5c255a8451ca 10.10.50.1 to 172.26.22.22 psk 64 ppk 0 ver 1 mode 0 ext-mapping 0.0.0.0:0 ike 0:FGT-ADVPN-HUB-1: iif 28 172.10.10.1->172.26.22.22 route lookup oif 12 root ike 0:FGT-ADVPN-HUB-1: shortcut-reply received from 10.10.50.1:500, local-nat=no, peer-nat=no ike 0:FGT-ADVPN-HUB-1: created connection: 0xdd3cdb0 5 10.10.10.2->10.10.50.1:500. ike 0:FGT-ADVPN-HUB-1: adding new dynamic tunnel for 10.10.50.1:500 ike 0:FGT-ADVPN-HUB-1: could not create dialup name FGT-ADVPN-HUB-1_0, too long ike 0:FGT-ADVPN-HUB-1: deleting ike 0:FGT-ADVPN-HUB-1: deleted ike 0:FGT-ADVPN-HUB-1: schedule auto-negotiate检查 Spoke 端的 IPSec 一阶段配置,名称为 FGT - ADVPN-HUB-1,总计 15 个字符。
# config vpn ipsec phase1-interface edit "FGT-ADVPN-HUB-1" set interface "wan1" set keylife 28800 set peertype any set net-device enable set proposal aes256-sha256 set add-route disable set dpd on-idle set dhgrp 14 set auto-discovery-receiver enable set remote-gw x.x.x.x set psksecret ENC set dpd-retryinterval 5 next
解决方法
- 当配置 IPSec VPN 时,对名字的长度限制为 15 个字符,超过 15 个字符是无法配置的。
- 但如果存在 ADVPN 的配置,当 Spoke 与 Spoke 之间触发 Shortcut 连接建立时,Shortcut 连接的名称会在与 Hub 的连接名称的基础上加上字符
_+ 数字(从 0 开始),例如以上示例中,Shortcut 连接的名称为“FGT - ADVPN - HUB - 1_0”,这已经超过了 15 个字符,这就导致 Shortcut 连接由于名字过长无法发起连接建立。 - 如果是 ADVPN 部署环境,建议在 Spoke 上配置与 Hub 的 IPSec 连接时,名称长度建议小于 12 个字符(根据最多可以建立多少个 Shortcut 决定,例如需要建立 2 位数数量的 Shortcut 连接,使用 13 个字符的 IPSec 连接名称,从第 10 个 Shortcut 连接开始将无法建立)。
注意事项 2
在同一个 FortiGate 上配置了一个 IPSec 连接的名称后,新增其他 IPSec 连接配置时,名称不要使用已创建的 IPSec 连接名称 + _<number>的格式,例如:
第 1 个 IPSec 连接(拨号模式):名称为
CT。第 2 个 IPSec 连接:不要配置名称为
CT_0(或CT_1、CT_2、CT_3……)。
这是由于第 1 个 IPSec 拨号连接有客户端拨号成功后,生成的动态 IPSec 隧道名称会被命名为CT_0、CT_1、CT_2、CT_3…… 这些名称中的CT_0与第 2 个 IPSec 连接的名称冲突,会导致第 2 个 IPSec 连接无法正常通信,即使两个 IPSec 连接在不同的 VDOM(即使开启了 VDOM,任何接口的名称也具有全局唯一性)。
出现此问题时,受影响的 IPSec 接口的状态会出现异常,使用diagnose netlink interface list可以看到该接口(CT_1)的 link≠0(接口的 link 只有等于 0 时才正常)。
Hub (VDOM2) # diagnose netlink interface list
......
if=CT_1 family=00 type=768 index=23 mtu=1420 link=24 master=0 //受影响的IPSec隧道名称,link≠0//
flags=up p2p run noarp multicast
if=CT family=00 type=768 index=24 mtu=1420 link=0 master=0
flags=up p2p run noarp multicast
......