
私は Arch を実行している Rasberry Pi を持っていますが、奇妙な解決動作に遭遇しています。簡単に言うと、dig
ホストnslookup
名は解決できますcurl
が、、wget
はpacman
解決できません。 にホストを追加すると、/etc/hosts
そのホストではすべて正常に動作します。
トラブルシューティングの出力は次のとおりです。
resolv.conf
存在し、読み取り可能です:$ ls -l /etc/resolv.conf -rw-r--r-- 1 root root 19 Apr 28 10:45 /etc/resolv.conf
ネームサーバーがあります:
$ cat /etc/resolv.conf nameserver 8.8.8.8
nslookup
作品:$ nslookup google.com Server: 8.8.8.8 Address: 8.8.8.8#53 Non-authoritative answer: Name: google.com Address: 92.87.11.30 Name: google.com Address: 92.87.11.54 Name: google.com Address: 92.87.11.49 Name: google.com Address: 92.87.11.45 ...
dig
作品:$ dig google.com ; <<>> DiG 9.11.0-P3 <<>> google.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20686 ;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;google.com. IN A ;; ANSWER SECTION: google.com. 299 IN A 92.87.175.49 google.com. 299 IN A 92.87.175.50 google.com. 299 IN A 92.87.175.48 google.com. 299 IN A 92.87.175.44 google.com. 299 IN A 92.87.175.42 google.com. 299 IN A 92.87.175.41 google.com. 299 IN A 92.87.175.51 google.com. 299 IN A 92.87.175.36 google.com. 299 IN A 92.87.175.39 google.com. 299 IN A 92.87.175.45 google.com. 299 IN A 92.87.175.37 google.com. 299 IN A 92.87.175.40 google.com. 299 IN A 92.87.175.38 google.com. 299 IN A 92.87.175.47 google.com. 299 IN A 92.87.175.43 google.com. 299 IN A 92.87.175.46 ;; Query time: 40 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; WHEN: Fri Apr 28 11:37:32 EEST 2017 ;; MSG SIZE rcvd: 295
ping
次の IP の 1 つが見つかります:$ ping 92.87.175.49 PING 92.87.175.49 (92.87.175.49) 56(84) bytes of data. 64 bytes from 92.87.175.49: icmp_seq=1 ttl=54 time=3.75 ms 64 bytes from 92.87.175.49: icmp_seq=2 ttl=54 time=3.71 ms --- 92.87.175.49 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 3.711/3.734/3.758/0.065 ms
wget
失敗:$ wget https://google.com --2017-04-28 11:39:31-- https://google.com/ Loaded CA certificate '/etc/ssl/certs/ca-certificates.crt' Resolving google.com... failed: Name or service not known. wget: unable to resolve host address 'google.com'
curl
失敗:$ curl https://google.com curl: (6) Could not resolve host: google.com
何が足りないのでしょうか?!...
編集:
$ cat /etc/hosts
#
# /etc/hosts: static lookup table for host names
#
#<ip-address> <hostname.domain.org> <hostname>
127.0.0.1 localhost.localdomain localhost
::1 localhost.localdomain localhost
# End of file
$ cat /etc/nsswitch.conf
# Begin /etc/nsswitch.conf
passwd: compat mymachines systemd
group: compat mymachines systemd
shadow: compat
publickey: files
hosts: files mymachines resolve [!UNAVAIL=return] dns myhostname
networks: files
protocols: files
services: files
ethers: files
rpc: files
netgroup: files
# End /etc/nsswitch.conf
どうやら と関係があるようですsystemd-resolvd
。 を停止するかresolve [!UNAVAIL=return]
から削除すると/etc/nsswitch.conf
、すべてのアプリで の解決が正常に機能しますが、 を再度起動するかそのままにしておくと、 &/etc/nsswitch.conf
でのみ の解決が機能します。nslookup
dig
答え1
archlinuxarm のアップデート後に同様の問題が発生しました。一部のサイトは動作しますが、ほとんどのサイトは利用できず、pacman はアップデートできません。私の場合、問題はシステム リゾルバの dnssec です。コンソールから実行することで検出できる場合があります。
resolvectl query archlinuxarm.org (または他の利用できないサイト)
答えは: ... DNSSEC検証に失敗しました: 無効
私の場合は、/etc/systemd/resolved.confにDNSSEC=falseを追加して再起動すると解決しました。