题图由 Adriana Morales 在 Pixabay 上发布
-------------------------
这两天在 AWS 上面部署 CSR 1000V 和 ASAv,去和腾讯云的 VPN 网关对接 Site-to-Site IPSec VPN。发现有一些需要注意的地方,如果配置的不对,VPN tunnel 就无法建立成功。
首先,腾讯云的 VPN 网关在配置 Identity 的时候,既可以采用 IP Address 方式,也可以采用 FQDN 方式。但实际上,对于远端 Identity,必须采用 FQDN。如果采用 IP 地址作为 ID Method,会报下面截图的错误:
TANS/IKE_SA_ESTABLISH_FAIL: Failed to establish IKE SA for the reason of no peer config found by ID payload.

这就要求 Cisco Gateway 这一侧,至少 self-identity 必须采用 FQDN。ASA 稍微麻烦一些,需要配置 domain-name 和 hostname,然后配置
crypto isakmp identity hostname
这样 ASA 就会把 hostname.domain-name 作为 self-identity 发给腾讯云 VPN 网关了。
另外,在 ASA 上,IPSec Fragmentation 默认是 before-encryption,并且无法 disable。这种情况下,腾讯云 VPN 网关会报 “parse hash payload failed” 的错误。所以需要将 ipsec fragmentation 改成 after-encryption。
crypto ipsec fragmentation after-encryption outside
再一个,ASA 的 tunnel-group name 不能用 string,需要配置成腾讯云 VPN 网关的公网 IP,和 crypto map 里面设置的 peer IP 一样。否则 ASA 报错:
Can't find a valid tunnel group, aborting...!
Pre-shared-key 在 ASA 上不能包含特殊字符,但是在 IOSXE 上面可以。
最后,ASA 如果配置 IKEv2 并选择 AES-128 以外的加密方式,则 PRF(Pseudo-Random Function) 默认启用并采用 MD5/SHA256/SHA384 等对应的算法。但是腾讯云 VPN 网关并没有配置 PRF 的地方。它所采用的 strongSwan 框架似乎支持 PRF SHA256 也有一些问题。所以需要将其手工修改为 SHA1:
crypto ikev2 policy 1encryption aes-256integrity shagroup {{ dh_group }}prf shalifetime seconds 86400
我把 ASA 和 IOSXE 的配置写成 Jinja2 模版放到 Github 上了,地址在:
https://github.com/chenghit/Cisco_2_Tencent_Cloud_VPNGW
也可以点击左下角“阅读原文”直接访问。




