Моя конфигурация dnsmasq сломалась после обновления с 16.04 до Ubuntu 18.04.
- systemd-resolved включен и работает
- dnsmasq включен и работает
Любой DNS-запрос к внешнему миру будет зависать на 30 секунд, прежде чем будет успешным. Запросы к моим локальным хостам (anything.mylocal) будут успешными немедленно.
Если я остановлю dnsmasq (т.е. service dnsmasq stop
), то все DNS-запросы во внешний мир будут работать немедленно (но .mylocal, конечно, нет).
В: /etc/dnsmasq.conf
listen-address=127.0.0.1
address=/.mylocal/127.0.0.1
В: /etc/NetworkManager/NetworkManager.conf
[main]
...
# dns=dnsmasq
...
Раскомментирование строки dns= предотвратит ЛЮБЫЕ DNS-запросы.
В: /etc/systemd/resolved.conf
[Resolve]
#DNS=
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#Cache=yes
#DNSStubListener=no
В: /etc/resolv.conf
Этот файл представляет собой ссылку на: ../run/resolvconf/resolv.conf, который содержит:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.
nameserver 127.0.0.53
В: /etc/nsswitch.conf
passwd: compat systemd
group: compat systemd
shadow: compat
hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
Одно заметное отличие от вывода systemd-resolve --status
:
- При запущенном dnsmasq первая строка в Global выглядит так:
DNS Servers: 127.0.0.1
- При остановленном dnsmasq эта строка отсутствует, глобального DNS-сервера нет, а первый полезный сервер определен в разделе Link 2, который указывает мой шлюз по умолчанию (192.168.1.1)
Любая помощь будет высоко оценена :)
решение1
После ночного сна ;-) вот что у меня получилось. Я просто вручную добавил несколько публичных upstream-серверов (1.1.1.1 — CloudFlare, 8.8.8.8 — Google)
В: /etc/dnsmasq.conf:
listen-address=127.0.0.1
address=/.mylocal/127.0.0.1
server=1.1.1.1
server=8.8.8.8
Все остальные файлы оставлены как в моем вопросе. И systemd-resolved и dnsmasq включены и работают.
Это позволяет DNS-запросам работать.
Я все еще не считаю это правильным ответом, поскольку предпочел бы использовать DNS, предоставляемый сетью, но, по крайней мере, это работает...