我正在使用 libvirt,目前有一个基于 NAT 的网络设置,其中每个主机都有一个静态 IP。网络配置如下所示:
<network connections='4'>
<name>default</name>
<uuid>d5a1865e-fd35-4b15-994b-8c5f098e0b5a</uuid>
<forward mode='nat'>
<nat>
<port start='1024' end='65535'/>
</nat>
</forward>
<bridge name='virbr0' stp='on' delay='0'/>
<mac address='52:54:00:59:68:25'/>
<ip address='10.0.0.1' netmask='255.255.255.0'>
<dhcp>
<range start='10.0.0.2' end='10.0.0.254'/>
<host mac='52:54:00:18:41:51' name='host0' ip='10.0.0.2'/>
<host mac='52:54:00:0a:20:20' name='host1' ip='10.0.0.3'/>
<host mac='52:54:00:f1:05:fd' name='host2' ip='10.0.0.4'/>
<host mac='52:54:00:de:74:22' name='host3' ip='10.0.0.5'/>
</dhcp>
</ip>
</network>
但是,我想为每个虚拟机分配一个内部子网,该子网中的每个 IP 都将路由到虚拟机。往返于这些地址的唯一流量将是虚拟机。
这是否可以通过默认的 libvirt 网络来实现?如果可以,是否可以在现有网络上实现?(也就是说,不需要创建新的网络)?
答案1
如果您使用桥接接口,这是可能的,因为它就像一个非托管交换机。因此,您可以使用它在虚拟机内绑定任意数量的 IP。
例子
/etc/network/interfaces
(在主机上):
auto br0
iface br0 inet static
address 10.0.0.1/24
netmask 255.0.0.0
bridge_stp on
bridge_maxwait 0
/etc/network/interfaces
(在虚拟机上):
auto eth0
iface eth0 inet static
address 10.0.0.1/24
netmask 255.0.0.0
虚拟机配置:
<interface type='bridge'>
<mac address='xx:xx:xx:xx:xx:xx'/>
<source bridge='br0'/>
</interface>