问题排查

本问题排查指南可帮您监控和解决 Cloud VPN 的常见问题。

如需状态消息的解释说明和 IKE 加密参考信息,请参阅参考信息部分。

查看日志和指标

请参阅查看日志和指标

检查错误消息

  1. 转到 Google Cloud Console 中的 VPN 页面。
    转到 VPN 页面
  2. 如果显示一个图标,请将鼠标悬停在该图标上即可查看错误消息

在很多情况下,错误消息可以帮您查明问题。如果未能查明,请检查日志以获取更多信息。Google Cloud Console 中的隧道详情页面上也会显示详细的状态信息。

检查 VPN 日志

Cloud VPN 日志存储在 Cloud Logging 中。Logging 会自动运行,因此无需启用。

对于对等网关,请查看产品文档,了解如何查看连接此端的日志。

在很多情况下,网关都是配置正确的,往往是主机和网关之间的对等网络出现问题,或者是对等网关与 Cloud VPN 网关之间的网络出现问题。

转到 Logging 页面

请检查日志以了解以下信息:

  1. 验证 Cloud VPN 网关上配置的远程对等 IP 地址是正确的。
  2. 验证从本地主机流出的流量可到达对等网关。
  3. 验证两个 VPN 网关之间的流量在双向流动。在 VPN 日志中,检查从其他 VPN 网关报告的传入消息。
  4. 确认隧道两端配置的 IKE 版本相同。
  5. 确认隧道两端的共享密钥相同。
  6. 如果您的对等 VPN 网关位于一对一 NAT 之后,请确保已正确配置 NAT 设备,以便将 UDP 流量转发到端口 500 和 4500 上的对等 VPN 网关。您必须将对等网关配置为使用 NAT 设备的外部 IP 地址标识自己。如需了解详情,请参阅 NAT 后面的本地网关
  7. 如果 VPN 日志显示 no-proposal-chosen 错误,则表示 Cloud VPN 和您的对等 VPN 网关无法就一组加密达成一致。对于 IKEv1,这组加密必须完全匹配。对于 IKEv2,每个网关必须至少提议一个共同的加密。确保使用支持的加密配置对等 VPN 网关。
  8. 检查已配置对等网关和 Google Cloud 路由及防火墙规则,以便流量可以穿过隧道。您可能需要联系网络管理员寻求帮助。

您还可以在日志中搜索以下字符串以查找特定问题:

  1. 转到 Google Cloud Console 中的日志查看器。
    转到日志查看器
  2. 按标签过滤或搜索文字框中,点击最右侧的三角形并选择转换为高级过滤条件
  3. 使用下面列出的某个高级过滤器搜索特定事件,并根据需要调整时间范围。
要查找的问题 使用此日志记录搜索命令
Cloud VPN 启动第 1 阶段 (IKE SA)

resource.type="vpn_gateway"
("initiating IKE_SA" OR "generating IKE_SA_INIT request")
Cloud VPN 无法联系远程对等体

resource.type="vpn_gateway"
"establishing IKE_SA failed, peer not responding"
IKE(第 1 阶段)身份验证事件

resource.type="vpn_gateway"
("generating IKE_AUTH request" OR "parsed IKE_AUTH response")
成功的 IKE 身份验证

resource.type="vpn_gateway"
("authentication of" AND "with pre-shared key successful")
第 1 阶段 (IKE SA) 已建立

resource.type="vpn_gateway"
("IKE_SA" AND "established between")
所有第 2 阶段(子 SA)事件,包括密钥更新事件

resource.type="vpn_gateway"
"CHILD_SA"
对等体要求进行第 2 阶段密钥更新

resource.type="vpn_gateway"
detected rekeying of CHILD_SA
对等体要求终止第 2 阶段(子 SA)

resource.type="vpn_gateway"
received DELETE for ESP CHILD_SA
Cloud VPN 要求终止第 2 阶段(子 SA)

resource.type="vpn_gateway"
sending DELETE for ESP CHILD_SA
Cloud VPN 关闭第 2 阶段(子 SA),可能是为了响应对等体

