Eu tenho um Rasberry Pi executando o Arch e estou encontrando um comportamento de resolução estranho. Resumindo, dig
e nslookup
podem resolver nomes de host, curl
, wget
, pacman
não. Se eu adicionar um host em /etc/hosts
, tudo funcionará bem para esse host.
Aqui está a saída de algumas soluções de problemas:
resolv.conf
existe e é legível:
$ ls -l /etc/resolv.conf
-rw-r--r-- 1 root root 19 Apr 28 10:45 /etc/resolv.conf
Eu tenho um servidor de nomes:
$ cat /etc/resolv.conf
nameserver 8.8.8.8
nslookup
funciona:
$ 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
funciona:
$ 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
Eu posso ping
de um dos IPs:
$ 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
falha:
$ 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
falha:
$ curl https://google.com
curl: (6) Could not resolve host: google.com
O que eu estou sentindo falta?! ...
Editar:
$ 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
Parece que tem algo a ver com systemd-resolvd
. Se eu pará-lo ou remover resolve [!UNAVAIL=return]
de /etc/nsswitch.conf
, a resolução funciona bem para cada aplicativo, se eu iniciá-lo novamente ou deixar /etc/nsswitch.conf
como está, a resolução funciona apenas para nslookup
& dig
.