【问题标题】:Cloud VPN with TCP Load Balancer带有 TCP 负载均衡器的 Cloud VPN
【发布时间】:2019-07-04 11:20:00
【问题描述】:

我正在尝试在具有 5 个虚拟机的 GCP 网络中设置 Cloud VPN,其中一个虚拟机位于 TCP 负载均衡器后面的实例组中,将实例组端口代理到互联网,以及 VPN 隧道本身运行良好,因为它已经建立,我可以从我的本地网络 ping 这些虚拟机。

但是,在我配置好 VPN 隧道后,我无法再访问外部负载均衡器 IP!

我检查了防火墙规则,一切正常。如果我删除VPN隧道和路由,我可以正常访问IP。这种行为是预期的吗?如果我在同一网络中有 Cloud VPN,我真的无法访问负载均衡器 IP?

顺便说一句,所有虚拟机都没有外部 IP,只有内部 IP。正如我之前所说,其中之一是在 LB 后面获取 Internet 访问权限。

我希望从我的本地网络连接到 TCP 负载均衡器后面的实例组中的虚拟机,并在该网络中建立了 Cloud VPN。我只能访问内部IP,不能访问LB外部IP。

【问题讨论】:

  • 您说“我无法再访问外部负载均衡器 IP”。您从哪里测试(GCP VPC 外部或 VPC 内部)?查看您正在测试的路由表。你有通往公共互联网的路线吗?

标签: google-cloud-platform google-cloud-networking google-cloud-vpn google-cloud-load-balancer


【解决方案1】:

让我总结一下,

重点是:

- TCP 负载均衡器 (LB) - 区域网络 LB
- 从本地到 GCP 的 VPN 隧道
- 5个VM实例,1个实例进入一个实例组使用LB,所有VM都只有内部IP。
- 配置 VPN 隧道后使用负载平衡器的 IP 前端失去访问权限
- 防火墙规则似乎没问题
- 如果您删除 VPN 隧道和“路由”,您将使用 IP 前端恢复访问

回答您的直接问题:
- 这种行为是意料之中的吗?

答:
- 不,这种行为不是预期的,您可以使用 TCP 负载均衡器访问您的虚拟机实例,并使用 VPN 隧道同时从另一个(本地)网络访问相同的虚拟机实例。

关于 TCP LB(外部 - 区域)非代理,您需要考虑选项并选择最适合您的需求 [1],我想知道,您使用什么样的服务(在后端)以及使用什么端口您需要,因为 TCP 负载均衡器执行直通,所以请求从前端(外部 IP)到后端(VM 实例)完好无损地到达后端,保留相同的端口来访问您的服务。但是,不清楚您使用的是 TCP LB 还是 TCP 代理 LB。您如何测试前端 IP? (ping、nmap 等)

您正在检查和配置哪些防火墙规则?因为 LB 和 Cloud VPN 需要特定的防火墙规则 [2] [3]。
提醒我您需要删除路由,您能否详细解释一下此路由 [4],它们是由 GCP 生成的还是您自己生成的,这些路由的目的是什么?

您的负载均衡器和 VPN 是在哪里创建的? (Zone-Region) 考虑到您使用的两种资源都是区域性的 [5] [6]

通过这些链接,您将找到有助于找到可能的故障点的信息。


[1] https://cloud.google.com/load-balancing/docs/choosing-load-balancer#deciding_on_a_load_balancer
[2]https://cloud.google.com/load-balancing/docs/network/setting-up-network#create_a_firewall_rule_to_allow_external_traffic_to_these_vm_instances
[3]https://cloud.google.com/vpn/docs/how-to/configuring-firewall-rules
[4]https://cloud.google.com/vpc/docs/routes
[5]https://cloud.google.com/load-balancing/docs/network/
[6]https://cloud.google.com/vpn/docs/concepts/overview#ha-vpn

【讨论】:

  • 您好,我正在使用 telnet 做我的应用程序的 8181 端口,在项目中没有配置 VPN 的情况下运行良好。它是 TCP 网络 LB,而不是 TCP 代理。关于防火墙,我只是从 0.0.0.0/0 打开到端口 8181 的 TCP 入站连接,并且在外部连接正常。即使使用 VPN,使用 0.0.0.0/0 也应该可以工作,对吧?我提到的路由是为 VPN 自动创建的路由。 VPN 和 LB 都在 southamerica-east1。我也在与谷歌支持进行调查,他们建议使用内部 LB,但我认为这样我无法从互联网连接。
  • 你好 Hugo,我明白了,端口 8181 使用 telnet 并且只有使用/配置 VPN 失败。 TCP 网络负载均衡器没问题,但最好了解前端配置,因为在 TCP 负载均衡器配置期间端口 8181 不可用。我知道你提到它工作正常,只是为了了解细节。如果您想对您的虚拟机实例进行多次访问(从使用内部 IP 地址的 VPN 和使用互联网的外部访问),则内部 Google 负载均衡器没有用处。
  • 使用 telnet 到端口 8181 时得到的错误/输出是什么?请分享命令和输出。在您的本地网络中,您是否使用防火墙?如果答案是肯定的。你是如何管理出口的?您需要允许从本地子网到您从 VPN 隧道接收的 GCP 子网的端口 8181 的连接,您之前是否考虑过这一点?请记住,通过 VPN,您只允许内部私有 IP 地址。
  • 也很高兴知道:-您使用的是什么类型的 Google VPN? (基于策略、基于路由、BGP) - 路由如何改变 Internet 网关?你有多个优先事项吗?请在配置 VPN 之前和之后进行下一个测试,站在您的本地网络(安装 nmap):nmap -Pn -p 8181 <IP.IP.IP.IP> (Try with internal "VM" and external "GLB" IP address) traceroute <IP.IP.IP.IP> (If you try aiming to internal GCP IP address you must see the VPN tunnel path, and if you try with External IP you should see a longest path going through Internet)
  • 通过此测试,我们可以查看您是否有路由问题,或者问题是由防火墙问题引起的,请分享命令和输出。与我分享您的结果、输出文本/错误或您认为有帮助的任何其他细节。
猜你喜欢
  • 2021-03-28
  • 2021-12-07
  • 2015-09-03
  • 2021-09-29
  • 2021-11-15
  • 1970-01-01
  • 2022-01-10
  • 1970-01-01
  • 2015-12-24
相关资源
最近更新 更多