我已经为主机配置了 DNS 设置(admin.example-preprod.foobar.it
带有 IP 100.100.100.100
),但它并不能从我尝试的每个服务器解析(对于某些服务器可以)。
例如,我所在的服务器使用以下 3 个 DNS 服务器:
foobar@server:~$ cat /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 200.200.200.1
nameserver 200.200.200.2
nameserver 200.200.200.3
dig
适用于所有情况。
第一的:
foobar@server:~$ dig admin.example-preprod.foobar.it @200.200.200.1
; <<>> DiG 9.9.5-3ubuntu0.7-Ubuntu <<>> admin.example-preprod.foobar.it @200.200.200.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6540
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 2
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;admin.example-preprod.foobar.it. IN A
;; ANSWER SECTION:
admin.example-preprod.foobar.it. 86400 IN A 100.100.100.100
;; AUTHORITY SECTION:
foobar.it. 86400 IN NS qwert.foobar.it.
foobar.it. 86400 IN NS ns0.xname.org.
foobar.it. 86400 IN NS ns1.xname.org.
;; ADDITIONAL SECTION:
qwert.foobar.it. 86400 IN A 200.200.200.1
;; Query time: 46 msec
;; SERVER: 200.200.200.1#53(200.200.200.1)
;; WHEN: Fri Nov 04 10:35:46 EET 2016
;; MSG SIZE rcvd: 156
第二:
foobar@server:~$ dig admin.example-preprod.foobar.it @200.200.200.2
; <<>> DiG 9.9.5-3ubuntu0.7-Ubuntu <<>> admin.example-preprod.foobar.it @200.200.200.2
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 40127
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;admin.example-preprod.foobar.it. IN A
;; AUTHORITY SECTION:
foobar.it. 85817 IN SOA qwert.foobar.it. webmaster.foobar.it. 2016092901 10800 900 1814400 10800
;; Query time: 3 msec
;; SERVER: 200.200.200.2#53(200.200.200.2)
;; WHEN: Fri Nov 04 10:36:05 EET 2016
;; MSG SIZE rcvd: 111
第三:
foobar@server:~$ dig admin.example-preprod.foobar.it @200.200.200.3
; <<>> DiG 9.9.5-3ubuntu0.7-Ubuntu <<>> admin.example-preprod.foobar.it @200.200.200.3
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2392
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;admin.example-preprod.foobar.it. IN A
;; ANSWER SECTION:
admin.example-preprod.foobar.it. 86400 IN A 100.100.100.100
;; AUTHORITY SECTION:
foobar.it. 86400 IN NS qwert.foobar.it.
foobar.it. 86400 IN NS ns1.xname.org.
foobar.it. 86400 IN NS ns0.xname.org.
;; ADDITIONAL SECTION:
qwert.foobar.it. 81845 IN A 200.200.200.1
;; Query time: 2309 msec
;; SERVER: 200.200.200.3#53(200.200.200.3)
;; WHEN: Fri Nov 04 10:35:56 EET 2016
;; MSG SIZE rcvd: 156
但是当我尝试 ping 时,它给了我unknown host
:
foobar@server:~$ ping admin.example-preprod.foobar.it
ping: unknown host admin.example-preprod.foobar.it
这是怎么可能的?我应该从哪里着手解决这个问题?
答案1
dig 并不适用于所有情况 - 您的第二个名称服务器(200.200.200.2
在您的示例中)没有解析记录。
Linux 解析器默认在 resolv.conf 中的条目之间进行随机化,我猜您的 ping 碰到了失败的解析器。
答案2
目前还不清楚原因,但注释掉所有内容似乎/private/etc/hosts
可以解决 dig 可以工作但 ping 不工作的情况(dig 不查看主机但 ping 会查看)
答案3
就我而言,我忘记了我在 /private/etc/hosts 中创建了一个条目,需要将其删除。我一直试图访问我的 LAN 服务器上的一个域,但后来我在云 VM 上设置了同一个域。
答案4
在我的 Debian 11 上,由于启用了 mDNS,我遇到了类似的 xxx.local 域名问题。mDNS 处理对 .local 区域的所有请求,但在我的例子中失败了。
为了禁用 mDNS,我修改了我的 /etc/nsswitch.conf,如下所示:
#hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname
hosts: files dns myhostname