Linux 要查詢 DNS 問題, 本機有幾個檔案要看, 如下述:
- /etc/hosts
- /etc/resolv.conf
- 再來就是往 Global DNS 來追蹤~
使用 Dig 來查詢 DNS 設定問題
往 Global DNS 來追蹤, 可以先從 NS、鄰近機器查詢, ex:
- $ dig NS 168.95.1.1 example.com # 查看 NS 是否有指到正確的 DNS Server
- $ dig example.com www.example.com # 查看機器是否可以抓的到其他機器的 DNS recode
- 以上完成後還是有問題, 可以再來往下追蹤, 這邊記錄幾個常用的追蹤方式.
dig 常用的幾個基本參數, USAGE 如下述:
dig [@global-server] ...
-x dot-notation (shortcut for reverse lookups)
+[no]short (Disable everything except short form of answer)
+[no]trace (Trace delegation down from root)
常用 dig debug 的幾個參數說明
- @global-server: 指定 DNS server 要用哪台
- -x: 反向查詢
- +trace: 查看 DN 從最上層 root 往下跑, 到底經過哪些節點
- +short: 簡短輸出 (寫程式 追蹤方便使用)
dig 使用操作範例
- $ dig @ns1.google.com www.google.com # 指定 NS1 的 dns server
- $ dig google.com @8.8.4.4 # 指定 dns server (結果省略, 請自行測試)
- $ dig +trace google.com # 追蹤看經過哪些節點 (結果省略, 請自行測試)
- $ dig +trace google.com @8.8.8.8 # 指定 dns server + 追蹤路徑經過 (結果省略, 請自行測試)
- $ dig +short google.com @8.8.8.8 # 只看簡短結果, 如下述:
74.125.31.100
74.125.31.138
74.125.31.101
74.125.31.102
74.125.31.139
74.125.31.113 - $ dig +trace +short google.com @8.8.8.8
NS i.root-servers.net. from server 8.8.8.8 in 18 ms.
NS a.root-servers.net. from server 8.8.8.8 in 18 ms.
NS h.root-servers.net. from server 8.8.8.8 in 18 ms.
NS m.root-servers.net. from server 8.8.8.8 in 18 ms.
NS k.root-servers.net. from server 8.8.8.8 in 18 ms.
NS l.root-servers.net. from server 8.8.8.8 in 18 ms.
NS j.root-servers.net. from server 8.8.8.8 in 18 ms.
NS e.root-servers.net. from server 8.8.8.8 in 18 ms.
NS f.root-servers.net. from server 8.8.8.8 in 18 ms.
NS g.root-servers.net. from server 8.8.8.8 in 18 ms.
NS c.root-servers.net. from server 8.8.8.8 in 18 ms.
NS b.root-servers.net. from server 8.8.8.8 in 18 ms.
NS d.root-servers.net. from server 8.8.8.8 in 18 ms.
A 173.194.72.101 from server 216.239.32.10 in 18 ms.
A 173.194.72.113 from server 216.239.32.10 in 18 ms.
A 173.194.72.139 from server 216.239.32.10 in 18 ms.
A 173.194.72.102 from server 216.239.32.10 in 18 ms.
A 173.194.72.138 from server 216.239.32.10 in 18 ms.
A 173.194.72.100 from server 216.239.32.10 in 18 ms. - $ dig -x 173.194.72.100 # 反查
100.72.194.173.in-addr.arpa. 1879 IN PTR tf-in-f100.1e100.net. - $ dig -x 173.194.72.100 +short
tf-in-f100.1e100.net.
Dig 查詢整個網段的反解
要查整個網段的反解, 可以使用下述程式(下述取自此網頁: DiG HOWTO):
#!/bin/bash NET=18.7.22 for n in $(seq 1 254); do ADDR=${NET}.${n} echo -e "${ADDR}\t$(dig -x ${ADDR} +short)" done
Dig 於 IPv6 的使用
Dig 於 IPv6 的使用, 可以參考下述幾篇文章:
- SixXS - IPv6 Deployment & Tunnel Broker :: Forum - ipv6gate.sixxs.net works for anyone?
- Google Public DNS Servers Launched
- Frequently Asked Questions - Public DNS — Google Developers
在此記錄幾個會用到的指令:
- $ dig aaaa http://www.l.google.com @8.8.8.8 +short
- $ dig aaaa http://www.l.google.com @168.95.1.1 +short
- $ dig aaaa http://www.l.google.com @2001:470:20::2 +short
- $ dig aaaa ipv6.google.com @8.8.8.8 +short
- $ dig aaaa cyberciti.biz @8.8.8.8 +short
- $ dig @8.8.8.8 www.google.com.sixxs.org aaaa
- $ dig @8.8.8.8 www.google.com.sixxs.org a # IPv4