为什么dnsmasq开始运行并占用53,导致我的unbound无法启动

为什么dnsmasq开始运行并占用53,导致我的unbound无法启动

拱形更新。

通过 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 时,通常会默认启用此功能。

  1. 检查是否有任何自动启动的网络定义:

    virsh net-list --all
    
  2. 如果有,您可以使用 来查看内容virsh net-dumpxml。例如,如果网络定义的名称是“default”:

    virsh net-dumpxml default
    
  3. 如果它启用了 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

相关内容