網域名稱系統 (DNS) 是您每天與之互動的網路的重要組成部分,您甚至常常沒有意識到這一點。該系統將www.example.com
等人類友善的網域轉換為192.0.2.1
等電腦用來相互通訊的 IP 位址。將 DNS 視為網際網路的電話簿,可協助您輕鬆連線至網站和服務。在本部落格中,我們將探討 DNS 是什麼、它如何運作以及為什麼它如此重要。我們也將透過範例和配置深入探討一些技術細節。
DNS 代表網域名稱系統。它是一個分層、分散的系統,用於將網域轉換為 IP 位址。 DNS 允許您使用易於記憶的網域名稱而不是複雜的數位 IP 位址,從而使網路變得用戶友好。
DNS 依層級結構組織:
根級:最頂層,包含儲存有關頂級域 (TLD) 資訊的根伺服器。
頂級網域名稱 (TLD) :包括熟悉的擴展名,如.com
、 .org
和.net
,以及特定國家/地區的 TLD,如.uk
和.jp
。
二級域名:直接位於 TLD 下的域名,例如example.com
中的example
。
子網域:其他細分,例如www.example.com
中的www
。
當您在瀏覽器中輸入 URL 時,DNS 會將該 URL 轉換為 IP 位址,以便您的電腦可以存取網站。此過程涉及多個步驟和不同類型的 DNS 伺服器。
DNS 查詢啟動:您在瀏覽器中輸入 URL,瀏覽器會將 DNS 查詢傳送至本機 DNS 解析器。
查詢遞歸解析器:本機 DNS 解析器(通常由 ISP 提供)檢查其快取中的 IP 位址。如果沒有找到,它會查詢遞歸解析器。
遞歸查詢:遞歸解析器依序查詢根伺服器、TLD 伺服器和權威 DNS 伺服器來尋找 IP 位址。
回應:找到 IP 位址後,它會返回本機 DNS 解析器,然後解析器將其發送到您的瀏覽器,從而允許存取該網站。
根名稱伺服器:DNS 轉換過程的第一站,處理 TLD 請求。
TLD 名稱伺服器:儲存有關特定 TLD 內的網域的資訊。
權威名稱伺服器:對其管理的網域的查詢提供回應。
DNS 記錄儲存有關網域名稱及其對應 IP 位址的資訊。以下是一些常見的 DNS 記錄類型:
A 記錄:將網域名稱對應到 IPv4 位址。
AAAA 記錄:將網域名稱對應到 IPv6 位址。
CNAME記錄:將一個網域對應到另一個網域(規範名稱)。
MX 記錄:指定網域的郵件伺服器。
TXT 記錄:儲存文字訊息,通常用於驗證和電子郵件安全(例如 SPF、DKIM)。
例如,以下是example.com
的一些 DNS 記錄:
example.com. 3600 IN A 93.184.216.34
example.com. 3600 IN AAAA 2606:2800:220:1:248:1893:25c8:1946
www.example.com. 3600 IN CNAME example.com.
example.com. 3600 IN MX 10 mail.example.com.
example.com. 3600 IN TXT "v=spf1 include:_spf.example.com ~all"
為您的網域設定 DNS 涉及配置 DNS 記錄並確保您的 DNS 伺服器可以正確處理查詢。
在類別 Unix 系統上,DNS 配置通常可以在/etc/named.conf
中找到(對於 BIND,一種流行的 DNS 伺服器軟體)。這是一個基本範例:
options {
directory "/var/named";
forwarders {
8.8.8.8; // Google DNS
8.8.4.4; // Google DNS
};
};
zone "example.com" IN {
type master;
file "example.com.zone";
};
zone "." IN {
type hint;
file "named.ca";
};
example.com.zone
檔案可能如下所示:
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2024010101 ; Serial
3600 ; Refresh
1800 ; Retry
1209600 ; Expire
86400 ) ; Minimum TTL
@ IN NS ns1.example.com.
@ IN NS ns2.example.com.
@ IN A 93.184.216.34
@ IN AAAA 2606:2800:220:1:248:1893:25c8:1946
www IN CNAME example.com.
mail IN MX 10 mail.example.com.
若要查詢 DNS 記錄,您可以使用dig
或nslookup
等工具。這是使用dig
範例:
dig example.com
此命令輸出如下內容:
; <<>> DiG 9.16.1-Ubuntu <<>> example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
;; QUESTION SECTION:
;example.com. IN A
;; ANSWER SECTION:
example.com. 3600 IN A 93.184.216.34
;; AUTHORITY SECTION:
example.com. 3600 IN NS ns1.example.com.
example.com. 3600 IN NS ns2.example.com.
;; ADDITIONAL SECTION:
ns1.example.com. 3600 IN A 192.0.2.1
ns2.example.com. 3600 IN A 192.0.2.2
;; Query time: 54 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Wed Jun 15 16:20:55 UTC 2024
;; MSG SIZE rcvd: 117
DNS 對於網路功能至關重要,因此成為各種攻擊的目標。主要安全考量包括:
DNS 快取中毒:攻擊者將損壞的 DNS 資料引入解析器的快取中,將流量重新導向到惡意網站。
DNSSEC :DNS 安全性擴充功能會向 DNS 資料新增加密簽名,確保資料完整性和真實性。
DDoS 攻擊:分散式阻斷服務攻擊可能會導致 DNS 伺服器的流量不堪重負,導致 DNS 解析緩慢或無法解析。
域名系統是一項重要的技術,它使網路變得易於存取且用戶友好。透過將網域轉換為 IP 位址,DNS 可以實現無縫瀏覽和通訊。了解 DNS 的工作原理、結構和配置對於 Web 開發人員、網路管理員和網路安全專業人員至關重要。
我們已經介紹了 DNS 的基礎知識,包括其層次結構、解析過程和各種記錄類型。我們也研究了 DNS 的設定和一些重要的安全注意事項。有了這些知識,您就可以更深入地研究 DNS 並將其應用到您的專案和網路中。
原文出處:https://dev.to/iaadidev/the-basics-of-dns-understanding-the-internets-directory-service-34l2