Eu tenho um servidor Linux local executando o dnsmasq para minha LAN. Tem trabalhado sem problemas nos últimos anos. Eu mantenho o sistema operacional e os pacotes atualizados regularmente. Após a atualização de rotina de ontem, estou recebendo erros de máquinas na LAN quando eles tentam resolver a maioria dos nomes de host locais. Eu suspeito que eu possa ter tido uma configuração de trabalho que estava de algum modo defeituosa, e a atualização expôs minha falha; Eu não estou encontrando relatos deste problema após a atualização, então eu suponho que tenho um erro em algum lugar.
Este é o erro que estou recebendo na maioria dos clientes:
# ping myfileserver
ping: myfileserver: Name or service not known
No entanto, se eu pingar o endereço do myfileserver, será bem-sucedido:
# ping 192.168.1.2
PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.325 ms
64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.239 ms
Aqui está o resolv.conf nos clientes:
# cat /etc/resolv.conf
# Generated by NetworkManager
search mylan
nameserver 192.168.1.1
192.168.1.1 é o endereço do meu servidor dnsmasq.
Eu posso estar esquecendo de algo óbvio, mas o drill mostra que o cliente está recebendo uma resposta do servidor dnsmasq que contém o nome do host e o endereço IP local apropriados.
# drill myfileserver
;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 40614
;; flags: qr aa rd ra ; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;; myfileserver. IN A
;; ANSWER SECTION:
myfileserver. 0 IN A 192.168.1.2
;; AUTHORITY SECTION:
;; ADDITIONAL SECTION:
;; Query time: 0 msec
;; SERVER: 192.168.1.1
;; WHEN: Wed Oct 24 00:12:18 2018
;; MSG SIZE rcvd: 41
No servidor, o systemd mostra que o processo do dnsmasq está sendo iniciado e executado normalmente:
systemctl status dnsmasq.service
dnsmasq.service - A lightweight DHCP and caching DNS server
Loaded: loaded (/usr/lib/systemd/system/dnsmasq.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2018-10-24 00:08:13 EDT
Docs: man:dnsmasq(8)
Process: 28230 ExecStartPre=/usr/bin/dnsmasq --test (code=exited, status=0/SUCCESS)
Main PID: 28231 (dnsmasq)
Tasks: 1 (limit: 4915)
Memory: 1.4M
CGroup: /system.slice/dnsmasq.service
└─28231 /usr/bin/dnsmasq -k --enable-dbus --user=dnsmasq --pid-file
Aqui está a saída do log do dnsmasq inicializando no servidor. Não há erros.
Oct 23 01:50:48 mydnsmasqd systemd[1]: Starting A lightweight DHCP and caching DNS server...
Oct 23 01:50:48 mydnsmasqd dnsmasq[768]: dnsmasq: syntax check OK.
Oct 23 01:50:48 mydnsmasqd systemd[1]: Started A lightweight DHCP and caching DNS server.
Oct 23 01:50:48 mydnsmasqd dnsmasq[772]: started, version 2.80 cachesize 5000
Oct 23 01:50:48 mydnsmasqd dnsmasq[772]: compile time options: IPv6 GNU-getopt DBus i18n IDN2 DHCP DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC loop-detect inotify du>
Oct 23 01:50:48 mydnsmasqd dnsmasq[772]: DBus support enabled: connected to system bus
Oct 23 01:50:48 mydnsmasqd dnsmasq-dhcp[772]: DHCP, IP range 192.168.10.100 -- 192.168.10.200, lease time 1d
Oct 23 01:50:48 mydnsmasqd dnsmasq[772]: using local addresses only for domain mylan
Oct 23 01:50:48 mydnsmasqd dnsmasq[772]: reading /etc/resolv-custom.conf
Oct 23 01:50:48 mydnsmasqd dnsmasq[772]: using local addresses only for domain mylan
Oct 23 01:50:48 mydnsmasqd dnsmasq[772]: using nameserver 8.8.8.8#53
Oct 23 01:50:48 mydnsmasqd dnsmasq[772]: using nameserver 8.8.4.4#53
Oct 23 01:50:48 mydnsmasqd dnsmasq[772]: read /etc/hosts - 72 addresses
Durante a solução de problemas, alterei a configuração do dnsmasq e a reiniciei. O log novamente não mostra erros no início e minhas várias alterações de configuração não tiveram impacto sobre esse problema. A configuração do dnsmasq não foi alterada quando esse problema começou. É uma configuração bajular relativamente simples, mas durante a solução de problemas eu simplifiquei para quase nada. Aqui está o que eu tenho agora (deixando de fora a parte de ligação da interface, que claramente não é relevante):
# grep -v '^#' /etc/dnsmasq.conf
resolv-file=/etc/resolv-custom.conf
dhcp-range=set:eth0,192.168.10.100, 192.168.10.200, 24h
cache-size=5000
no-negcache
conf-dir=/etc/dnsmasq.d,.bak
# cat /etc/resolv-custom.conf
search mylan
domain mylan
nameserver 8.8.8.8
nameserver 8.8.4.4
Todas as máquinas estão executando o Arch Linux, 4.18.10-arch1-1-ARCH Dnsmasq versão 2.80