我遇到了一个非常具体的问题。为了让你了解我的情况,我将描述我的系统的整个基础架构。
我有一台 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 在主机上进行一些路由,但代理似乎在启动时查看了接口,并且它大喊它无法看到具有给定地址的接口。
如果您有任何想法如何做,我将非常感激您的帮助!:)