Dnsmasq не работает после обновления до Bionic: работает, но занимает ~ 30 секунд, чтобы решить любой запрос

470
Palantir

моя конфигурация dnsmasq была повреждена после обновления до Ubuntu 18.04 с 16.04.

  • systemd-resolved включен и работает
  • dnsmasq включен и работает

Любой DNS-запрос к внешнему миру будет зависать в течение 30 секунд, прежде чем завершится успешно. Запросы к моим локальным хостам (any.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-сервер отсутствует, а первый полезный сервер определен в разделе «Ссылка 2», в котором указан мой шлюз по умолчанию (192.168.1.1).

Любая помощь очень ценится :)

1
Если resolv.conf является ссылкой, то что содержит целевой файл? grawity 5 лет назад 0
Он содержит: nameserver 127.0.0.53 (я также отредактировал ответ) Palantir 5 лет назад 0
Какие инструменты вы используете для тестирования DNS-запросов? Какие модули "hosts" включены в /etc/nsswitch.conf? grawity 5 лет назад 0
Извините, я нажал слишком быстро. Я сообщил о содержании nsswitch.conf. Что касается тестов, я просто пинг на google.com. С dnsmasq зависает на 30 секунд, без него сразу возвращается. Palantir 5 лет назад 0
Также добавлен некоторый вывод systemd-resolv --status Palantir 5 лет назад 0
Сильно подозреваю, что обе программы в конечном итоге будут настроены друг с другом в качестве вышестоящего сервера, что приведет к зацикливанию. dnsmasq получает его из resolv.conf, но я понятия не имею, что добавляет эту дополнительную запись в systemd-resolved. grawity 5 лет назад 0
Спасибо за ваше предложение ... если у вас есть какие-либо дополнительные идеи по отладке этого, пожалуйста, дайте мне знать! Palantir 5 лет назад 0

1 ответ на вопрос

0
Palantir

После ночного сна ;-) это то, что я придумал. Я просто вручную добавил несколько общедоступных серверов (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, предоставленный сетью, но по крайней мере это работает ...

Похожие вопросы