将外部 IP 桥接到 qemu 独立虚拟机

将外部 IP 桥接到 qemu 独立虚拟机

我遇到了一个非常具体的问题。为了让你了解我的情况,我将描述我的系统的整个基础架构。

我有一台 Ubuntu 主机,上面最多可以运行 4 台 Ubuntu 虚拟机。它们由 qemu(独立,无外部管理器)托管。在其中一个虚拟机上,我需要设置一个用 Java 编写的“代理”。代理连接到位于外部网络某处的控制器机器。对于每台虚拟机,我都有一个 TAP 接口。它们都桥接在主机上,以实现虚拟机之间的通信。

现在我需要做的是以某种方式将外部 IP 地址桥接到带有代理的虚拟机。我可以使用 NIC 接口地址(例如 192.168.100.4)或在本地主机(127.0.0.1)上启动代理。控制器可以看到它,但我需要使用我的主机外部 IP 地址而不是本地 IP 地址来查看它。

     |---------|     |---------|     |---------|     |---------|     
     |  VM 1   |     |  VM 2   |     |   VM 3  |     |  VM 4   |
     |  eth0   |     |  eth0   |     |   eth0  |     |  eth0   |
     |---------|     |---------|     |---------|     |---------| 
           \              \               /               /
            \              \---|    |----/               /
             \       |-------------------------|        /
              \------|   tap1 tap2 tap3 tap4   |-------/
                     |     \   |    |    /     |
                     |      \--vmnet1---/      |
                     |                         |
                     |          HOST           |            |---------|  
                     |                     em1 |------------| network |
                     |-------------------------|            |---------|

我尝试将外部地址传递给代理配置并使用 iptables 在主机上进行一些路由,但代理似乎在启动时查看了接口,并且它大喊它无法看到具有给定地址的接口。

如果您有任何想法如何做,我将非常感激您的帮助!:)

相关内容