我在 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 地址,这通常是个坏主意,原因有很多。