我不清楚SDN实施究竟如何帮助我解决这一问题,但也许有人可以澄清一下:
我有物理主机 A 和 B。主机 A 有 5 个路由到它的 IPv4 地址,主机 B 有一个。
我想将 4 个 ipv4 地址上的流量透明地转发到主机 B。
假设主机 B 是 VirtualBox 虚拟机管理程序。我希望在主机 B 上启动 4 个虚拟机,这些虚拟机“认为”它们位于主机 A 的网络上,并且没有理由不这样做。
据我所知,人们管理虚拟交换机以通过互联网将远程站点连接在一起,但我希望主机 B 上的虚拟机具有主机 A 的可公开路由的 ipv4 地址。这可行吗?
答案1
你首先需要有一个物理连接主机 A 和 B 之间,即两者都在同一个第 2 层域(例如同一个 VLAN)中有一个接口。如果它们共享同一个 L2 域(我认为它们可能按照您的描述共享),则可以使用具有当前公共 IP 地址的接口
您的 ISP 将通过主机 A 路由来自 Internet 并定向到这些 IP 地址的任何流量,因此主机 A 必须将它们路由到 B。在 A 上启用 IP 转发,因此当 A 获得发往其他 4 个 IP 中的任何一个的数据包时,它将在本地链路子网(ARP 解析)中查找目的地并传递它。
如果 A 和 B 共享物理连接,并且 B 中的虚拟机桥接到该接口,则可以在虚拟机上配置 IP 地址,并使用 A 作为默认网关。主机 B 中的虚拟机将接收来自 A 的流量并将其返回给 A。由于 A 可能是无状态转发器,因此您可以将虚拟机的默认路由更改为指向 A 在同一子网中使用的出口路由器,这样可以稍微优化性能。
编辑后添加:如果您的 ISP 路由器没有专门路由这些 IP,那么您可能需要使用代理 ARP 来捕获请求并在内部路由它们。但是,如果不真正了解所有细节,就很难说出在您的案例中最好的方法是什么,以及为什么以及如何将这些 IP 地址“分配”给主机 A。也许您只需要在 B 上配置它们并将它们从 A 中删除?:)
不过我不推荐上述做法:)你正在增加 B 的故障点(如果 A 出现故障,B 中的虚拟机也会出现故障)
我的建议是与您的 ISP 或上游管理路由器的人员联系,并让他们将 IP 地址指向 B。
如果使用公共 IP 地址的要求只是表面的,那么请使用一些允许您使用覆盖网络中的任何地址的覆盖网络提供商。这样,您将无法从 Internet 路由到这些 IP 地址。