resource.type="vpn_gateway" closing CHILD_SA
Cloud VPN 自己关闭了第 2 阶段

resource.type="vpn_gateway" CHILD_SA closed
如果远程流量选择器不匹配

resource.type="vpn_gateway"
Remote traffic selectors narrowed
如果本地流量选择器不匹配

resource.type="vpn_gateway"
Local traffic selectors narrowed

检查连接

在使用 ping 操作验证本地系统与 Google Cloud 虚拟机之间的连接时,请考虑以下建议:

  • 确保 Google Cloud 网络中的防火墙规则允许传入 ICMP 流量。隐式允许出站规则允许从您的网络传出 ICMP 流量,除非您已将其覆盖。同样,请确保您的本地防火墙也配置为允许传入和传出 ICMP 流量。

  • 使用内部 IP 地址对 Google Cloud 虚拟机和本地系统执行 ping 操作。对 VPN 网关的外部 IP 地址执行 ping 操作不会测试通过隧道的连接。

  • 测试从本地到 Google Cloud 的连接时,最好从您网络上的系统发起 ping 操作,而不是从 VPN 网关发起此操作。如果设置了适当的源接口,则可通过网关执行 ping 操作,但从网络上的实例执行 ping 操作还可以测试您的防火墙配置。

  • Ping 测试不会验证 TCP 或 UDP 端口确实是打开的。一旦您通过执行 ping 操作确定系统具有基本连接,就应该执行其他测试。

计算网络吞吐量

您可以计算 Google Cloud 中以及传到本地或第三方云位置的网络吞吐量。上述文档介绍了如何分析结果,说明了可能影响网络性能的变量,并提供了问题排查提示。

常见问题和解决方案

隧道经常关闭并持续几秒

默认情况下,Cloud VPN 会在现有 SA 到期之前协商替换 SA(也称为密钥更新)。您的对等 VPN 网关可能不会执行密钥更新。该网关可能只会在删除现有 SA 之后协商新的 SA,从而导致中断。

如需检查对等网关是否执行密钥更新,请查看 Cloud VPN 日志。如果连接断开,然后在出现 Received SA_DELETE 日志消息后立即重新建立,则本地网关未执行密钥更新。

使用受支持的 IKE 密钥文档验证隧道设置。尤其要确保第 2 阶段存在期正确,并将 Diffie-Hellman (DH) 组设置为其中一个建议值。

您可以使用 Logging 高级日志过滤条件来搜索 Cloud VPN 隧道中的事件。例如,以下高级过滤条件将搜索 DH 组不匹配的事件:

resource.type="vpn_gateway"
"Peer proposal: DOES NOT HAVE DIFFIE_HELLMAN_GROUP"

NAT 后面的本地网关

Cloud VPN 可与 NAT 后面的本地或对等 VPN 网关结合使用。这可以通过 UDP 封装和 NAT-T 实现,并且仅支持一对一 NAT。

在身份验证过程中,Cloud VPN 会检查对等网关的身份。Cloud VPN 要求每个对等网关采用以下方式标识自己:使用 RFC 7815 中指定的 ID_IPV4_ADDR 标识类型,并使用为 Cloud VPN 隧道配置的公共 IP(对等网关)地址。

以下日志消息表明对等 VPN 网关使用专用 IP 地址错误地标识自己。在此示例中,[PEER GATEWAY PRIVATE IP] 是专用 IP 地址,[PEER GATEWAY PUBLIC IP] 是对等 VPN 网关与互联网之间的 NAT 设备的公共 IP 地址。

authentication of '[PEER GATEWAY PRIVATE IP]' with pre-shared key successful
constraint check failed: identity '[PEER GATEWAY PUBLIC IP]' required
selected peer config 'vpn_[PEER GATEWAY PUBLIC IP]' inacceptable: constraint checking failed

