Pet*_*ard 0 domain-name-system dig
我一直在试图找出为什么 PHPgetmxrr()
和checkdnsrr()
方法无法成功返回我使用的许多流浪虚拟机中的工作域。
在进一步研究时,我尝试使用简单的dig
命令,但我只得到了A
记录的 ANSWER 。其他任何东西都不会返回任何东西。
例如,这里是查询的“正确” ANSWER 部分,ANY
显示示例域(来自 AWS 托管服务器)存在的所有记录。您可以看到它们至少NS
是TXT
、A
和MX
记录:
Debian AWS 虚拟机:
$ dig reiss.com ANY
; <<>> DiG 9.9.5-9+deb8u6-Debian <<>> reiss.com ANY
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65366
;; flags: qr rd ra; QUERY: 1, ANSWER: 20, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;reiss.com. IN ANY
;; ANSWER SECTION:
reiss.com. 55 IN NS ns2.dnsmadeeasy.com.
reiss.com. 55 IN NS ns3.dnsmadeeasy.com.
reiss.com. 55 IN NS ns4.dnsmadeeasy.com.
reiss.com. 55 IN NS ns0.dnsmadeeasy.com.
reiss.com. 55 IN NS ns1.dnsmadeeasy.com.
reiss.com. 55 IN MX 1 reiss-com.mail.protection.outlook.com.
reiss.com. 55 IN TXT "v=spf1 ip4:212.49.201.210 ip4:80.168.187.225 ip4:109.68.12.42 ip4:79.125.20.120 ip4:46.51.172.2 ip4:46.51.172.4 include:spf.protection.outlook.com include:spf.mandrillapp.com -all"
reiss.com. 55 IN TXT "loaderio=44b80a8be72962eccbd8ad01b6bfcac7"
reiss.com. 55 IN TXT "google-site-verification=vrc2bvxpw2quwligK1dYuIFG6SLPp6PsOj3FlbNKmmo"
reiss.com. 55 IN TXT "globalsign-domain-verification=DxtJ51OaIp87_OgmKu-iPxmFMN4i0CvhJtymIzHDyK"
reiss.com. 55 IN TXT "vzjt+g3yB76l1eAihRfinxKPdAJvcxO5AAXUVdOlnqDRjHA8l+fHdBKsUp+mrKeCB2GTaX4GCUpFo5PoYNvTgw=="
reiss.com. 55 IN SOA ns0.dnsmadeeasy.com. dns.dnsmadeeasy.com. 2008025750 43200 3600 1209600 180
reiss.com. 55 IN A 52.85.142.187
reiss.com. 55 IN A 52.85.142.218
reiss.com. 55 IN A 52.85.142.227
reiss.com. 55 IN A 52.85.142.253
reiss.com. 55 IN A 52.85.142.33
reiss.com. 55 IN A 52.85.142.79
reiss.com. 55 IN A 52.85.142.108
reiss.com. 55 IN A 52.85.142.145
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Feb 18 12:48:12 UTC 2017
;; MSG SIZE rcvd: 872
Run Code Online (Sandbox Code Playgroud)
虚拟机(Centos 7):
虽然查看我的 Vagrant VM 上的单个请求,但我得到:
$ dig reiss.com A
; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.2 <<>> reiss.com ANY
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32964
;; flags: qr rd ra; QUERY: 1, ANSWER: 8, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;reiss.com. IN ANY
;; ANSWER SECTION:
reiss.com. 3600 IN A 52.85.142.79
reiss.com. 3600 IN A 52.85.142.218
reiss.com. 3600 IN A 52.85.142.227
reiss.com. 3600 IN A 52.85.142.253
reiss.com. 3600 IN A 52.85.142.145
reiss.com. 3600 IN A 52.85.142.33
reiss.com. 3600 IN A 52.85.142.108
reiss.com. 3600 IN A 52.85.142.187
;; Query time: 1 msec
;; SERVER: 10.0.2.3#53(10.0.2.3)
;; WHEN: Sat Feb 18 12:48:24 GMT 2017
;; MSG SIZE rcvd: 155
Run Code Online (Sandbox Code Playgroud)
但是任何其他类型的记录都不返回任何内容:
$ dig reiss.com MX
; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.2 <<>> reiss.com MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOTIMP, id: 2267
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;reiss.com. IN MX
;; Query time: 0 msec
;; SERVER: 10.0.2.3#53(10.0.2.3)
;; WHEN: Sat Feb 18 14:52:15 GMT 2017
;; MSG SIZE rcvd: 38
$ dig reiss.com TXT
; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.2 <<>> reiss.com TXT
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOTIMP, id: 24668
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;reiss.com. IN TXT
;; Query time: 0 msec
;; SERVER: 10.0.2.3#53(10.0.2.3)
;; WHEN: Sat Feb 18 14:53:36 GMT 2017
;; MSG SIZE rcvd: 38
Run Code Online (Sandbox Code Playgroud)
这些命令在 AWS 服务器以及我的本地 Mac OSX 主机上都可以正常工作,但它似乎在我的 Vagrant/Virtualbox VM 中失败了。
这个问题也影响了 PHP,所以我认为这与 dig 命令没有任何关系。
有任何想法吗?
ANY
工作方式是接收查询的服务器应该返回它对该名称(无论类型)的记录。
这意味着当指向缓存递归服务器时,它通常只返回缓存中已有的任何内容(有效行为)。
即,ANY
对于实际生产使用有限,但可能与故障排除等相关。