我的 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 互操作指南。