使用一对一 NAT 时,您的本地 VPN 网关必须使用 NAT 设备的同一外部 IP 地址来标识自己:

  • 标识类型必须是 ID_IPV4_ADDR (RFC 7815)。

  • 并非所有 Cisco 设备都支持将设备标识设置为与设备所用 IP 地址(其内部地址)不同的 IP 地址。例如,Cisco ASA 设备不支持为其身份分配不同的(外部)IP 地址。因此,Cisco ASA 设备无法配置为将一对一 NAT 与 Cloud VPN 结合使用。

  • 对于 Juniper 设备,您可以使用 set security ike gateway [NAME] local-identity inet [PUBLIC_IP] 设置设备标识,其中 [NAME] 是您的 VPN 网关名称,[PUBLIC_IP] 是您的外部 IP 地址。如需了解详情,请参阅此篇 Juniper TechLibrary 文章

连接检查在某些虚拟机上能操作成功,但在其他虚拟机上不成功

使用 pingtraceroute 或其他发送流量的方法检查连通性时,如果只是从某些虚拟机到本地系统能发送成功,或者只是从某些本地系统到某些 Google Cloud 虚拟机能发送成功,并且您已验证 Google Cloud 和本地防火墙规则均未屏蔽您发送的流量,则您可能使用了排除特定来源或目的地的流量选择器。

流量选择器定义 VPN 隧道的 IP 地址范围。除了路由之外,大多数 VPN 实现仅在其源位于本地流量选择器中指定的 IP 范围内且其目的地位于远程流量选择器中指定的 IP 范围内时,才通过隧道传送数据包。使用基于政策的路由基于路由的 VPN 创建传统 VPN 隧道时,您需要指定流量选择器。您在创建相应的对等隧道时也需要指定流量选择器。

某些供应商将“本地代理”、“本地加密网域”或“左侧网络”等术语用作“本地流量选择器”的同义词。同样,“远程代理”、“远程加密网域”或“右侧网络”是“远程流量选择器”的同义词。

如需更改某传统 VPN 隧道的流量选择器,您必须删除该隧道,然后重新创建。这些是必需的步骤,因为流量选择器是隧道创建过程中不可或缺的一部分,并且隧道在创建之后无法修改。

定义流量选择器时,请遵循以下准则:

  • Cloud VPN 隧道的本地流量选择器应涵盖需要与对等网络共享的 VPC 网络中的所有子网。
  • 对等网络的本地流量选择器应涵盖需要与 VPC 网络共享的所有本地子网。
  • 对于指定的 VPN 隧道,流量选择器具有以下关系:
    • Cloud VPN 本地流量选择器应与对等 VPN 网关上隧道的远程流量选择器相匹配。
    • Cloud VPN 远程流量选择器应与对等 VPN 网关上隧道的本地流量选择器相匹配。

连接传统 VPN 和高可用性 VPN 网关

Google Cloud 不支持通过连接到传统 VPN 网关的高可用性 VPN 网关创建隧道。如果您尝试创建具有传统 VPN 网关的外部 IP 地址的 externalVpnGateway 资源,Google Cloud 将返回以下错误消息:

  You cannot provide an interface with an IP address owned by Google Cloud.
  You can only create tunnels from an HA gateway to an HA gateway
  or create tunnels from an HA gateway to an ExternalVpnGateway.

这是预期行为。请改为创建将一个高可用性 VPN 网关连接到另一个高可用性 VPN 网关的 VPN 隧道。

问题排查参考信息

本部分包含状态图标列表、状态消息列表和支持的 IKE 加密方式列表。

状态图标

Cloud VPN 在 Google Cloud Console 中使用以下状态图标:

图标图片 颜色 说明 应用的消息
绿色成功图标
绿色 成功 已建立
黄色警告图标
黄色 警告 正在分配资源、首次握手、正在等待完整配置、正在预配
红色错误图标
红色 错误 其余所有消息

状态消息

Cloud VPN 使用以下状态消息来指示 VPN 网关和隧道状态。VPN 隧道按指示的状态计费

消息 说明 是否对此状态的隧道收取费用?
正在分配资源 正在分配用于设置隧道的资源
正在预配 正在等待接收用于设置隧道的所有配置
正在等待完整配置 已收到完整配置,但尚未建立隧道
首次握手 正在建立隧道
已建立 成功建立了安全通信会话
网络连接错误
(替换为“没有传入数据包”)
IPsec 授权错误
授权错误 握手失败
协商失败 隧道配置被拒绝;可能是由于被添加到禁止名单中
正在取消预配 隧道即将关闭
没有传入数据包 网关未收到来自本地 VPN 的任何数据包
已拒绝 隧道配置被拒绝,请与支持团队联系
已停止 隧道已停止且处于非活动状态。这可能是删除了 VPN 隧道的一个或多个必需的转发规则所致。

