![为什么dnsmasq开始运行并占用53,导致我的unbound无法启动](https://linux22.com/image/197220/%E4%B8%BA%E4%BB%80%E4%B9%88dnsmasq%E5%BC%80%E5%A7%8B%E8%BF%90%E8%A1%8C%E5%B9%B6%E5%8D%A0%E7%94%A853%EF%BC%8C%E5%AF%BC%E8%87%B4%E6%88%91%E7%9A%84unbound%E6%97%A0%E6%B3%95%E5%90%AF%E5%8A%A8.png)
拱形更新。
通过 QEMU 管理器,我最近创建了一个映射到我的无线设备的 NAT 网络。该计划是为虚拟机使用无线网络,为主机使用以太网。在此之前,虚拟机和主机未绑定是正常的。
其他系统无变化。
现在,系统重新启动后,unbound 无法启动,抱怨它无法获取端口 53。通过 lsof,我看到 dnsmasq 已占用 53。即使我的虚拟网络无法在启动时启动,也会发生这种情况。
我不想更改 unbound 的端口,因为这需要重新配置其客户端。
为什么 dnsmasq 启动?
最简单、影响最小的配置更改是什么?
答案1
您是否使用 libvirt(virsh、virtmanager 等)?
一些(大多数?全部?)发行版声明了 libvirt 和 dnsmasq 之间的某种依赖关系。例如,在 Debian 上,libvirt-daemon-system
软件包推荐dnsmasq
软件包(这意味着它将在您安装 libvirt-daemon-system 时安装,除非您已禁用安装推荐软件包 - 例如Install-Recommends "False";
在 /etc/apt/apt.conf 中)。
无论如何,如果您使用 libvirt,请查看/etc/libvirt/qemu/networks/autostart
.或者,更好的是,使用virsh
命令进行检查 - 见下文。
如果其中有一个带有规则的文件/符号链接dhcp
(这几乎是在 libvirt 中定义网络的主要原因),那么 libvirt 将启动 dnsmasq 的实例来为 提供 dhcp、dns 和/或 tftp 服务虚拟机。当您安装 libvirt 时,通常会默认启用此功能。
检查是否有任何自动启动的网络定义:
virsh net-list --all
如果有,您可以使用 来查看内容
virsh net-dumpxml
。例如,如果网络定义的名称是“default”:virsh net-dumpxml default
如果它启用了 dhcp,您可以通过以下方式停止它(并阻止它在下次重新启动时自动启动):
virsh net-destroy default # stop it running NOW. virsh net-autostart --disable default # prevent it from auto-starting
PS:几年前我在我的系统上禁用了 libvirt 启动的 dnsmasq。我更喜欢跑步unbound
和ISC dhcpd
。