私はRaspberry Pi 4でArch Linux ARMを実行しています。現在、ドメイン確認の問題があります。 「ユーザースペース」アプリケーション(ping、Webブラウザなどを含む)はホストにアクセスできますが、ホストを確認できません。https://1.1.1.1クロムから。ドリルビットはうまく機能しますが(?!)はgetent hosts
機能しません。私は(編集を通して)オーバーライドして/etc/resolv.conf
使ってみましたが、役に立ちませんでした。どんなアイデアがありますか? (期待通りに動作します)resolvconf -u
/etc/resolvconf.conf
/etc/hosts
$ cat /etc/resolv.conf
domain lan
nameserver 1.1.1.1
$ drill unix.stackexchange.org
;; ->>HEADER<<- opcode: QUERY:, rcode: NXDOMAIN, id: 45971
;; flags qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;; unix.stackexchange.org. IN A
;; ANSWER SECTION:
unix.stackexchange.org. 14400 IN CNAME stackexchange.org.
stackexchange.org. 14400 IN A 67.227.226.240
;; AUTHORITY SECTION:
;; ADDITIONAL SECTION:
;; Query time: 111 msec
;; SERVER: 192.168.42.129
;; WHEN: Tue Nov 26 13:09:11 2019
;; MSG SIZE rcvd: 70
$ grep hosts /etc/nsswitch.conf
hosts: files mymachines myhostname resolve [!UNAVAIL=return] dns
答え1
最新のブラウザはDNS-over-HTTPS(クロム、Firefoxブラウザ)。したがって、基本オペレーティングシステムとは完全に独立して有効なホスト名解決を持つことができます。
つまり、nsswitch.conf
既存のDNSベースの検索の前に試みることを指定します。resolve
要求されたデータがない場合、または一時エラーコードが報告された場合は、検索結果の失敗として扱われます。実行して、どのDNSサーバーが使用されているかを確認できます。systemd-resolved
resolv.conf
dns
systemd-resolved
systemd-resolved
resolvectl status
このコマンドはデフォルトのネームサーバーをdrill
明示的に探します。それ以外の場合は、タスク全体をスキップし、すべてのタスクを独自に実行します。resolv.conf
nsswitch.conf
(に指定すると、リダイレクトが許可されているプログラムは明示的に無視され、systemd-resolved
他のネットワークインターフェイス用に異なるDNSサーバーを設定できるためです。)resolv.conf
drill
systemd-resolved
nameserver 127.0.0.53
resolv.conf
systemd-resolved
だから何が起こっているのか私の説明は次のとおりです。
- Chromium: DNS-over-HTTPS を使用しているため動作します。
drill
:スキップしてnsswitch.conf
直接見るために機能しますresolv.conf
。- デフォルトでは、その他すべて: で指定されたメカニズムを使用して
nsswitch.conf
クエリを終了します。systemd-resolved
何らかの理由で機能しないDNS設定があるようです(要求がファイアウォールによってブロックされているか、非協力的なDNSサーバーと通信している可能性がありますか?)。 DNS情報を取得できません。resolv.conf
これらのプログラムは、「永続失敗」結果コードを返そうとする場合にのみ指定されたDNSサーバーを使用します。systemd-resolved
現時点では、このようなことは起こりません。
mymachines
おそらくnsswitch.conf
以下を指しているようです。このホスト名解決モジュールローカルVMやその他の項目を自動的に確認しますsystemd-machined
。ローカルではない名前の解決には影響しません。
同様にmyhostname
、以下を参照できます。このホスト名解決モジュールこれにより、ネットワーク接続がなくても、現在のローカルホスト名、名前、およびlocalhost
名前localhost.localdomain
が常に解決されます。_gateway