當遇到網站無法訪問、解析記錄不生效等異常情況時,可通過以下方法先對網域名稱狀態,再對解析記錄生效情況進行排查。
使用dig/nslookup命令查詢
一般常用的命令查詢方法是dig(資訊詳細,適合調試)或nslookup(Windows 預設支援)。
判斷方法:DNS查詢返回的結果如果和您在Alibaba Cloud DNS中設定的一致,則代表解析已生效。
如果不一致,則查看緩衝時間,如果緩衝未到期,請等待緩衝到期後再進行測試。
如果緩衝到期且結果不一致,參考解析不生效問題快速排查。
dig命令
1 . 最常用的查詢命令
命令:dig 您的網域名稱(樣本:dig example.com)
$ dig example.com
; <<>> DiG 9.11.36-RedHat-9.11.36-16.0.1.al8 <<>> example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7585
;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;example.com. IN A
;; ANSWER SECTION:
example.com. 10 IN A 96.7.128.175
example.com. 10 IN A 96.7.128.198
example.com. 10 IN A 23.192.228.84
example.com. 10 IN A 23.215.0.136
example.com. 10 IN A 23.192.228.80
example.com. 10 IN A 23.215.0.138
;; Query time: 0 msec
;; WHEN: Tue Feb 18 13:31:55 CST 2025
;; MSG SIZE rcvd: 125
2 . 根據記錄類型進行查詢,比如MX,CNAME,NS,PTR等,只需將類型加在命令後面即可。
命令:dig 您的網域名稱 記錄類型(樣本:dig example.com NS)
$ dig example.com NS
; <<>> DiG 9.11.36-RedHat-9.11.36-16.0.1.al8 <<>> example.com NS
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29146
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;example.com. IN NS
;; ANSWER SECTION:
example.com. 10 IN NS b.iana-servers.net.
example.com. 10 IN NS a.iana-servers.net.
;; Query time: 0 msec
;; WHEN: Tue Feb 18 15:03:03 CST 2025
;; MSG SIZE rcvd: 93
解析未生效、或者未設定解析記錄情境的樣本(樣本:dig example.com CNAME)。
$ dig example.com cname
; <<>> DiG 9.11.36-RedHat-9.11.36-16.0.1.al8 <<>> example.com cname
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39890
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;example.com. IN CNAME
;; AUTHORITY SECTION:
example.com. 5 IN SOA ns.icann.org. noc.dns.icann.org. 2025011545 7200 3600 1209600 3600
;; Query time: 143 msec
;; WHEN: Tue Feb 18 13:50:18 CST 2025
;; MSG SIZE rcvd: 94
3 . 指定網域名稱DNS伺服器測試解析是否生效的命令,以下以指定Alibaba Cloud DNS伺服器和公用DNS伺服器作為查詢解析是否生效的樣本示範。
Alibaba Cloud DNS伺服器命令:dig 您的網域名稱 @ns1.alidns.com (樣本:dig example.com @ns1.alidns.com )
公用DNS伺服器命令:dig 您的網域名稱 @223.5.5.5(樣本:dig example.com @223.5.5.5 )
$ dig example.com @ns1.alidns.com
; <<>> DiG 9.11.36-RedHat-9.11.36-16.0.1.al8 <<>> example.com @ns1.alidns.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32895
;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;example.com. IN A
;; AUTHORITY SECTION:
example.com. 600 IN SOA ns1.alidns.com. hostmaster.hichina.com. 2025021713 3600 1200 86400 600
;; Query time: 5 msec
;; WHEN: Tue Feb 18 15:22:09 CST 2025
;; MSG SIZE rcvd: 112
$ dig example.com @223.5.5.5
; <<>> DiG 9.11.36-RedHat-9.11.36-16.0.1.al8 <<>> example.com @223.5.5.5
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42292
;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1408
;; QUESTION SECTION:
;example.com. IN A
;; ANSWER SECTION:
example.com. 67 IN A 96.7.128.175
example.com. 67 IN A 96.7.128.198
example.com. 67 IN A 23.215.0.136
example.com. 67 IN A 23.215.0.138
example.com. 67 IN A 23.192.228.84
example.com. 67 IN A 23.192.228.80
;; Query time: 1 msec
;; SERVER: 223.5.5.5#53(223.5.5.5)
;; WHEN: Tue Feb 18 15:16:32 CST 2025
;; MSG SIZE rcvd: 136
4 . 使用dig +trace參數,使用這個參數之後將顯示從根域逐級查詢的過程,trace查詢可以看到根域、 頂級域、以及頂層網域的權威伺服器的地址,及其各自的返回結果,這樣對於追蹤DNS解析中的問題有很大的協助。
命令:dig <您的網域名稱> +trace(樣本:dig example.com +trace)
$ dig example.com +trace
; <<>> DiG 9.11.36-RedHat-9.11.36-16.0.1.al8 <<>> example.com +trace
;; global options: +cmd
. 515049 IN NS j.root-servers.net.
. 515049 IN NS k.root-servers.net.
. 515049 IN NS a.root-servers.net.
. 515049 IN NS b.root-servers.net.
. 515049 IN NS c.root-servers.net.
. 515049 IN NS d.root-servers.net.
. 515049 IN NS e.root-servers.net.
. 515049 IN NS f.root-servers.net.
. 515049 IN NS g.root-servers.net.
. 515049 IN NS h.root-servers.net.
. 515049 IN NS i.root-servers.net.
. 515049 IN NS l.root-servers.net.
. 515049 IN NS m.root-servers.net.
;; Received 819 bytes from 100.100.2.136#53(100.100.2.136) in 1 ms
com. 172800 IN NS e.gtld-servers.net.
com. 172800 IN NS b.gtld-servers.net.
com. 172800 IN NS j.gtld-servers.net.
com. 172800 IN NS m.gtld-servers.net.
com. 172800 IN NS i.gtld-servers.net.
com. 172800 IN NS f.gtld-servers.net.
com. 172800 IN NS a.gtld-servers.net.
com. 172800 IN NS g.gtld-servers.net.
com. 172800 IN NS h.gtld-servers.net.
com. 172800 IN NS c.gtld-servers.net.
com. 172800 IN NS d.gtld-servers.net.
com. 172800 IN NS l.gtld-servers.net.
com. 172800 IN NS k.gtld-servers.net.
;; Received 839 bytes from 198.41.0.4#53(a.root-servers.net) in 2 ms
example.com. 172800 IN NS a.iana-servers.net.
example.com. 172800 IN NS b.iana-servers.net.
;; Received 326 bytes from 192.26.92.30#53(c.gtld-servers.net) in 2 ms
example.com. 86400 IN A 96.7.128.175
example.com. 86400 IN A 96.7.128.198
example.com. 86400 IN A 23.192.228.84
example.com. 86400 IN A 23.215.0.136
example.com. 86400 IN A 23.192.228.80
example.com. 86400 IN A 23.215.0.138
;; Received 134 bytes from 199.43.135.53#53(a.iana-servers.net) in 143 ms
5 . 擷取 DNS 出口 IP,通過查詢特殊網域名稱返回用戶端出口 IP(即本地 DNS 伺服器對外的公網 IP),確認 NAT 或代理後的真實請求源地址(影響 CDN 調度)。
命令:dig +short TXT whoami.ds.akahelp.net
$ dig +short TXT whoami.ds.akahelp.net
"ns"
"47.xxx.xxx.14"
6 . 查詢網域名稱使用的網域名稱DNS伺服器。
命令:dig ns 您的網域名稱(這裡輸入主網域名稱即可)
$ dig ns example.com
; <<>> DiG 9.11.36-RedHat-9.11.36-16.0.1.al8 <<>> ns example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58283
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;example.com. IN NS
;; ANSWER SECTION:
example.com. 10 IN NS a.iana-servers.net.
example.com. 10 IN NS b.iana-servers.net.
;; Query time: 5 msec
;; SERVER:
;; WHEN: Tue Feb 18 16:09:33 CST 2025
;; MSG SIZE rcvd: 93
7 . 可通過指定客戶機IP,查詢權威DNS返回的解析地址,來判斷智能解析調度的精準度。
命令:dig @權威DNS伺服器 網域名稱 +subnet=指定客戶機IP(樣本:dig @ns1.alidns.com example.com +subnet=10.10.10.10)
$ dig @ns1.alidns.com example.com +subnet=10.10.10.10
; <<>> DiG 9.11.36-RedHat-9.11.36-16.0.1.al8 <<>> @ns1.alidns.com example.com +subnet=10.10.10.10
; (9 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60880
;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; CLIENT-SUBNET: 10.10.10.10/32/24
;; QUESTION SECTION:
;example.com. IN A
;; AUTHORITY SECTION:
example.com. 600 IN SOA ns1.alidns.com. hostmaster.hichina.com. 2024120417 3600 1200 86400 600
;; Query time: 0 msec
;; SERVER:
;; WHEN: Tue Feb 18 16:19:41 CST 2025
;; MSG SIZE rcvd: 124
nslookup命令
1 . 查看本地DNS解析結果。
命令:nslookup <您的網域名稱>(樣本:nslookup example.com)
$ nslookup example.com
Server: xxx
Address: xxx#53
Non-authoritative answer:
Name: example.com
Address: 23.192.228.84
Name: example.com
Address: 23.215.0.136
Name: example.com
Address: 23.192.228.80
Name: example.com
Address: 23.215.0.138
Name: example.com
Address: 96.7.128.175
Name: example.com
Address: 96.7.128.198
Name: example.com
Address: 2600:1408:ec00:36::1736:7f31
Name: example.com
Address: 2600:1408:ec00:36::1736:7f24
Name: example.com
Address: 2600:1406:bc00:53::b81e:94ce
Name: example.com
Address: 2600:1406:bc00:53::b81e:94c8
Name: example.com
Address: 2600:1406:3a00:21::173e:2e66
Name: example.com
Address: 2600:1406:3a00:21::173e:2e65
2 . 指定公用DNS,查詢解析生效情況。
命令:nslookup 您的網域名稱 公用DNS(以雲解析公用DNS伺服器為樣本:nslookup example.com 223.5.5.5)
$ nslookup example.com 223.5.5.5
Server: 223.5.5.5
Address: 223.5.5.5#53
Non-authoritative answer:
Name: example.com
Address: 23.192.228.84
Name: example.com
Address: 23.215.0.138
Name: example.com
Address: 23.215.0.136
Name: example.com
Address: 23.192.228.80
Name: example.com
Address: 96.7.128.175
Name: example.com
Address: 96.7.128.198
Name: example.com
Address: 2600:1406:3a00:21::173e:2e65
Name: example.com
Address: 2600:1406:bc00:53::b81e:94ce
Name: example.com
Address: 2600:1408:ec00:36::1736:7f24
Name: example.com
Address: 2600:1406:3a00:21::173e:2e66
Name: example.com
Address: 2600:1406:bc00:53::b81e:94c8
Name: example.com
Address: 2600:1408:ec00:36::1736:7f31
3 . 根據記錄類型進行查詢,比如MX,CNAME,NS,PTR等
命令:nslookup -type=記錄類型 你的網域名稱(樣本:nslookup -type=NS example.com)
$ nslookup -type=NS example.com
Server: 100.100.2.136
Address: 100.100.2.136#53
Non-authoritative answer:
example.com nameserver = b.iana-servers.net.
example.com nameserver = a.iana-servers.net.
Authoritative answers can be found from:
4 . 查看網域名稱在指定權威伺服器上的解析結果。
命令:nslookup 您的網域名稱 權威伺服器(樣本:nslookup example.com ns1.alidns.com)
$ nslookup example.com ns1.alidns.com
Server: ns1.alidns.com
Address: 120.76.107.55#53
*** Can't find example.com: No answer