IKE 加密方式概览

传统 VPN 和高可用性 VPN 支持以下 IKE 加密方式。

IKEv2 具有两个部分,一个用于使用带关联数据的加密认证 (AEAD) 的加密方式,另一个用于不使用 AEAD 的加密方式。

使用 AEAD 的 IKEv2 加密方式

第 1 阶段

加密角色 加密方式 备注
加密和完整性
  • AES-GCM-16-128
  • AES-GCM-16-192
  • AES-GCM-16-256
在此列表中,第一个数字是以字节(八位字节)为单位的 ICV 参数的大小,第二个数字是以为单位的密钥长度。

某些文档可能会以位为单位表示 ICV 参数(第一个数字),这时原本的数字 8 需要变为 64,12 变为 96,16 变为 128。
伪随机函数 (PRF)
  • PRF-AES128-XCBC
  • PRF-AES128-CMAC
  • PRF-HMAC-SHA1
  • PRF-HMAC-MD5
  • PRF-HMAC-SHA2-256
  • PRF-HMAC-SHA2-384
  • PRF-HMAC-SHA2-512
许多设备都不需要显式 PRF 设置。
Diffie-Hellman (DH)
  • modp_2048(第 14 组)
  • modp_2048_224 (modp_2048s224)
  • modp_2048_256 (modp_2048s256)
  • modp_1536(第 5 组)
  • modp_3072(第 15 组)
  • modp_4096(第 16 组)
  • modp_8192(第 18 组)
  • modp_1024(第 2 组)
  • modp_1024_160 (modp_1024s160)
Cloud VPN 的提案按照所示顺序显示这些密钥交换算法。Cloud VPN 接受包含以上一个算法或多个任意顺序算法的任何提案。
第 1 阶段存在期 36000 秒(10 小时)

第 2 阶段

加密角色 加密方式 备注
加密和完整性
  • AES-GCM-16-128
  • AES-GCM-16-256
  • AES-GCM-16-192
Cloud VPN 的提案按照所示顺序显示这些算法。Cloud VPN 接受包含以上一个算法或多个任意顺序算法的任何提案。

请注意,每个算法中的第一个数字是以字节(八位字节)为单位的 ICV 参数的大小,第二个数字是以为单位的密钥长度。某些文档可能会以位为单位表示 ICV 参数(第一个数字),这时原本的数字 8 需要变为 64,12 变为 96,16 变为 128。
PFS 算法(必需)
  • modp_2048(第 14 组)
  • modp_2048_224 (modp_2048s224)
  • modp_2048_256 (modp_2048s256)
  • modp_1536(第 5 组)
  • modp_3072(第 15 组)
  • modp_4096(第 16 组)
  • modp_8192(第 18 组)
  • modp_1024(第 2 组)
  • modp_1024_160 (modp_1024s160)
Cloud VPN 的提案按照所示顺序显示这些密钥交换算法。Cloud VPN 接受包含以上一个算法或多个任意顺序算法的任何提案。
Diffie-Hellman (DH) 请参阅第 1 阶段 如果您的 VPN 网关需要第 2 阶段的 DH 设置,请使用与第 1 阶段相同的设置。
第 2 阶段存在期 10800 秒(3 小时)

不使用 AEAD 的 IKEv2 加密方式

第 1 阶段

加密角色 加密方式 备注
加密
  • AES-CBC-128
  • AES-CBC-192
  • AES-CBC-256
  • 3DES-CBC
  • AES-XCBC-96
  • AES-CMAC-96
Cloud VPN 的提案按照所示顺序显示这些对称加密算法。Cloud VPN 接受使用以上一个算法或多个任意顺序算法的任何提案。
完整性
  • HMAC-SHA1-96
  • HMAC-MD5-96
  • HMAC-SHA2-256-128
  • HMAC-SHA2-384-192
  • HMAC-SHA2-512-256
