我正在使用 Google Cloud 负载均衡器来平衡内部服务器并通过防火墙规则阻止外部访问,如官方文档中所述。
我只是从网络性能的角度好奇,数据包真的会离开谷歌网络并返回吗?或者它是否经过优化,因为通过 DNS 解析,谷歌服务器可以检测到这是一个谷歌 IP,并且路由经过了优化。并且 traceroute 命令确实只显示一跳。但想就此获得一些额外的意见。如果 1 跳的情况属实,我们真的不需要谷歌的仅内部负载平衡器。至少对我来说,这种设置很好,而且很顺利。
PS.(一些背景信息:Google 目前不提供内部流量的负载平衡功能。其前端 IP 目前始终是外部 IP 地址。)
干杯。
五
答案1
将根据每个实例都知道的子网 IP 地址范围检查目标 IP 地址。
- 如果 IP 地址在网络外:
a. 实例将数据包发送到子网的网关 MAC 地址,并将目标设置为数据包的最终目的地。实例可能需要发出 ARP 请求来解析网关的 MAC 地址。
b. 网络重写 IP 标头,声明实例的外部 IP 地址为源。如果实例没有外部 IP 地址,则不允许调用,并且网络会丢弃数据包而不通知发送者。
c. 网络记录传出的数据包,并将源和目标添加到活动连接表中。
d. 网络将数据包发送到目的地。
e. 目的地收到数据包并根据需要做出响应。
f. 网络收到响应,查阅活动连接表,注意到这是一个活动连接,并允许它。网络查阅其网络/外部 IP 查找表,用匹配的网络地址替换实例的外部 IP 地址,并将数据包发送到源实例。
g.实例接收数据包。
- 如果目标 IP 地址在网络内:
a. 实例配置了掩码为 255.255.255.255 的 IP,因此实例将数据包发送到子网的网关 MAC 地址。实例首先可能需要发出 ARP 请求来解析网关的 MAC 地址。
b. 网络,使用代理 ARP,使用目标实例的 MAC 地址进行响应。
c.网关接收数据包,并将数据包路由到网络内的目标IP。
d. 目标实例接收数据包。目标实例检查入口防火墙以确定数据包是否被允许。如果不允许,则默默丢弃数据包。否则,实例将处理数据包。
您可以在此帮助中心获取有关此事的更多信息文章。
此外,您还可以在此帮助中心获取有关在 GCE 上使用 HAProxy 进行内部负载平衡的更多信息文章因为 Google 提供的 L7 和 L4 负载均衡器目前不支持内部负载均衡。