如果你可以部署一台服务器 A,使其作为机器 B、C 和 D 的 IP 网关,那么这样做有很多优势。例如,在真实的机房中,只要 B、C 和 D 都被编程为将服务的公共 IP 地址视为自己的 IP 地址,A 就可以通过将数据包转发到 B、C 和 D 来平衡传入的客户连接,而无需暂停重写它们,并且所有回复数据包都可以直接流回客户,而无需通过负载均衡器返回。
不那么雄心勃勃的方案是,可以在网关机器 A 上使用 HAProxy 之类的东西和 Linux Tproxy 内核扩展,这样传入的负载平衡连接就可以将其数据包转发到 B、C 和 D,而无需更改源 IP 地址,而只需更改目标 IP 地址。虽然这需要重写返回数据包,并且必须将 B、C 和 D 配置为使用 A 作为其 IP 网关,但它解决了如何实现负载平衡的问题,同时又不会失去在服务器 B、C 和 D 上检测和记录客户 IP 地址的能力。
我的问题是:
哪些云托管提供商允许将机器放置在虚拟 LAN 上,以便提供真正的链路级自由,仅基于 MAC 地址在机器之间发送数据包,而不考虑 IP 地址?
如果机器 B 要使用机器 A 作为 IP 网关,那么显然机器 A 将会收到来自机器 B 的大量数据包,这些数据包没有 A 的 IP 地址,而是 B 希望与之通信的 Internet 上其他主机的地址。
昨晚我花了一个小时试验亚马逊提供的虚拟私有云 (VPC) 服务,但发现无法让机器 A 充当网关——尽管我可以告诉 B,A 是它的 IP 网关,并打开ip_forward
A,但 B 尝试发送出 LAN 的数据包从未到达 A,显然是因为亚马逊需要 MAC 地址和在将数据包从 B 传递到 A 之前,检查 IP 地址是否正确。
哪些(如果有的话)云托管提供商可以让我设置 LAN,以便机器可以纯粹基于 MAC 寻址传递数据包?
答案1
您可以使用 openvpn 和以太网桥接来创建由所有服务器共享的虚拟第二层网段来解决此问题。