Cloud VPN 的提案按照所示顺序显示这些 HMAC 算法。Cloud VPN 接受包含以上一个算法或多个任意顺序算法的任何提案。

您本地 VPN 网关文档使用的算法名称可能会略有不同。例如,HMAC-SHA2-512-256 可能简称为 SHA2-512SHA-512,后者丢弃了截断长度数和其他无关信息。
伪随机函数 (PRF)
  • PRF-AES-128-XCBC
  • PRF-AES-128-CMAC
  • PRF-SHA1
  • PRF-MD5
  • PRF-SHA2-256
  • PRF-SHA2-384
  • PRF-SHA2-512
许多设备都不需要显式 PRF 设置。
Diffie-Hellman (DH)
  • modp_2048(第 14 组)
  • modp_2048_224 (modp_2048s224)
  • modp_2048_256 (modp_2048s256)
  • modp_1536(第 5 组)
  • modp_3072(第 15 组)
  • modp_4096(第 16 组)
  • modp_8192(第 18 组)
  • modp_1024(第 2 组)
  • modp_1024_160 (modp_1024s160)
Cloud VPN 的提案按照所示顺序显示这些密钥交换算法。Cloud VPN 接受包含以上一个算法或多个任意顺序算法的任何提案。
第 1 阶段存在期 36000 秒(10 小时)

第 2 阶段

加密角色 加密方式 备注
加密
  • AES-CBC-128
  • AES-CBC-256
  • AES-CBC-192
Cloud VPN 的提案按照所示顺序显示这些对称加密算法。Cloud VPN 接受包含以上一个算法或多个任意顺序算法的任何提案。
完整性
  • HMAC-SHA2-256-128
  • HMAC-SHA2-512-256
  • HMAC-SHA1-96
Cloud VPN 的提案按照所示顺序显示这些 HMAC 算法。Cloud VPN 接受包含以上一个算法或多个任意顺序算法的任何提案。

您本地 VPN 网关文档使用的算法名称可能会略有不同。例如,HMAC-SHA2-512-256 可能简称为 SHA2-512SHA-512,后者丢弃了截断长度数和其他无关信息。
PFS 算法(必需)
  • modp_2048(第 14 组)
  • modp_2048_224 (modp_2048s224)
  • modp_2048_256 (modp_2048s256)
  • modp_1536(第 5 组)
  • modp_3072(第 15 组)
  • modp_4096(第 16 组)
  • modp_8192(第 18 组)
  • modp_1024(第 2 组)
  • modp_1024_160 (modp_1024s160)
Cloud VPN 的提案按照所示顺序显示这些密钥交换算法。Cloud VPN 接受包含以上一个算法或多个任意顺序算法的任何提案。
Diffie-Hellman (DH) 请参阅第 1 阶段。 如果您的 VPN 网关需要第 2 阶段的 DH 设置,请使用与第 1 阶段相同的设置。
第 2 阶段存在期 10800 秒(3 小时)

IKEv1 加密方式

第 1 阶段

加密角色 加密方式
加密 AES-CBC-128
完整性 HMAC-SHA1-96
伪随机函数 (PRF)* PRF-SHA1-96
Diffie-Hellman (DH) modp_1024(第 2 组)
第 1 阶段存在期 36600 秒(10 小时 10 分钟)

*如需详细了解 IKEv1 中的 PRF,请参阅 RFC 2409

第 2 阶段

加密角色 加密方式
加密 AES-CBC-128
完整性 HMAC-SHA1-96
PFS 算法(必需) modp_1024(第 2 组)
Diffie-Hellman (DH) 如果您需要为 VPN 网关指定 DH,请使用与第 1 阶段相同的设置。
第 2 阶段存在期 10800 秒(3 小时)

后续步骤

问题排查相关信息

  • 如需了解详情,请参阅 Stackdriver Logging 文档,其中介绍了如何导出日志,以及如何使用基于日志的指标来进行监控和发出提醒。

VPN 相关信息