コンピュータとラップトップがあり、どちらもDNSサーバーとして127.0.0.53を実行しています。 1台のコンピュータが現在DNSサーバーで正常に実行されていますが、ラップトップに「ドメイン名解決が一時的に失敗しました」というエラーメッセージが表示されます。 /etc/resolv.conf の DNS サーバーを 8.8.8.8 に変更すると、再び機能し始めました。
DNSサーバーが1台のコンピュータでしか機能しないのはなぜですか?
編集:libnss_dns.so.2がインストールされていることを確認しました(Ubuntuを使用しています)。
私はこのガイドに従いました https://manpages.debian.org/bullseye/libnss-resolve/libnss_resolve.so.2.8.en.html 私のnsswitch.confを修正しました(コメントなし)
passwd: files systemd
group: files systemd
shadow: files
gshadow: files
hosts: files mdns4_minimal [NOTFOUND=return] dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
ホスト行を次に変更しました。
passwd: files systemd
group: files systemd
shadow: files
gshadow: files
hosts: mymachines resolve [!UNAVAIL=return] files
myhostname dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
ただし、google.com ping: google.com: Name or service notknown ping を行うとエラーが発生します。
Edit2:私のラップトップでresolvctlを実行しました。
Global
Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: stub
Link 2 (wlo1)
Current Scopes: none
Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Link 3 (ipv6leakintrf0)
Current Scopes: DNS
Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: ::1
DNS Servers: ::1
DNS Domain: ~.
Edit3: 一部のアップデート後は自動的に正常に動作します。
答え1
127.0.0.53は実際のDNSサーバーではなく、systemd-resolved
Linuxシステムの新しいDNSリゾルバー(=クライアント)によって実装された以前のバージョンと互換性のあるインターフェースです。
これを使用する意図された方法は、libnss_resolve.so.2
ライブラリを介することです。つまり、resolve
ファイル行に入れる代わりに入れますdns
。これにより、ほとんどのプログラムがhosts:
/etc/nsswitch.conf
完全に無視する/etc/resolv.conf
Unixソケットを使用して直接systemd-resolved
接続します/run/systemd/resolve/io.systemd.Resolve
。
Cライブラリの標準の名前解決サービスに依存しないように、特別にコーディングされている一部のプログラムは、使用する/etc/resolv.conf
DNSサーバーを見つけるために自分自身で読み取ります。これらのプログラムをキャッチするには、systemd-resolved
127.0.0.53でDNSリゾルバサーバー/プロキシとして機能し、そうするときに自動的に行を挿入するのが一般的ですnameserver 127.0.0.53
。/etc/resolv.conf
ただし、この機能が不要な場合はオフにできます。
あなた(またはあなたのディストリビューション)がインストール/使用段階を見逃していてlibnss_resolve.so.2
まだ/etc/nsswitch.conf
古典的なバージョンを持っているdns
場合、hosts:
すべてのDNSアクセスは127.0.0.53より前のバージョンとの互換性インターフェイスを介して行われ、それほど効率的ではありません。
使用している場合は、systemd-resolved
このresolvectl
コマンドを使用してシステムが使用している実際のDNSサーバーを確認します。
両方のコンピュータの実際のDNSサーバー設定が異なるようですが、/etc/resolv.conf
どのコンピュータだけを見ていますか?もう使用時の注意点systemd-resolved
。
答え2
すでに指摘したように、コンピュータで新しいシステム化されたLinuxを実行している場合は、systemd-resolved
問題を引き起こす可能性がある「明るい未来」(暗闇を理解してください)の別のジャンクウェアかもしれません。
DNS検証をハイジャックするために複数のハッカーに頼っていますが、これは停止問題レベルの問題であるため、実際には解決できません。
また、意図せずに複数のネットワークチェックネームスペースを難読化し、それを新しいネームスペースに縮小してビジネスをマージすることも、マージしないこともあります。
次を選択する必要があります。
- 正しく設定する方法を学び、
systemd-resolved
ベータバグテスターになり、すべてのバグを見つけて見てみましょう。 /etc/resolv.conf
常に期待されるため、これを無効にし、古い不審な管理スタイルを使用します。