一、什麼是DNS?
DNS(Domain Name System)即域名系統,是英文 Domain Name System 的縮寫。顧名思義,它主要是用來管理域名和 IP 地址之間的映射關係,使得用戶可以通過便捷易記的域名來訪問互聯網上的網站或其他網路服務。
在 DNS 中,每一個域名都屬於一個層次結構,並被劃分成若干個單元。通常我們所使用的域名是最頂層的 DNS 單元,例如以 .com、.cn、.org等結尾的域名。
二、DNS查詢方式
在 Linux 中,可以通過多種方式進行 DNS 域名解析,主要包括以下幾種:
1. 使用dig命令
dig 命令是最常見的 Linux 命令之一,它可以快速進行 DNS 查詢。通過簡單的命令格式,可以查詢一個或多個域名對應的 IP 地址。
dig example.com ; <> DiG 9.9.4-RedHat-9.9.4-61.el7_5.1 <> example.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25399 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;example.com. IN A ;; ANSWER SECTION: example.com. 3598 IN A 93.184.216.34 ;; Query time: 294 msec ;; SERVER: 172.17.0.2#53(172.17.0.2) ;; WHEN: Tue Jul 28 08:45:04 UTC 2020 ;; MSG SIZE rcvd: 55
通過上述例子,我們可以看到查詢 example.com 這個域名對應的 IP 地址結果為:93.184.216.34。
2. 使用host命令
host 命令是 Linux 中另一個進行 DNS 查詢的命令,使用方法和 dig 相似。
host example.com example.com has address 93.184.216.34 example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946 example.com mail is handled by 0 .
從上面的輸出結果可以看出,該域名不僅對應一個 IPv4 地址,還對應一個 IPv6 地址。
3. 使用nslookup命令
nslookup 命令也是 Linux 中常用的進行 DNS 查詢的命令。
nslookup example.com Server: 172.17.0.2 Address: 172.17.0.2#53 Non-authoritative answer: Name: example.com Address: 93.184.216.34
從上面的輸出結果可以看出,使用 nslookup 命令同樣可以快速查詢到域名所對應的 IP 地址。
三、使用DNS緩存加速查詢
DNS 查詢的效率不僅僅取決於本地 DNS 伺服器的速度,還受到是否啟用 DNS 緩存的影響。 因為很多 DNS 查詢都是重複性的操作,為了加快 DNS 解析的速度,Linux 系統具備了 DNS 緩存機制。
在 Linux 下,通過設置 /etc/nsswitch.conf 文件中的 hosts 條目為「files dns」或「files mdns」 來開啟 DNS 緩存功能,加快查詢速度:
# /etc/nsswitch.conf hosts: files dns
如果已經開啟了 DNS 緩存,可以通過以下指令清除 DNS 緩存,以獲得最新的 DNS 解析結果:
systemd-resolve --flush-caches
四、使用DNS Trace追蹤域名解析
DNS Trace 一種網路工具,可以用於追蹤 DNS 域名解析的全過程。通過 DNS Trace,我們可以了解某個域名需要經過哪些 DNS 伺服器進行解析以及中間結果與延遲情況。
使用 dig 命令配合 DNS Trace 工具,可以進行 DNS 域名解析的全過程追蹤。
dig google.com +trace ; <> DiG 9.10.3-P4-Ubuntu <> google.com +trace ;; global options: +cmd . 342503 IN NS a.root-servers.net. . 342503 IN NS b.root-servers.net. . 342503 IN NS c.root-servers.net. . 342503 IN NS d.root-servers.net. . 342503 IN NS e.root-servers.net. . 342503 IN NS f.root-servers.net. . 342503 IN NS g.root-servers.net. . 342503 IN NS h.root-servers.net. . 342503 IN NS i.root-servers.net. . 342503 IN NS j.root-servers.net. . 342503 IN NS k.root-servers.net. . 342503 IN NS l.root-servers.net. . 342503 IN NS m.root-servers.net. ;; Received 239 bytes from 10.0.2.3#53(10.0.2.3) in 29 ms com. 172800 IN NS h.gtld-servers.net. com. 172800 IN NS d.gtld-servers.net. com. 172800 IN NS i.gtld-servers.net. com. 172800 IN NS k.gtld-servers.net. com. 172800 IN NS l.gtld-servers.net. com. 172800 IN NS f.gtld-servers.net. com. 172800 IN NS g.gtld-servers.net. com. 172800 IN NS c.gtld-servers.net. com. 172800 IN NS b.gtld-servers.net. com. 172800 IN NS e.gtld-servers.net. com. 172800 IN NS a.gtld-servers.net. com. 172800 IN NS j.gtld-servers.net. com. 172800 IN NS m.gtld-servers.net. ;; Received 489 bytes from 192.5.5.241#53(192.5.5.241) in 139 ms google.com. 172800 IN NS ns2.google.com. google.com. 172800 IN NS ns1.google.com. google.com. 172800 IN NS ns3.google.com. google.com. 172800 IN NS ns4.google.com. ;; Received 163 bytes from 192.26.92.30#53(192.26.92.30) in 16 ms google.com. 300 IN A 216.58.220.238 ;; Received 44 bytes from 216.239.36.10#53(216.239.36.10) in 7 ms
從上述結果可以看出,本次 DNS 查詢過程中經過了 4 個 DNS 伺服器實現解析,耗時約 191 毫秒。
五、DNS查詢結果解析
在進行 DNS 域名解析時,我們得到的結果往往是一些關鍵的記錄類型,下面給出了一些常見 DNS 記錄類型的含義和作用:
1. A 記錄
A 記錄(Address Record),通常也稱為主機記錄或 IP 記錄。用於將 IPv4 地址與主機名關聯起來。例如:域名foo.com對應的 IPv4地址為 192.168.1.1。
2. AAAA 記錄
AAAA 記錄(IPv6 Address Record),和 A 記錄類似,但用於將 IPv6 地址與主機名關聯起來。例如:域名foo.com對應的 IPv6地址為 2a00:1450:400e:805::200e。
3. CNAME 記錄
CNAME 記錄(Canonical Name Record),用於將一個 DNS 域名解析成另一個域名。例如:域名 www.baidu.com 指向的實際上是 www.a.shifen.com,是通過 CNAME 記錄實現的。
4. MX 記錄
MX 記錄(Mail Exchange Record),表示郵件交換記錄。通過 MX 記錄,可以告訴郵件伺服器如何向該域名的郵件伺服器傳遞郵件。
結語
DNS 查詢命令的快速查詢和正確使用可以有效地縮短網路訪問時間。同時,通過 DNS 追蹤和其他的命令,可以深入了解 DNS 的工作原理和網路訪問的整體機制,有助於進一步優化網路架構和提高網路安全性。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/155032.html