我正在尝试使用 libvirt + dsnmasq + openvswitch 创建启用了 dhcp 的桥接网络。我使用以下 XML 创建了一个 libvirt 网络:
<network connections='1'>
<name>ovs-net</name>
<uuid>fffd6fea-a753-4fca-b684-76fb24866ba3</uuid>
<forward mode='bridge'/>
<bridge name='ovsbr0'/>
<vlan>
<tag id='1298'/>
</vlan>
<virtualport type='openvswitch'/>
</network>
我可以使用此网络创建访客,例如:
<domain>
...
<interface type='network'>
<mac address='52:54:00:a6:3b:48'/>
<source network='ovs-net'/>
<model type='virtio'/>
<address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0001'/>
</interface>
</domain>
我可以在客户机上手动配置 IP 地址并发送入站/出站流量。当我编辑 ovs-net xml 以包含 IP 地址和 DHCP 配置时,它会失败,如下所示:
virsh net-edit --network ovs-net
<network connections='1'>
<name>ovs-net</name>
...
<ip address='10.20.101.121' netmask='255.255.255.0'>
<dhcp>
<range start='10.20.101.121' end='10.20.101.130'/>
<host mac='52:54:00:7a:6d:e7' name='test.com' ip='10.20.101.120'/>
</dhcp>
</ip>
</network>
error: unsupported configuration: Unsupported <ip> element in network ovs-net with forward mode='bridge'
我的网络知识有限,所以我不确定我尝试做的事情是否可行。
答案1
该模式本质上支持两类设置。托管设置基于 libvirt 自行创建的传统桥接设备,并运行 dnsmasq 以提供 DNS/DHCP 服务。非托管设置基于传统桥接、openvswitch 或 macvtap 或其他几个选项。在后一种情况下,libvirt 实际上不会自行创建任何东西 - 它只是一种将 libvirt 与外部创建的网络基础设施相关联的方式。因此,libvirt 也不会为这些运行 dnsmasq,因此它拒绝您设置 IP 地址/dhcp 范围的请求。