我想在我的 Debian 10 系统上有一个 dockerized Dnsmasq 网络范围的 DNS 服务器解决方案。
问题:
sudo lsof -i -P -n | grep LIST
dnsmasq ... TCP 192.168.122.1:53 (LISTEN)
已经有一个 dnsmasq 实例侦听本地 DNS 服务。但我想使用 docker 实例(请不要要求我使用 dnsmasq 中的构建,因为 docker 有一个 Web 界面)。
在 docker-instance dnsmasq Web 界面中,我得到:
dnsmasq: failed to create listening socket for port 53: Address in use
很明显,我必须禁用 dnsmasq。我扔了这个线程:
https://mmoapi.com/post/how-to-disable-dnsmasq-port-53-listening-on-ubuntu-18-04
- 环境
"DNSStublistener=no"
- 有效,但重新启动后我遇到了同样的问题。
显然还有一些我不明白的事情。这个问题与此主题相关:
如何正确禁用端口 53 上的 systemd-resolved 以避免与 Ubuntu 20.04 中的 dnsmasq 发生冲突......?
- 同样的问题,但没有真正无压力的解决方案,所以我认为,在后网络管理器解决方案时代有一个关于它的新线程是值得的。
那么,我怎样才能禁用它,而又不会遇到新问题呢?
编辑:找到解决方案如何限制 dnsmasq 只监听一个接口?
说
- 添加
-bind interface
到配置以使用多个 DNS 服务器(尽管手册页这么说)
但
- 有问题,bc 没有
/etc/dnsmasq.conf
文件吗?
答案1
我曾经帮助自己。
- 我找到了该进程并使用以下命令查找conf文件的目的地经典系统管理员:如何从 Linux 命令行终止进程教程:
ps aux | grep dnsmasq
- 我编辑了文件(例如
nano /var/lib/libvirt/dnsmasq/default.conf
)并将绑定动态更改为绑定接口
重启看看是否有帮助。
这不是因为该
default.conf
文件是自动生成的,所以它说我必须使用virsh net-edit default
编辑默认设置。出现另一个问题是因为,在 libvirt v5.6 之前,不允许传递自定义选项。但在那之后我使用了一个特殊的 xml 短语:
<dnsmasq:options> <dnsmasq:option value="foo=bar"/> <dnsmasq:option value="cname=*.foo.example.com,master.example.com"/> </dnsmasq:options>
解决方案被发现于使用 libvrt 自定义 dnsmasq (或自定义选项)?;我尝试过,但没有成功。
我最终在 XML 文件中禁用了默认网络的 DNS,使用
<dns> <dns enable="no"/> </dns>
按照手册页上的说明进行操作(您在 tmp XML 中编写并且安全,当一切正常时,它会将其视为新常态)。
该端口的 DNS 被禁用,我的第二个 dnsmasq 服务器启动并正在运行。
答案2
我也遇到了同样的问题,除了我想设置 pihole,而 libvirt 参与 dnsmasq 却遇到了很大的障碍。 NASNewbie2k18 的答案的两个附录:
- 通过添加
<dns> <dns enable="no"/> </dns>
到 default.conf 文件virsh net-edit default
没有帮助,因为保存后更改将从文件中删除。相反,我必须添加<dns enable='no'/>
, 所以没有额外的<dns>
标签。这在重新启动后释放了一个绑定。 - 第二个绑定已打开
10.0.3.1:53
,由 完成lxc-net
。在文件中更改USE_LXC_BRIDGE
为并使用 重新启动 lxc-net 服务后,最后一个绑定被释放,我终于能够启动 pihole。false
/etc/default/lxc-net
systemctl restart