【问题标题】:multiple port forwarding via multiple interfaces within virtual machine通过虚拟机内的多个接口进行多端口转发
【发布时间】:2015-09-28 04:31:21
【问题描述】:

我正在尝试创建一个虚拟测试环境。出于测试的目的,我将发送 udp 数据包到在虚拟机内运行的应用程序。我想在应用程序接收到数据包时控制它的源 IP。

我尝试了不同的 vagrant 配置:

config.vm.network "forwarded_port", guest: 1111, host: 11111, adapter: 2

config.vm.network "forwarded_port", guest: 1111, host: 11111, host_ip: "x.x.x.x"

但没有成功。

在我看来,这不能仅靠 Vagrant 解决。不幸的是,我对 iptables/route 完全不熟悉。

让我更详细地解释一下这个问题: 理想的情况是能够从虚拟环境本身发送它 - 应用程序正在侦听某个端口 P。然后测试脚本将数据发送到 host1:port1 并且它通过一个接口到达,应用程序将其源 ip 视为 1.1.1.1,并且当脚本向 host2:port2 发送数据包时,应用程序将其视为来自 2.2.2.2。

将它保存在虚拟环境中很好,因为我可以在 QA 本地机器和构建服务器之间只使用该图像,因为它将包含所有内容。

如果这种配置是不可能的(虽然我不明白为什么),配置虚拟盒有 2 个(或更多)端口通过不同的接口转发,以便向它们发送数据包会导致不同的源地址。

【问题讨论】:

    标签: routing vagrant iptables netcat


    【解决方案1】:

    这部分取决于您要生成的唯一源地址的数量。仅使用 vagrant,您可以将测试环境中的多台机器配置为私有网络的一部分,并选择一台作为应用程序服务器,将其他机器选为客户端。这样做的好处是,您不仅可以为每个客户端配置不同的 IP 地址。

    但是,如果您想生成超出您可以运行的 VM 客户端数量的范围广泛的源 IP 地址,您可以查看 ifconfig 以创建一个 vlan 并在您的主机或虚拟接口上测试 DNS测试环境中的单个 VM。

    【讨论】:

    • 2-3 就足够了。可以提供一个配置示例吗?
    最近更新 更多