我在 Fedora 39 机器上dnsmasq
作为插件安装运行NetworkManager
我的配置是:
/etc/dnsmasql.conf
(默认,没有任何改变):
user=dnsmasq
group=dnsmasq
interface=lo
bind-interfaces
conf-dir=/etc/NetworkManager/dnsmasq.d,*.conf
conf-dir=/etc/dnsmasq.d,.rpmnew,.rpmsave,.rpmorig
/etc/NetworkManager/conf.d/00-use-dnsmasq.conf
[main]
dns=dnsmasq
/etc/NetworkManager/dnsmasq.d/00-add-hosts.conf
log-queries
no-hosts
addn-hosts=/etc/hosts.d
address=/development/127.0.0.1
/etc/hosts.d
是一个包含主机文件的目录,它们包括我想要“sinkhole”的域,例如:
0.0.0.0 1.example.com
0.0.0.0 2.example.com
...
从日志文件中我看到dnsmasq
配置正常并且我的addn-hosts
目录的主机文件被读取:
Dec 30 16:18:40 fedora dnsmasq[61823]: chown of PID file /run/NetworkManager/dnsmasq.pid failed: Operation not permitted
Dec 30 16:18:40 fedora dnsmasq[61823]: DBus support enabled: connected to system bus
Dec 30 16:18:40 fedora dnsmasq[61823]: warning: no upstream servers configured
Dec 30 16:18:40 fedora dnsmasq[61823]: read /etc/hosts.d/private - 10 names
Dec 30 16:18:40 fedora dnsmasq[61823]: setting upstream servers from DBus
Dec 30 16:18:40 fedora dnsmasq[61823]: using nameserver 192.168.0.1#53(via wlp2s0)
但这些主机文件没有任何效果,它们的域仍然解析为不是我期望的 0.0.0.0,而是解析为真实外部 IP 地址的域。
另一方面,当我将相同的域添加到 时/etc/hosts
,它们会按预期解析为 0.0.0.0,尽管no-hosts
选项在配置文件中显式使用并作为选项传递给 dnsmasq 守护进程:
ps aux | grep dnsmasq
dnsmasq 61161 0.4 0.0 228096 4480 ? S 16:08 0:00 /usr/sbin/dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces --pid-file=/run/NetworkManager/dnsmasq.pid --listen-address=127.0.0.1 --cache-size=400 --clear-on-reload --conf-file=/dev/null --enable-dbus=org.freedesktop.NetworkManager.dnsmasq --conf-dir=/etc/NetworkManager/dnsmasq.d
我的/etc/resolv.conf
看起来像这样:
# Generated by NetworkManager
nameserver 127.0.0.1
options edns0 trust-ad
我知道有些dnsmasq
配置没问题,例如address=/development/127.0.0.1
按预期工作。但不知何故,与主机文件相关的配置被忽略。可能是什么问题呢?