Perché "ping undefinedhost" e "curl undefinedhost" (ad es. libc "gethostbyname") eseguono il ping / contect sull'host locale invece di fallire?

Aug 24 2020

Ho una vecchia installazione di Ubuntu 16.04 (LTS) e oggi ho notato che a ping e curl viene detto (da libc, suppongo), che l'IP di qualsiasi host sconosciuto è uguale all'IP dell'host locale (ad esempio "nslookup $(</etc/hostname)").

"nslookup" e "dig" riportano correttamente "NXDOMAIN".

In /etc/nsswitch.conf, ho

passwd:         compat
group:          compat
shadow:         compat
gshadow:        files

hosts:          files dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

/etc/hostsSomiglia a questo:

127.0.0.1 localhost.localdomain localhost

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

/etc/hostname: host1.miodominio.net

(modificato dal valore effettivo)

E /etc/resolv.confsembra:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 213.133.98.98
nameserver 213.133.99.99
nameserver 213.133.100.100

Ero totalmente confuso oggi, quando curl https://undefinedhoststampato

curl: (51) SSL: certificate subject name (host1.mydomain.net) does not match target host name 'undefinedhost'

Solo quando ho visto l'output di ping undefinedhostho iniziato a capire cosa sembra stia succedendo:

$ ping unknownhost
PING host1.mydomain.net (138.201.175.226) 56(84) bytes of data.
64 bytes from host1.mydomain.net (138.201.175.226): icmp_seq=1 ttl=63 time=0.237 ms

Infine, digsi comporta anche come previsto:

$ dig unresolvedhost @213.133.98.98
; <<>> DiG 9.10.3-P4-Ubuntu <<>> unresolvedhost @213.133.98.98
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 28972

Qualcuno può far luce su dove potrebbe andare storto?

Risposte

Patrick Sep 06 2020 at 19:48

La spiegazione è l'esistenza di un elenco di ricerca del dominio di ricerca del nome host implicito in combinazione con il sottodominio jolly che ho configurato nel dominio locale in cui si trova questa macchina, ad esempio mydomain.net.

Citando man resolv.conf:

L'elenco di ricerca è normalmente determinato dal nome di dominio locale; per impostazione predefinita, contiene solo il nome del dominio locale .

Ho un server di bind locale in esecuzione e il mio dominio è registrato e attivo. Il mio /etc/bind/local/db.mydomain.netassomiglia a questo:

...
@   IN  SOA mydomain.net. ....
...
host1   IN  A   138.201.175.226
*   IN  CNAME   host1.mydomain.net.
....

Pertanto, questo comportamento è totalmente corretto e previsto. Ero solo confuso. :-)