从本地 Linux,我尝试检查 vpn 状态。
为什么detailedStatus没有继续?为什么状态仍然是“FIRST_HANDSHAKE”?
共享密钥和TargetIP没有错误。
$ gcloud compute vpn-tunnels describe gvis-vpn-tunnel
回声就在这里。
creationTimestamp: '2020-07-28T15:05:44.541-07:00'
description: ''
detailedStatus: Allocating resources. VPN tunnel will start soon.
id:'2892217179569987543'
ikeVersion: 2
kind: compute#vpnTunnel
:
region: https://www.googleapis.com/compute/v1/projects/[project-id]/regions/us-east1
:
sharedSecret: '*************'
:
status: FIRST_HANDSHAKE
targetVpnGateway: https://www.googleapis.com/compute/v1/projects/[project-id]/regions/us-east1/targetVpnGateways/gvis-vpn
更新
上周,我可以连接 VPN 隧道。从本周一开始,无法连接,并且我看到以下日志:
2020-07-28T22:45:04.831987016Z initiating IKE_SA vpn_58.xxx.xxx.xxx[779] to 58.xxx.xxx.xxx
2020-07-28T22:45:04.758749637Z creating acquire job for policy with reqid {1}
2020-07-28T22:45:02.148478373Z sending packet: from 35.xxx.xxx.xxx[4500] to 58.xxx.xxx.xxx[4500] (80 bytes)
2020-07-28T22:45:02.148478373Z generating INFORMATIONAL request 2 [ N(AUTH_FAILED) ]
2020-07-28T22:45:02.148478373Z tried 1 shared key for '35.xxx.xxx.xxx' - '58.xxx.xxx.xxx', but MAC mismatched
2020-07-28T22:45:02.148478373Z parsed IKE_AUTH response 1 [ IDr AUTH N(ESP_TFC_PAD_N) N(NON_FIRST_FRAG) SA TSi TSr ]
2020-07-28T22:45:02.105535147Z received packet: from 58.xxx.xxx.xxx[4500] to 35.xxx.xxx.xxx[4500] (256 bytes)
2020-07-28T22:45:02.029020541Z sending packet: from 35.xxx.xxx.xxx[4500] to 58.xxx.xxx.xxx[4500] (336 bytes)
2020-07-28T22:45:02.029020541Z generating IKE_AUTH request 1 [ IDi AUTH SA TSi TSr N(EAP_ONLY) ]
2020-07-28T22:45:02.029020541Z establishing CHILD_SA vpn_58.xxx.xxx.xxx{1}
2020-07-28T22:45:02.029020541Z authentication of '35.xxx.xxx.xxx' (myself) with pre-shared key
2020-07-28T22:45:02.029020541Z remote host is behind NAT
2020-07-28T22:45:02.029020541Z parsed IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) ]
2020-07-28T22:45:01.933846400Z received packet: from 58.xxx.xxx.xxx[500] to 35.xxx.xxx.xxx[500] (464 bytes)
2020-07-28T22:45:01.819625244Z sending packet: from 35.xxx.xxx.xxx[500] to 58.xxx.xxx.xxx[500] (892 bytes)
2020-07-28T22:45:01.819625244Z generating IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) N(FRAG_SUP) N(HASH_ALG) ]
自 2019 年 12 月以来,预共享密钥一直相同。每天,当我想连接时,都会像这样建立 vpn 隧道,
gcloud compute vpn-tunnels create [my-vpn-tunnel] \
--peer-address 58.xxx.xxx.xxx \
--ike-version 2 \
--shared-secret [Pre-shared key] \
--local-traffic-selector=192.xxx.100.0/24 \
--remote-traffic-selector=172.xx.xx.0/24,192.xxx.10.0/24 \
--target-vpn-gateway [my-vpn] \
--region us-east1 \
--project [project-id]
当我断开连接时,像这样删除 vpn-tunnel,
gcloud compute vpn-tunnels delete [my-vpn-tunnel] --region=us-east1
我一直在我的 Linux Shell 脚本上使用 gcloud。
答案1
由于您的问题已自行解决,因此我们只能猜测之前是什么原因导致了此问题。
正如我在评论中写道,最好遵循故障排除指南并从开始Cloud VPN 日志。
2020-07-28T22:45:02.148478373Z tried 1 shared key for '35.xxx.xxx.xxx' - '58.xxx.xxx.xxx', but MAC mismatched
消息认证码 (MAC) 是根据预共享密钥和消息计算的,如果预共享密钥不匹配,则相应的 MAC 也不会匹配。同时,这看起来不像您的情况,因为您声称“预共享密钥自 2019 年 12 月以来一直相同”。
2020-07-28T22:45:02.029020541Z remote host is behind NAT
因为你使用 NAT,我建议你看一下故障排除指南部分NAT 后面的本地网关:
Cloud VPN 可与 NAT 后面的本地或对等 VPN 网关配合使用。这是通过 UDP 封装和 NAT-T 实现的,并且仅支持一对一 NAT。
更多详细信息,请参阅本节:
Cloud VPN 仅支持通过 UDP 封装进行一对一 NAT,以实现 NAT 遍历 (NAT-T)。不支持一对多 NAT 和基于端口的地址转换。换句话说,Cloud VPN 无法连接到共享单个外部 IP 地址的多个对等 VPN 网关。
使用一对一 NAT 时,必须将对等 VPN 网关配置为使用外部 IP 地址(而不是其内部(专用)地址)来标识自己。配置 Cloud VPN 隧道以连接到对等 VPN 网关时,请指定外部 IP 地址。Cloud VPN 要求本地 VPN 网关使用其外部 IP 地址作为其身份。
该问题可能与您的内部路由器有关,但没有任何日志就很难说。
此外,下次您可以检查 Google 方面是否存在此问题Google Cloud 状态仪表板并提交问题报告在Google 问题追踪器。