背景

背景

我有以下物理布局:

VM -> Workstation -> Router -> Internet

我希望最终得到以下网络布局:

Workstation -> Router1 -> Internet
VM          -> Router2 -> Internet

其中Router1Router2是同一个物理路由器,并且虚拟机在工作站上运行。从工作站到虚拟机的数据包需要遵循以下路径:

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

相关内容