好的,我有一台专用服务器,其静态主 IP 地址为 89.200.xx.xx,它在 VirtualBox 中运行 3 台 VM(所有 Centos 6 和服务器都是如此),我还有另外 3 个 IP 想要分配给 VM(出于显而易见的原因省略了数字):
- 33.xxx.xxx.155
- 33.xxx.xxx.160
- 33.xxx.xxx.161
因此,我在 Centos 6 主机上设置了一个桥接连接,并将其配置为监听 eth0,并为其分配了 IP 地址 33.xxx.xxx.155。然后,我启动了客户操作系统,并将其静态 IP 地址配置为 33.xxx.xxx.155(这是在将 VB 配置指向桥接之后)。然后,我尝试运行“ifup eth0”,它返回“错误,其他主机已经使用地址 33.xxx.xxx.155”。好的。因此,我返回主机并删除了桥接的 IP 地址。然后,我重新启动了桥接和虚拟机,并为客户机上的 eth0 分配了 IP 地址 33.xxx.xxx.155。果然,eth0 得到了该 IP 地址,太棒了!只是我无法访问它。我在服务器上运行了 HTTPD,并且 IPtables 中正确允许了端口 80,但我看不到服务器。我甚至无法 ping 它。
任何帮助都将不胜感激,这是我的第一个桥接网络配置。
答案1
发生这种情况很可能是因为 IP 33.xxx.xxx.xxx 没有被路由到 89.xxx.xxx.xxx IP 所在的网络
换句话说:您将 33.xxx IP 放置在为 89.xxx IP 准备的网络中。互联网路由器不知道 33.xxx 在 89.xxx 网络内,因此它们无法将数据包路由到 33.xxx IP
要正确使用 33.xxx IP,您必须在为您提供这些 IP 的 ISP 内部使用它们,因为该 ISP 将正确设置网络 33.xxx,您可以在其中配置 33.xxx IP
好吧,您可以尝试使用“仅主机网络”配置 VB-GUEST 服务器,并在服务器的不同端口上运行服务,然后转到 VB_HOST 并使用 PAT(端口地址转换)进行配置,将每个 GUEST 服务映射到公共 IP 上的不同端口,以便 VB_HOST 充当 VB_GUEST 的防火墙。
请注意,对于 VB_GUEST 的所有服务,只有一个公共 IP,即 VB_HOST 的 IP,并且 PAT 允许您使用一个公共 IP 访问所有 VB_GUEST 服务。
告诉我们进展如何 - 欢呼
答案2
似乎您正在尝试将两种不同的桥接实现混合在一起。
VirtualBox 有自己的桥接实现,不依赖于任何 Linux 桥接(br0
或类似桥接)的设置。如果在客户机配置中,您定义了要连接到桥接适配器这就是实际在客户机和主机接口之间构建以太网桥所需要做的全部工作。您无需使用brctl
或其他 Linux 内核工具来定义桥。
话虽如此,您还需要以某种方式为其他静态 IP 地址提供路由。如果您的主机位于 89.200.xxx.xxx/something IP 网络上,它将不会收到 33.xxx.xxx.xxx/something IP 网络的任何 IP 数据包。
如果 33.xxx.xxx.xxx 网络确实到达您的服务器,则必须通过主机的第二个以太网接口。无论是哪种方式,都应eth1
在 33.xxx.xxx.xxx 网络中为其分配另一个(第四个)IP 地址。在 VirtualBox 客户机配置窗口的网络窗格中,您的桥接适配器需要使用该eth1
接口,然后您的客人就应该可以访问(至少如果您的eth1
接口也可以访问)。