Estou executando dnsmasq
instalado como um NetworkManager
plugin na minha máquina Fedora 39 local. Tudo que preciso dnsmasq
é basicamente suporte para hosts
arquivos adicionais que posso organizar por tópicos.
Minhas configurações são:
/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
é um diretório com os arquivos hosts que contêm entradas que desejo "sinkhole":
0.0.0.0 1.example.com
0.0.0.0 2.example.com
...
dnsmasq
está instalado e funcionando, vejo o daemon em meus processos:
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
Também vejo nos dnsmasq
logs de depuração que os arquivos dos hosts /etc/hosts.d
também são lidos:
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)
Mas quando tento acessar domínios dos addn-hosts
arquivos hosts, eles não são resolvidos 0.0.0.0
como eu esperava. Esses arquivos hosts parecem ser ignorados.
Por outro lado, tudo o que eu adiciono ao sistema /etc/hosts
funciona conforme o esperado. Mesmo que eu tenha usado no-hosts
opções explicitamente na
dnsmasq
configuração e vejo que elas foram adicionadas à invocação do daemon.
Também vejo que dnsmasq
config é usado, porque a address=/development/127.0.0.1
linha funciona conforme o esperado:
$ ping -c 3 anything.development
PING anything.development (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.091 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.175 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.200 ms
É addn-hosts
que isso é ignorado de alguma forma.
Aqui está o meu /etc/resolv.conf
:
# Generated by NetworkManager
nameserver 127.0.0.1
options edns0 trust-ad
Anteriormente eu pensava que era isso systemd-resolved.service
que estava atrapalhando (pois anteriormente adicionou 127.0.0.53 ao meu resolv.conf
arquivo), mas agora que desabilitei o serviço:
systemctl status systemd-resolved.service
○ systemd-resolved.service - Network Name Resolution
Loaded: loaded (/usr/lib/systemd/system/systemd-resolved.service; disabled; preset: enabled)
Drop-In: /usr/lib/systemd/system/service.d
└─10-timeout-abort.conf
Active: inactive (dead)
Não tenho certeza do que há de errado com minhas configurações.