我正在运行一台专用服务器(位于德国 Hetzner),它运行 VirtualBox,以便在多个虚拟客户机上虚拟化多项服务。这些客户机应该
- 相互通信(例如,虚拟网络服务器必须访问虚拟数据库服务器);
- 可以从专用服务器访问(例如,SSH 访问);并且
- 通过专用服务器访问互联网(例如,下载安全更新)
目前,这是通过在专用服务器上安装主机专用适配器 vboxnet0 和在每个客户机上安装两个虚拟接口来实现的。其中,虚拟适配器 eth0 连接到 vboxnet0(以实现 (1) 和 (2)),虚拟适配器 eth1 连接到 VirtualBox 的 NAT(以实现 (3))。
通过 eth0,来宾可以访问 DHCP 和 DNS 服务器,它们都运行在专用服务器上(在那里,绑定到 vboxnet0)。这样我就可以分配自定义 IP 地址和名称。通过 eth1,VirtualBox 推送适当的路由,使每个来宾都可以访问互联网(通过专用服务器上的 eth0)。
这种使用两个虚拟适配器的设置经常会导致问题,至少会使很多事情变得复杂。例如,专用服务器上有 OpenVPN,它允许通过互联网访问虚拟机;此外,还有 Shorwall,它控制互联网、专用服务器和各个虚拟机之间的传入和传出网络流量。更不用说通过 PXE 自动安装服务器了……因此,我更希望每个客户机上只有一个虚拟适配器,用于传入和传出连接。据我所知,人们基本上会为此目的使用桥接接口。
现在出现了一个问题:桥接器将使用专用服务器上的哪个接口?主机服务器上的 eth0 不是一个选项,因为提供商禁止这样做。虚拟接口 eth0:0 没有任何意义,因为桥接器始终使用物理接口(在本例中为 eth0)。
是否可以在每个虚拟机中创建一个“悬空”的桥接接口?这样,专用服务器上就没有补充了?我该如何在主机服务器上设置路由?
请注意,主机/专用服务器只有一个网络适配器(eth0),连接到提供商的网络。
问候,
马丁