云内 VPN IPSec AWS - Google Cloud 间歇性超时并重新连接

云内 VPN IPSec AWS - Google Cloud 间歇性超时并重新连接

我的 AWS - Google Cloud IPSec VPN 隧道死对等检测 (DPD) 不断超时,并迫使它每天至少重新建立一次连接。这意味着 Google Cloud 上的生产服务处于关闭状态,而每次重新建立连接大约需要 4 分钟。

我尝试过每 5 分钟在 Google Cloud VM 上运行一次 bash 脚本来 ping AWS - 但超时一直发生。我猜 ICMP 不被视为有趣的流量。还有其他方法可以解决这个问题/强制连接保持打开状态吗?

原因:我目前有一个 RDS PostgreSQL 数据库和一个在 AWS 中运行的 Redis 服务器,Google Cloud 上的一些服务需要访问它们。我没有将其公开,尤其是因为 Redis 安全性基本上是网络隔离的 - 我选择打开 IPSec 隧道,以便它们可以通过内部 IP 进行通信。我按照此处的说明操作,并让 VPN 正常运行。 https://medium.com/google-cloud/vpn-between-two-clouds-e2e3578be773 - 使用静态路由 - IPSec IKEv1 - 适用于 AWS 的通用 VPN 配置

从 Google Cloud 端查看 VPN 日志(我看不出在 AWS 上查看此日志的方法) - 大多数情况下它看起来都是这样的。

D  sending DPD request 
D  generating INFORMATIONAL_V1 request 1644989539 [ HASH N(DPD) ] 
D  sending packet: from XX.XX.XX.XX[4500] to XX.XX.XX.XX[4500] (92 bytes) 
D  received packet: from XX.XX.XX.XX[4500] to XX.XX.XX.XX[4500] (92 bytes) 
D  parsed INFORMATIONAL_V1 request 4120768163 [ HASH N(DPD_ACK) ] 
D  sending DPD request 

当它关闭时,看起来 DPD 检查失败,它会尝试重新建立连接。我已将完整日志粘贴在下面,以防有用。

D  DPD check timed out, enforcing DPD action 
D  creating acquire job for policy with reqid {1} 
I  initiating Main Mode IKE_SA vpn_BB.BB.BB.BB[58] to BB.BB.BB.BB 
D  generating ID_PROT request 0 [ SA V V V V ] 
D  sending packet: from AA.AA.AA.AA[500] to BB.BB.BB.BB[500] (156 bytes) 
D  received packet: from BB.BB.BB.BB[500] to AA.AA.AA.AA[500] (124 bytes) 
D  parsed ID_PROT response 0 [ SA V V ] 
D  received DPD vendor ID 
D  received NAT-T (RFC 3947) vendor ID 
D  generating ID_PROT request 0 [ KE No NAT-D NAT-D ] 
D  sending packet: from AA.AA.AA.AA[500] to BB.BB.BB.BB[500] (244 bytes) 
D  received packet: from BB.BB.BB.BB[500] to AA.AA.AA.AA[500] (228 bytes) 
D  parsed ID_PROT response 0 [ KE No NAT-D NAT-D ] 
D  remote host is behind NAT 
D  generating ID_PROT request 0 [ ID HASH N(INITIAL_CONTACT) ] 
D  sending packet: from AA.AA.AA.AA[4500] to BB.BB.BB.BB[4500] (108 bytes) 
D  received packet: from BB.BB.BB.BB[4500] to AA.AA.AA.AA[4500] (76 bytes) 
D  parsed ID_PROT response 0 [ ID HASH ] 
I  IKE_SA vpn_BB.BB.BB.BB[58] established between AA.AA.AA.AA[AA.AA.AA.AA]...BB.BB.BB.BB[BB.BB.BB.BB] 
D  scheduling rekeying in 35670s 
D  maximum IKE_SA lifetime 36270s 
D  generating QUICK_MODE request 3920627352 [ HASH SA No KE ID ID ] 
D  sending packet: from AA.AA.AA.AA[4500] to BB.BB.BB.BB[4500] (316 bytes) 
D  received packet: from BB.BB.BB.BB[4500] to AA.AA.AA.AA[4500] (300 bytes) 
D  parsed QUICK_MODE response 3920627352 [ HASH SA No KE ID ID ] 
D  handling HA CHILD_SA vpn_BB.BB.BB.BB{382} 0.0.0.0/0  === 0.0.0.0/0  (segment in: 1, out: 1) 
I  CHILD_SA vpn_BB.BB.BB.BB{382} established with SPIs 7ac4f08b_i 9780f8e5_o and TS 0.0.0.0/0 === 0.0.0.0/0  
D  generating QUICK_MODE request 3920627352 [ HASH ] 
D  sending packet: from AA.AA.AA.AA[4500] to BB.BB.BB.BB[4500] (60 bytes) 

答案1

默认情况下,Cloud VPN 会在现有 SA 到期之前协商替换 SA(也称为重新密钥)。您的本地 VPN(在本例中为 AWS 端)网关可能不会重新密钥。相反,它可能仅在删除现有 SA 后才协商新 SA,从而导致中断。根据 GCP 文档常见问题及解决方法

我怀疑 DPD 只是症状,而不是此问题的实际原因。我还从日志中注意到,最大 IKE_SA 生存期设置为 36270 秒,但根据GCP 文档生命周期应该:

第 1 阶段寿命 36,600 秒(10 小时 10 分钟)

第 2 阶段寿命 10,800 秒(3 小时)

当使用 IKEv1 时,按照建议GCP IKEv1 支持的密码

鉴于此,我认为存在一些配置问题。Google Cloud Platform 有特定的使用 Cloud VPN 的 AWS VPN 网关解决方案指南,这应该对这种情况有所帮助。

鉴于此,我建议重新检查 VPN 配置,并确保配置按照Google Cloud VPN 互操作指南

相关内容