nsswitch.conf変更後にランダムなDNSエラーが発生する

nsswitch.conf変更後にランダムなDNSエラーが発生する

最近、私はEPSON L3150プリンタ用のドライバをインストールしましたが、ほぼ同時にいくつかのアプリケーション(ssh、nextcloud-client)で奇妙な(任意の)DNS名前解決エラーが発生し始めました。このエラーは、サービスを再起動しなければ解決できませんでしたNetworkManager

systemctl restart NetworkManager

たとえば、

$ ssh example.mydomain
ssh: Could not resolve hostname example.mydomain: Name or service not known

別の例は、何も返さずにコード2で終了するgetentです。

$ getent hosts example.mydomain

$ echo $?
2

しかし、nslookupはうまく動作します。

$ nslookup example.mydomain
...
Name:   example.mydomain
Address: 192.168.0.10

私はそれを私のファイルに絞り込み、nsswitch.confそれを変更したことについて私のプリンタインストーラを非難しました。私はnsswitch.conf.bak嘘を見つけましたnsswitch.conf。それはプリンタドライバをインストールすると同時に作成されましたdnf install epson/*.rpm

ファイルのホスト行に次の変更があります。

-hosts:      files dns myhostname
+hosts:      files myhostname mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns

それでは、質問は「新しい」構成がランダムに失敗するのはなぜですか?どうやって予防できますか?新しいファイルが自動的に作成されるように見えるので、元のファイルを復元するだけでは解決策にはならないと思います。上部には次のように表示されます。

2022年2月12日土曜日18:53:06にauthselectによって作成されました

ドライバをアンインストールすることも解決策ではありません。

編集する:

犯人はsystemd-resolved。私のネットワーク設定はNetworkManagerによって管理され、2つのDNSが設定されています。

$ nmcli con show my-lan
...
ipv4.dns 192.168.0.1 8.8.8.8

コンピュータがスリープモードから復帰するたびに、NetworkManagerが2番目のDNSに戻るようです。

$ systemd-resolve --status
...
Link 2 (enp39s0)
    Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
         Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 8.8.8.8
       DNS Servers: 192.168.0.1 8.8.8.8
        DNS Domain: mydomain

したがって、systemd-resolve example.mydomain失敗します(8.8.8.8が私のドメインを確認できないため)。

クエリ:解析呼び出しに失敗しました: 'example.mydomain'が見つかりません。

これがNetworkManagerのバグだと思いますか?

答え1

mdns4_minimal [NOTFOUND=return]EpsonプリンタにはマルチキャストDNSが必要です。

resolve [!UNAVAIL=return]名前解決を有効にするsystemd-resolved(参照https://www.freedesktop.org/software/systemd/man/nss-resolve.html)。

コマンドがsystemctl status systemd-resolved返されると、そのコマンドを行からUnit systemd-resolved.service could not be found.安全に削除できます。その後、解析は正常に戻ります。resolve [!UNAVAIL=return]hosts

関連情報