![当客户端保留了所有可能的内部 IP 地址时,如何使用 Google Cloud VPN 连接到客户端的网络?](https://linux22.com/image/727585/%E5%BD%93%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BF%9D%E7%95%99%E4%BA%86%E6%89%80%E6%9C%89%E5%8F%AF%E8%83%BD%E7%9A%84%E5%86%85%E9%83%A8%20IP%20%E5%9C%B0%E5%9D%80%E6%97%B6%EF%BC%8C%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20Google%20Cloud%20VPN%20%E8%BF%9E%E6%8E%A5%E5%88%B0%E5%AE%A2%E6%88%B7%E7%AB%AF%E7%9A%84%E7%BD%91%E7%BB%9C%EF%BC%9F.png)
目标
我想使用第三方的 API。该第三方要求我建立与其网络的 VPN 连接。因此,他们需要一个远程对等 IP 地址来建立 VPN,然后需要一个可以列入白名单的内部 IP 地址。
我的应用程序托管在 Google Cloud Platform 上,因此我想使用 Google Cloud VPN 设置 VPN 隧道和网关。我打算使用 GCE VM 通过 VPN 查询第三方 API。
尝试解决
我使用 Cloud VPN 设置了到第三方的 VPN 网关和基于路由的隧道(只有一条路由)。GCP 控制台确认连接已成功建立。
我还设置了一个 GCE VM 并为其分配了一个静态内部 IP 地址和一个静态外部 IP 地址。
第三方将分配给我的虚拟机的静态外部 IP 地址列入白名单。
问题
我的解决方案没有奏效。尽管 VPN 已成功连接,但我无法从 GCE VM ping 第三方提供的内部 IP 地址。
问题是第三方声称已在其自己的网络中保留了所有可能的内部 IP 地址:172.*、192.*、10.*,这看起来很奇怪...因此,他们不可能将我的虚拟机的内部 IP 列入白名单,因为这与他们的内部地址范围冲突。相反,他们将分配给我的虚拟机的外部 IP 地址列入白名单。
这种方法不起作用,因为我无法从我的虚拟机 ping 他们的内部 IP。
问题
我们如何解决这个问题?我认为问题在于,当我使用我的虚拟机通过 VPN 查询他们的 API 时,流量来自内部 IP(但他们只将我的外部 IP 列入白名单)。那么在使用 Cloud VPN 时,有没有办法强制流量来自我的虚拟机的外部 IP?
我研究了如何在 VM 实例上设置自己的 VPN,使用以下说明:将实例设置为 VPN 网关。但是,似乎即使在这里我也遇到了同样的内部 IP 地址范围冲突问题。
任何帮助将不胜感激!
答案1
根据 GCP 文档,Cloud VPN 可以与VPC 网络和传统网络. 对于 VPC,自定义模式是推荐的,这样您就可以完全控制网络中子网使用的 IP 地址范围。据我了解,无法将外部 IP 与 Cloud VPN 结合使用。
正如您所提到的,不可能使用 172.、192.、10.X IP 范围,您可以尝试使用其他有效的 IP 范围吗?RFC 1918CIDR 块。
10.0.0.0 - 10.255.255.255 (10/8 前缀)
172.16.0.0 - 172.31.255.255 (172.16/12 前缀)
192.168.0.0 - 192.168.255.255 (192.168/16 前缀)
希望并非所有这些 CIDR 块都已被保留。使用 GCP 中的 VM 实例作为 VPN 网关会产生与其从同一 IP 块获取 IP 相同的问题。您可以做的是请求第三方发布一小部分 IP 块并使用该 IP 块创建自定义模式网络,然后在此 VPN 场景中使用它。
但是,如果您想使用 Cloud VPN,则必须使用其中一个 CIDR 块。
为此,如果您愿意,可以创建一个使用外部 IP 与 Cloud VPN 的功能请求,请按照以下步骤操作功能请求链接。