最近、私は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