Dnsmasq が Bionic にアップグレード後に壊れる: 動作するが、クエリを解決するのに約 30 秒かかる

Dnsmasq が Bionic にアップグレード後に壊れる: 動作するが、クエリを解決するのに約 30 秒かかる

Ubuntu 16.04 から 18.04 にアップグレードした後、dnsmasq 構成が壊れてしまいました。

  • 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 サーバーは存在せず、最初の有用なサーバーはリンク 2 セクションで定義され、デフォルト ゲートウェイ (192.168.1.1) が指定されます。

どのような助けでも大歓迎です :)

答え1

一晩寝て ;-) これが私が思いついたものです。 いくつかのパブリック アップストリーム サーバーを手動で追加しました (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 を使用することを好むため、これが正しい答えであるとはまだ考えていませんが、少なくとも機能します...

関連情報