在不同的子网上设置虚拟机

在不同的子网上设置虚拟机

我在 IP XY3.7 上运行一个服务器,并且想使用 libvirt 在其上运行多个虚拟机。

我设置了一个桥接设备:

auto  eth0
iface eth0 inet manual

auto br0
iface br0 inet static
address   X.Y.3.7
broadcast X.Y.3.31
netmask   255.255.255.224
gateway   X.Y.3.1
bridge_ports none
bridge_ports eth0
...

如果使用我的三个附加 IP 中的第一个,一切都会顺利运行:XY3.9

但是,另外 2 个来自不同的子网 XY4.101 XY4.102

桥接网络方法似乎不适用于来自不同子网的访客?我有什么替代方案?

答案1

您的br0桥接仅路由您X.Y.3.0/27子网中的流量。

你应该为第二个子网创建另一个桥接接口,或者扩大你的网络掩码的大小br0

例如,您可以创建另一个网桥,br1。您需要使用255.255.255.248作为网络掩码,以便将 XY4.101 用作主机 IP;如果您使用255.255.255.252,XY4.101 将是您的默认网关。

auto br1
iface br1 inet static
address   X.Y.4.100
netmask   255.255.255.248
gateway   X.Y.4.97
broadcast X.Y.4.103
bridge_ports eth0

如果您想要将这两个子网合并为一个使用相同桥接接口的子网(也就是说,您没有在任何其他地方使用来自新的、更大的子网的任何 IP 地址),您可以简单地重新计算一个适当的网络掩码和广播地址:

auto br0
iface br0 inet static
address   X.Y.3.7
broadcast X.Y.7.255
netmask   255.255.248.0
gateway   X.Y.3.1
bridge_ports none
bridge_ports eth0

使用第二种方法的缺点是,你最终会创建一个包含 2048 个地址的非常大的子网,从 XY0.0 - XY7.255

如果您愿意对路由表进行一些修改(我不推荐这个建议,因为它会破坏 CIDR 样式表示法和路由),您可以为这样的子网创建一个更复杂的网络掩码,排除更多的 IP 地址,这通常是个坏主意,原因有很多。

相关内容