我正在尝试将部署在 Google Cloud VPC 上的应用程序连接到客户的内部 LAN(通过客户要求的 VPN),以便我和我的客户可以在 Gcloud 上的服务器和他们的服务器之间传输文件。
但是,我们在设置 VPN 隧道时遇到了问题。以下是规格:
- 我已经设置了高可用性 (HA) VPN,并且正在使用动态路由。
- 我的 gcloud VPN 网关的 IP 是 78.211.79.182;对等网关(又称客户端网关)的 IP 是 41.233.612.86。(当然,这些不是真正的 IP。只是为了方便阅读下面的日志。)
- 我已经创建了 IKEv2 预共享密钥,并将该密钥共享给我的客户,以便他们使用它来配置他们的网关。
从我的 Gcloud 网关的日志中,我可以看到发生了一个错误:
D 2020-07-26T13:46:23.854055402Z remote host is behind NAT
D 2020-07-26T13:46:23.854099553Z authentication of '78.211.79.182' (myself) with pre-shared key
I 2020-07-26T13:46:23.854167373Z establishing CHILD_SA vpn_41.233.612.86{1}
D 2020-07-26T13:46:23.854285679Z generating IKE_AUTH request 1 [ IDi AUTH SA TSi TSr N(EAP_ONLY) ]
D 2020-07-26T13:46:23.854821679Z sending packet: from 78.211.79.182[4500] to 41.233.612.86[4500] (320 bytes)
D 2020-07-26T13:46:23.865825884Z received packet: from 41.233.612.86[4500] to 78.211.79.182[4500] (240 bytes)
D 2020-07-26T13:46:23.866158710Z parsed IKE_AUTH response 1 [ IDr AUTH N(ESP_TFC_PAD_N) N(NON_FIRST_FRAG) SA TSi TSr ]
D 2020-07-26T13:46:23.866219472Z tried 1 shared key for '78.211.79.182' - '41.233.612.86', but MAC mismatched
D 2020-07-26T13:46:23.866341774Z generating INFORMATIONAL request 2 [ N(AUTH_FAILED) ]
D 2020-07-26T13:46:23.866434696Z sending packet: from 78.211.79.182[4500] to 41.233.612.86[4500] (80 bytes)
D 2020-07-26T13:46:26.830704780Z creating acquire job for policy with reqid {1}
I 2020-07-26T13:46:26.830879885Z initiating IKE_SA vpn_41.233.612.86[38] to 41.233.612.86
D 2020-07-26T13:46:26.835746125Z generating IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) N(FRAG_SUP) N(HASH_ALG) ]
D 2020-07-26T13:46:26.836731673Z sending packet: from 78.211.79.182[500] to 41.233.612.86[500] (892 bytes)
D 2020-07-26T13:46:26.847907232Z received packet: from 41.233.612.86[500] to 78.211.79.182[500] (464 bytes)
D 2020-07-26T13:46:26.848248731Z parsed IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) ]
D 2020-07-26T13:46:26.853647299Z local host is behind NAT, sending keep alives
D 2020-07-26T13:46:26.853693084Z remote host is behind NAT
D 2020-07-26T13:46:26.853740121Z authentication of '78.211.79.182' (myself) with pre-shared key
I 2020-07-26T13:46:26.853804324Z establishing CHILD_SA vpn_41.233.612.86{1}
D 2020-07-26T13:46:26.853950401Z generating IKE_AUTH request 1 [ IDi AUTH SA TSi TSr N(EAP_ONLY) ]
D 2020-07-26T13:46:26.854595024Z sending packet: from 78.211.79.182[4500] to 41.233.612.86[4500] (320 bytes)
D 2020-07-26T13:46:26.865979158Z received packet: from 41.233.612.86[4500] to 78.211.79.182[4500] (240 bytes)
D 2020-07-26T13:46:26.866316701Z parsed IKE_AUTH response 1 [ IDr AUTH N(ESP_TFC_PAD_N) N(NON_FIRST_FRAG) SA TSi TSr ]
D 2020-07-26T13:46:26.866381716Z tried 1 shared key for '78.211.79.182' - '41.233.612.86', but MAC mismatched
D 2020-07-26T13:46:26.866505332Z generating INFORMATIONAL request 2 [ N(AUTH_FAILED) ]
D 2020-07-26T13:46:26.866615565Z sending packet: from 78.211.79.182[4500] to 41.233.612.86[4500] (80 bytes)
D 2020-07-26T13:46:29.830755043Z creating acquire job for policy with reqid {1}
I 2020-07-26T13:46:29.830930845Z initiating IKE_SA vpn_41.233.612.86[39] to 41.233.612.86
D 2020-07-26T13:46:29.835922517Z generating IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) N(FRAG_SUP) N(HASH_ALG) ]
D 2020-07-26T13:46:29.836919895Z sending packet: from 78.211.79.182[500] to 41.233.612.86[500] (892 bytes)
D 2020-07-26T13:46:29.848359165Z received packet: from 41.233.612.86[500] to 78.211.79.182[500] (464 bytes)
D 2020-07-26T13:46:29.848683121Z parsed IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) ]
D 2020-07-26T13:46:29.853828481Z local host is behind NAT, sending keep alives
D 2020-07-26T13:46:29.853841851Z remote host is behind NAT
VPN 隧道设置失败。我有两个问题:
- 日志显示:
D 2020-07-26T13:46:26.853647299Z local host is behind NAT, sending keep alives
D 2020-07-26T13:46:26.853693084Z remote host is behind NAT
这到底是个问题吗?还是这是正常现象,我无需担心?
- 日志显示:
D 2020-07-26T13:46:23.866219472Z tried 1 shared key for '78.211.79.182' - '41.233.612.86', but MAC mismatched
这是什么意思?我该如何配置才能解决此问题?我应该在 gcloud vpn 配置上进行更改吗?还是我应该建议我的客户对其设置进行更改?
答案1
Cloud VPN 仅支持通过 UDP 封装实现一对一 NAT,实现 NAT 穿越 (NAT-T)不支持一对多 NAT 和基于端口的地址转换。换句话说,Cloud VPN 无法连接到共享单个外部 IP 地址的多个对等 VPN 网关。详情可参阅UDP 封装
使用一对一 NAT 时,您的本地 VPN 网关必须使用与 NAT 设备相同的外部 IP 地址来标识自己:
身份类型必须是ID_IPV4_ADDR(RFC 7815)。
并非所有 Cisco 设备都支持将设备标识设置为与设备正在使用的 IP 地址(其内部地址)不同的 IP 地址。例如,Cisco ASA 设备不支持为其标识分配不同的(外部)IP 地址。因此,Cisco ASA 设备无法配置为使用 Cloud VPN 的一对一 NAT。
对于 Juniper 设备,您可以使用 set security ike gateway [NAME] local-identity inet [PUBLIC_IP] 设置设备的身份,其中 [NAME] 是您的 VPN 网关名称,[PUBLIC_IP] 是您的外部 IP 地址。有关更多详细信息,请参阅此 Juniper TechLibrary 文章。
此外,我注意到您分享的日志中有以下内容
D 2020-07-26T13:46:23.854285679Z generating IKE_AUTH request 1 [ IDi AUTH SA TSi TSr N(EAP_ONLY) ]
D 2020-07-26T13:46:23.866158710Z parsed IKE_AUTH response 1 [ IDr AUTH N(ESP_TFC_PAD_N) N(NON_FIRST_FRAG) SA TSi TSr ]
根据上面讨论的信息,此问题的解决方案是将本地 VPN 网关配置为使用其公共 IP 地址而不是内部或任何其他地址来标识自己。由于 GCP 端只期望来自对等 IP在 GCP Cloud VPN 配置中配置。
答案2
尝试连接两个时出现相同的错误GCP
VPC
,HA VPN Tunnels
原因是我没有在向导中提供相同的共享密钥。
创建隧道时,向导建议使用shared secret
and,而不是在两个隧道中添加相同的隧道,我得到了和你一样的错误。提供一致的密钥后错误就消失了。