Libvirt 有一个定义的网络,用作dnsmasq
DHCP/DNS 服务器。但这dnsmasq
是一个单独的实例(配置在/var/lib/libvirt/dnsmasq/default.conf
),它创建了额外的dnsmasq
进程。我已经使用我自己的全局/系统实例一段时间了dnsmasq
,我想将它与 libvirt 虚拟机一起使用。但看起来这并不是一件容易实现的任务。
现在,我通过删除以下 ( virsh net-edit default
) 禁用了默认网络的 DNS 和 DHCP:
<dhcp>
<range start='192.168.122.2' end='192.168.122.254'/>
</dhcp>
并添加以下内容:
<dns enable="no"/>
这当然使 libvrt 停止创建额外的 dnsmasq 进程,但是应该将什么添加到系统/etc/dnsmasq.conf
配置文件中,以便虚拟机通过 DHCP 获得 IP 地址并能够使用 DNS 名称访问网络?
答案1
我已经设法解决了它。
基本上,问题出在默认网络上——不应该使用它,或者应该更改它。我刚刚创建了另一个网络(在 中/etc/libvirt/qemu/networks/host-bridge.xml
),内容如下:
<network>
<name>host-bridge</name>
<forward mode="bridge"/>
<bridge name="virbr0"/>
</network>
然后,在虚拟机中,我将它们使用的网络更改为新创建的网络。
桥也是virbr0
使用以下文件创建的/etc/network/interfaces
:
auto virbr0
iface virbr0 inet static
bridge_bridgeprio 20
address 192.168.122.1
netmask 255.255.255.0
bridge_ports none
bridge_stp on
bridge_waitport 5
dns-nameservers 127.0.0.1
dns-search libvirt
看起来效果很好,但我必须稍微尝试一下,看看它是否真的按照我想要的方式工作。