web-dev-qa-db-ja.com

systemd-resolvedがローカルDNSサーバーを使用しないのはなぜですか?

ローカルBIND9サーバーを使用して、いくつかのローカルDNSレコードをホストしています。ローカルドメイン名をDigしようとしたときに、ローカルBIND9サーバーを使用するようにDigに明示的に指示しないと、ドメイン名を見つけることができません。

user@heimdal:~$ Dig +short heimdal.lan.se
user@heimdal:~$ Dig +short @192.168.1.7 heimdal.lan.se
192.168.1.2

Ubuntu 17.04およびsystemd-resolvedが使用されます。これは私の/ etc/resolvedの内容です

# 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

そして、systemd-resolve --statusからの出力

Global
         DNS Servers: 192.168.1.7
                      192.168.1.1
          DNSSEC NTA: 10.in-addr.arpa
                      16.172.in-addr.arpa
                      168.192.in-addr.arpa
                      17.172.in-addr.arpa
                      18.172.in-addr.arpa
                      19.172.in-addr.arpa
                      20.172.in-addr.arpa
                      21.172.in-addr.arpa
                      22.172.in-addr.arpa
                      23.172.in-addr.arpa
                      24.172.in-addr.arpa
                      25.172.in-addr.arpa
                      26.172.in-addr.arpa
                      27.172.in-addr.arpa
                      28.172.in-addr.arpa
                      29.172.in-addr.arpa
                      30.172.in-addr.arpa
                      31.172.in-addr.arpa
                      corp
                      d.f.ip6.arpa
                      home
                      internal
                      intranet
                      lan
                      local
                      private
                      test

[DNSサーバー]セクションには、メインのDNSサーバー(ローカルのBIND9インスタンス)として192.168.1.7が正しく構成されているようです。なぜ使わないのか分からない…?

13
Civing

したがって、有線eth0インターフェイスを管理対象に変更すると、この問題は解決しました。

/etc/NetworkManager/NetworkManager.confでifupdownをmanaged = trueに変更する

[ifupdown]
managed=true

次にNetworkManagerを再起動します

Sudo systemctl restart NetworkManager

この後、問題なく動作します。

これは100%ではありませんでした。私はまた、これらの変更を適用してリゾルバーを強制終了しました

Sudo service resolvconf disable-updates
Sudo update-rc.d resolvconf disable
Sudo service resolvconf stop

件名に関するこのブログ投稿に大きな感謝: https://ohthehugemanatee.org/blog/2018/01/25/my-war-on-systemd-resolved/

これがうまくいくように祈りましょう。このsystemd-resolveのビジネス全体はとても醜いです。

8
Civing

私の推測では、systemd-resolvedサービスは正しく設定されていますが、リクエストを確認することはできません。 .localドメインは mDNSを実行しているシステムによって特別に処理されます です。 avahi-daemonは、mDNS/DNS-SDサービス(別名Apple製品)の "Bonjour")を提供し、名前解決中にDNSよりも優先されるように構成できます。Ubuntuがこれを行うようです。

選択できるオプションはいくつかあります。

  1. .localドメインの名前を別の名前に変更します(おそらく.internalまたは.lan)。 DNSサーバーでいくつか変更する必要があるので、これは実際には最も簡単です。Avahiで最適に動作します。この方法をお勧めします。

  2. /etc/nsswitch.confファイルを変更するdnsエントリをmdnsエントリの前に置くことによって。

  3. Avahiの構成を変更.localを編集し、/etc/avahi/avahi-daemon.confを変更(または追加)して、mDNSドメインをdomain-name=.somethingから別の何かに変更します([server]セクションにあります)。 mDNSを使用するすべてのコンピューターでこれを行う必要があるため、それらのコンピューターは引き続き機能します。

5
ErikF

私は最近インストールされた18.04を実行して、@ Civingによって引用された最初の変更を行いました。

[ifupdown]
managed=true

次に、/ etc/resolv.confが常にstub-resolv.confを指していること、および適切なLAN DNSサーバーを含む適切なresolv.confが生成されていることに気づき、シンボリックリンクを変更しました。

/etc/resolv.conf -> /run/systemd/resolve/resolv.conf

そして、ローカルのすべてのホスト名はpingを介して解決されます。

これがどれほど長く機能し続けるかはまだわからない。

私が最初にインストールしたとき、ワイヤレスネットワークのセットアップは失敗しました。インストールが/etc/resolv.confをこの初期状態のままにしたのか疑問に思わずにはいられません。

したがって、1つの提案は、解決されたものが何を生成しているかを調べることです。あなたはすでに実用的な基盤を持っているかもしれません。

0
rhaleblian

これはコメントとしては優れているようですが、十分な評判はありません...

Civingの自己回答は、私が欲しかったもののほとんどに沿っていました。

また、dns=none[main]セクションに/etc/NetworkManager/NetworkManager.confを追加する必要があったため、次のようになります。

[main]
plugins=ifupdown,keyfile
dns=none

14.04からxubuntu 18.04に更新しました。それよりも古いLANを使用しており、長年にわたって多くの小さな調整が行われています。だから私は自分のDNSに自分のやりたいことをさせたいと思います(そうです、私はクリケットリウスの本のコピーを何年にもわたって購入してきました。

余談ですが、以前は、表示したいDNS解決情報をファイル/etc/resolvconf/resolv.conf.d/headに追加していました。

一言で言えば、ルートとして/etc/resolv.confを作成したら、次のようにします。

cat /etc/resolv.conf >> /etc/resolvconf/resolv.conf.d/head

しかし、今は/etc/resolv.confを直接編集するだけで、そのまま残ります。 systemd/resolvconfを使用している私のLANへの訪問者はSOOLです。それらは存在しません。

man 8 resolvconfを読むと役に立ちました。たくさん。私はしましたnot ifupプログラムが見つけられる場所に物を置くための指示に従います。主な理由は、アップグレード中に何が行われても無視されていたGUI全体の上部構造があるためです。それはもっと大きな問題のようです(WTF、Ubuntu?)。

だからこれは曖昧であり、私が(ずっと前に)ネットワークコントロールパネルのGUIに入力したものが、新しくアップグレードされたシステムに従っていなかったという問題がまだありますが、私が方法を理解すると、それは完全に異なる質問です聞いてください。

0
BISI