我有一个旧的 Ubuntu 16.04 (LTS) 安装,今天注意到,ping 和 curl 被告知(由 libc,我假设),任何未知主机的 IP 与本地主机的 IP 相同(例如“nslookup $(</etc/hostname)")。
“nslookup”和“dig”正确报告“NXDOMAIN”。
中/etc/nsswitch.conf
,我有
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/hosts
看起来像这样:
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.mydomain.net
(与实际值不同)
/etc/resolv.conf
看起来像:
# 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
curl https://undefinedhost
今天打印的时候我完全糊涂了
curl: (51) SSL: certificate subject name (host1.mydomain.net) does not match target host name 'undefinedhost'
只有当我看到ping undefinedhost
我开始理解的输出时,似乎发生了什么:
$ 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
最后,dig
也按预期运行:
$ 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
任何人都可以阐明这可能出错的地方吗?
解释是存在一个隐含的主机名查找域搜索列表以及我在本机所在的本地域下配置的通配符子域,例如 mydomain.net。
引用
man resolv.conf
:我有一个本地绑定服务器正在运行,并且我的域已注册并处于活动状态。我的
/etc/bind/local/db.mydomain.net
样子是这样的:因此,这种行为是完全正确和预期的。我只是感到困惑。:-)