我有以下物理布局:
VM -> Workstation -> Router -> Internet
我希望最终得到以下网络布局:
Workstation -> Router1 -> Internet
VM -> Router2 -> Internet
其中Router1
和Router2
是同一个物理路由器,并且虚拟机在工作站上运行。从工作站到虚拟机的数据包需要遵循以下路径:
Workstation -> Router1 -> Internet -> Router2 -> VM
这样 VM 看到的就是 Workstation 的公共 IP,而不是其私有 IP。这能做到吗?
背景
我正在测试STUN 服务器在虚拟机中运行。测试需要 VM 定位 Workstation 的公共 IP(无需外部服务器的帮助)。
答案1
在哪里Router1 和 Router2 是同一物理路由器并且虚拟机正在工作站上运行。从工作站到虚拟机的数据包需要遵循此路径工作站 -> 路由器 1 -> 互联网 -> 路由器 2 -> VM
使用任何标准路由器都无法实现这一点。如果数据包的目的地是直接连接的网络,路由器不会将数据包引导到 Internet。因此,您唯一能做的就是这样做。 工作站 -> 路由器 1 -> VM。
您可能可以设置一个可以进行测试的网络,但需要比您想要/预期的更复杂的设置。
由于您正在运行 Vmware,因此您可以设置多个虚拟网络,至少对于用于测试的 VM 来说是这样。您需要创建一堆。我想我会创建这样的网络。
虚拟机
- 路由器 1(将工作站 1 连接到本地网络)
- 两个接口,一个在 VMnet0 上,一个在 VMnet3 上
- 路由器 2(将工作站 2 连接到本地网络)
- 两个接口,一个在 VMnet0 上,一个在 VMnet4 上
- 工作站 1(用于测试的客户端或服务器)
- VMnet3 上有一个接口
- 工作站 2(用于测试的客户端或服务器)
- VMnet4 上有一个接口
网络:
- VMnet0 - 这是您预先存在的用于测试的桥接网络,将其视为外部网络
- VMnet3 - 仅主机 - DHCP 已禁用 - 这将路由器 1 连接到工作站 1
- VMnet4 - 仅主机 - DHCP 已禁用 - 这将路由器 2 连接到工作站 2
至于路由器,您可以使用一些简单的设备,例如 x86 版本的 DD-WRT 或 pfsense,以获得相当易于使用的路由器。为了进行测试,您可能实际上想要尝试几个不同的路由器。
通过如上所示的网络设置,两个测试工作站之间的数据包将按如下方式流动:
workstation 2 -> vmnet4 -> router 2 -> vmnet0 -> router 1 -> vmnet3 -> workstation 3