「緯育 2026-0421.2」修訂間的差異

出自頂極製作所
(建立內容為「<h3>網域名稱系統 (DNS) 核心概念與實務</h3> 本次系列演講深入探討了網域名稱系統(DNS)的核心概念、演進歷史、階層架構…」的新頁面)
 
 
行 78: 行 78:
** FQDN (Fully Qualified Domain Name):完整網域名稱,由主機名稱和網域名稱組成,結尾有一個代表根的點,如 www.google.com.。
** FQDN (Fully Qualified Domain Name):完整網域名稱,由主機名稱和網域名稱組成,結尾有一個代表根的點,如 www.google.com.。
[[檔案:2026-0421-03.png|800px]]
[[檔案:2026-0421-03.png|800px]]
=== 網路拓撲與主機建置 ===
* 立體架構(拓撲圖)規劃
** 課程目標是安裝 DNS 主機(POW1)並設定其拓撲結構。
** DNS 主機需具備兩張網卡:一張對外 (VMware NAT 模式),一張對內 (VMware Host-Only 模式)。
** 對外服務設定範例:
*** tibame.com 對應 192.168.1.150
*** DNSD8.tibame.com 對應 192.168.1.100
*** www.tibame.com 對應 192.168.1.200
* DNS 主機建立流程
** 複製主機:從一個名為 LSBase 的基礎映像檔(母機)複製(clone)一台新的虛擬機。
** 新增網卡:複製完成後,在開機前,為新的 DNS 主機新增第二張網卡(Host-Only)。
** 開機與設定:開機後,修改主機名稱,並設定兩張網卡的 IP 位址。
=== DNS (BIND9) 伺服器安裝與設定 ===
* 網路介面卡設定
** 為 DNS 主機設定兩張網路卡的 IP 位址,例如:
*** 對外卡 (ens33):192.168.100.100
*** 對內卡 (ens37/38):192.168.121.[末碼]
** 使用 netplan apply 使設定生效,並用 ip a show 檢查。
** 安裝前須確保主機可獨立上網以下載軟體。
* BIND9 軟體安裝
** BIND9 (也稱為 named) 是 DNS 伺服器軟體,使用 apt install bind9 指令進行安裝。
* 設定檔結構
** 主要設定檔為 named.conf,透過 include 指令引用外部設定檔,如 named.conf.default-zones。
** 在 named.conf.default-zones 中使用 zone 語法定義所管理的正解與反解 Zone。
** 每個 Zone 都會對應一個獨立的記錄檔,透過 file 指令指定路徑。
* 正解 Zone 設定 (db.[domain-name])
** $TTL:設定預設的快取生存時間。
** SOA (Start of Authority) 記錄:定義 Zone 的權威資訊,是 Zone 檔案的起始記錄。
*** @ IN SOA ns.domain.com. service.domain.com. (...)
*** 注意:主機名稱和管理者 Email 結尾的「點」(.) 非常重要,代表此為絕對路徑 (FQDN)。
** NS (Name Server) 記錄:宣告網域的 DNS 伺服器。
** A (Address) 記錄:將主機名稱對應到 IPv4 位址(例如 www IN A 192.168.100.200)。
* 反解 Zone 設定 (db.[reverse-ip])
** 用於透過 IP 位址查詢網域名稱。
** Zone 名稱是 IP 網段的反向寫法,並加上 .in-addr.arpa 後綴(例如 100.168.192.in-addr.arpa)。
** 內部記錄使用 PTR (Pointer) 記錄,將 IP 的末碼對應回完整的網域名稱。
=== 服務管理、驗證與偵錯 ===
* 服務管理
** 修改設定檔後,需使用 systemctl restart named (或 bind9) 重新啟動服務。
** 使用 systemctl status named 檢查服務是否成功啟動。
** 使用 ss -anlpt 確認 DNS 服務是否正在監聽 Port 53。
* 偵錯 (Troubleshooting)
** 當服務啟動失敗或解析異常時,應檢查系統日誌。
** 使用 journalctl -u named 查看特定服務的完整日誌,並注意錯誤訊息的時間戳。
** 常見錯誤包括設定檔語法錯誤(如缺少分號)、Zone 檔名寫錯、FQDN 結尾缺少「點」等。
* 功能驗證
** 使用 nslookup 工具進行查詢驗證。
** 語法:nslookup [要查詢的網域名稱/IP] [DNS伺服器IP]。
** 重點:驗證內部 DNS 時,必須在指令中明確指定內部 DNS 伺服器的 IP,否則系統會向外部 DNS 查詢,導致驗證失敗。
=== DHCP 伺服器與客戶端設定 ===
* DHCP 伺服器 DNS 設定調整
** 編輯 /etc/dhcp/dhcpd.conf 設定檔。
** 在 domain-name-servers 選項中,將內部 DNS 伺服器的 IP 位址加在最前面,外部 DNS 位址置後作為備援。
** 可加入 domain-name 選項,讓客戶端自動獲取網域名稱。
** 修改後需重啟 DHCP 服務 (systemctl restart dhcpd)。
* 客戶端 DNS 驗證
** 在客戶端機器上重新取得 IP 後,使用 resolvectl status 指令可以查看當前獲取的 DNS 伺服器列表及正在使用的伺服器。
** 使用 nslookup 指令(不帶伺服器 IP)測試是否能正確解析內部域名。
=== 虛擬機管理 ===
* 系統關機順序
** 為確保系統狀態一致,應遵循正確的關機順序:
    1. 先關閉客戶端機器 (Clients)。
    2. 再關閉服務主機 (DHCP, DNS)。
    3. 最後關閉閘道器 (Gateway)。
* 建立虛擬機還原點 (Snapshot)
** 在完成階段性任務後,為所有相關的虛擬機建立還原點。
** 建議使用日期(如 20260421)作為還原點的統一命名,方便管理。
** 當後續操作出錯時,可以快速地將所有機器還原到這個已知的、穩定的狀態,節省重置時間。
[[檔案:2026-0421-04.png|800px]]

於 2026年4月21日 (二) 09:51 的最新修訂

網域名稱系統 (DNS) 核心概念與實務

本次系列演講深入探討了網域名稱系統(DNS)的核心概念、演進歷史、階層架構、查詢流程、伺服器類型、網域註冊實務以及相關資安議題。演講從早期依賴手動維護的hosts檔案,說明其如何因應網際網路擴張的瓶頸,進而催生出分散式、階層式的DNS系統。

講師詳細解釋了DNS如何將人類易於記憶的網址轉換為機器可讀的IP位址,並闡述其在簡化上網、集中管理網域、實現簡易負載平衡等方面對使用者和管理者的益處。內容涵蓋了DNS查詢的遞迴過程(從本地DNS到根、頂級域、最終到權威伺服器),並介紹了Master/Slave、Cache-only、Forwarder等不同DNS伺服器類型與運作原理。此外,講座還實際演示了如何透過註冊代理商(如中華電信、GoDaddy)查詢、比較和購買網域,以及後續設定DNS的兩種主要方式:自行架設或使用託管服務。最後,對DNS設定檔中的SOA、A、CNAME、MX、PTR等關鍵記錄類型進行了詳細解釋。

DNS 基礎概念與演進

  • DNS 的核心功能與重要性
    • DNS (Domain Name System) 的主要作用是記錄網址與IP位址的對應關係,如同網路世界的電話簿,將人類易記的網址(如 facebook.com)轉換為機器所需的IP位址。
    • 若無DNS,使用者需手動記錄並輸入複雜的IP位址,極為不便。
    • DNS是目前唯一取得公開IP的方式,其重要性與網頁服務相當,瀏覽網頁前必須先存取DNS服務。
  • DNS 的演進歷史:從 hosts 檔案到DNS服務
    • 在DNS出現前,早期網路規模較小(約數百至千台主機),使用者依賴一個名為 hosts.txt (位於 /etc/hosts) 的檔案手動記錄主機名稱與IP位址的對應關係。
    • 此檔案最初由一個名為SRI-NIC的機構維護,使用者需透過FTP下載更新。
    • 隨著網路規模擴大,人工維護成本高、檔案過大、更新流量增加等瓶頸浮現,促使社群開發出DNS這種全新的、可擴展的網路服務。
    • 儘管有了DNS,/etc/hosts 檔案至今仍存在於作業系統中並保有其相容性用途。

DNS 的階層架構與查詢流程

  • 階層式樹狀結構
    • DNS採用階層式的樹狀結構管理網域名稱,從上到下依次為:
   1. 根網域 (Root Domain):位於層級最頂端,以一個「點」(.)表示。全球共有13組根伺服器,由超過500台主機組成,只記錄各頂級網域(TLD)伺服器的位置。
   2. 頂級網域 (Top-Level Domain, TLD):如 .com, .org, .gov (一般gTLD) 及各國的 .tw, .jp (國家代碼ccTLD)。TLD伺服器只管理其下的次級網域。
   3. 次級網域 (Second-Level Domain):使用者向註冊商申請的網域,如 google.com。
   4. 主機名稱 (Hostname):在次級網域內設定的具體伺服器名稱,如 www。
  • 遞迴查詢流程
    • 當使用者電腦要存取 www.google.com.tw 時,會向其設定的本地DNS伺服器(如 8.8.8.8)發出請求。
    • 若本地DNS無快取,它會依序進行遞迴查詢:
   1. 詢問根伺服器,得到 .tw TLD伺服器的位址。
   2. 詢問 .tw 伺服器,得到 .com.tw TLD伺服器的位址。
   3. 詢問 .com.tw 伺服器,得到 google.com.tw 的權威DNS伺服器位址。
   4. 詢問 google.com.tw 的權威DNS伺服器,最終獲得 www 主機的IP位址。
    • 本地DNS伺服器將結果回傳給使用者,並將記錄快取 (Cache) 一段時間,以加速後續相同查詢。
  • 「未經授權的回答」(Non-authoritative answer)
    • 當使用nslookup等工具查詢時,若看到此訊息,表示提供答案的DNS伺服器並非該網域的「權威伺服器」,其答案是從快取中提供的。

DNS 的效益與多重用途

  • 對使用者的益處
    • 簡化上網:只需記憶網址,無需記錄複雜IP。
    • IP變更無感:網站更換伺服器IP時,使用者端不受影響,DNS會自動導向新位址。
  • 對管理者的益處
    • 集中管理:可透過一台DNS伺服器集中管理多個網域。
    • 變更簡易:增減服務或變更IP只需修改DNS記錄。
    • 內外網分流:可設定對內部和外部使用者回傳不同IP。
    • 簡易負載平衡:將使用者查詢輪流導向不同IP,分散流量,節省專用設備成本。
  • DNS 的多重用途
    • 除了網址解析,DNS還可用於網站所有權驗證(如申請HTTPS憑證時)等。
    • 濫用風險:其設計也可能被用於DDoS攻擊,如分散式反射放大攻擊 (Distributed Reflection and Amplification Attack)。

網域註冊與DNS設定實務

  • 網域名稱註冊流程
 1. 構思與查詢:先想好網域名稱,再到網域註冊機構(代理商,如中華電信、GoDaddy)網站查詢該名稱是否可用。
 2. 訂購與審查:確認可用後下訂單,並依註冊機構要求提交資格審查文件(公司需營業執照等,個人需身分證)。
 3. 繳費啟用:審查通過後完成繳費,即可獲得網域使用權,可選擇購買年限並設定是否自動續約。
  • DNS 設定的兩種方式
 1. 自行架設DNS主機:在註冊商的管理介面,選擇「自行架設」,並填入自己DNS主機的公有IP位址。一台DNS主機可管理多個網域。
 2. 購買DNS託管服務:若不自行架設,可向註冊商購買DNS託管服務。只需在管理介面中,為www, mail等主機名稱填寫對應的IP位址即可。
  • 選擇註冊商的考量
    • 除了比較價格,還應考量其DNS設定介面的易用性及DNS記錄更新的生效速度。

DNS 伺服器與記錄類型

  • DNS 伺服器分類
    • 權威伺服器 (Authoritative Server):對其管理的網域(Zone)具有最終解釋權,儲存該網域的完整記錄。
      • Master/Primary Server:主要的DNS伺服器。
      • Slave/Secondary Server:從屬伺服器,用於同步Master的資料以做備援。
    • Cache-only Server:只負責快取查詢結果以加速回應,本身不管理任何網域。Ubuntu的systemd-resolved即為一例。
    • Forwarder:將所有查詢請求轉發給上游DNS伺服器,自身通常只做簡單轉發,可能不做深度快取。家用IP分享器多為此類或Cache-only類型。
  • 常見DNS伺服器軟體
    • 市面上有Bind DNS、微軟DNS、Securio DNS等多種軟體,其中 Bind DNS 是目前最廣泛使用的。
  • 查詢類型
    • 正解 (Forward Lookup):將網域名稱轉換為IP位址。
    • 反解 (Reverse Lookup):將IP位址轉換回網域名稱。
  • Zone File 內的記錄類型
    • SOA (Start of Authority):授權起始記錄,定義網域的管理資訊與同步參數。
    • NS (Name Server):指定管理該網域的DNS伺服器主機名稱。
    • A:將主機名稱對應到IPv4位址。
    • AAAA (Quad-A):將主機名稱對應到IPv6位址。
    • CNAME (Canonical Name):別名記錄,將一個主機名稱指向另一個主機名稱(如 w3 指向 www)。
    • MX (Mail Exchanger):郵件交換記錄,指定負責接收該網域郵件的伺服器。
    • PTR (Pointer):指標記錄,用於反解查詢,將IP對應回主機名稱。
  • 重要名詞
    • Domain Name:網域名稱,如 google.com。
    • Hostname:主機名稱,如 www。
    • FQDN (Fully Qualified Domain Name):完整網域名稱,由主機名稱和網域名稱組成,結尾有一個代表根的點,如 www.google.com.。

2026-0421-03.png

網路拓撲與主機建置

  • 立體架構(拓撲圖)規劃
    • 課程目標是安裝 DNS 主機(POW1)並設定其拓撲結構。
    • DNS 主機需具備兩張網卡:一張對外 (VMware NAT 模式),一張對內 (VMware Host-Only 模式)。
    • 對外服務設定範例:
      • tibame.com 對應 192.168.1.150
      • DNSD8.tibame.com 對應 192.168.1.100
      • www.tibame.com 對應 192.168.1.200
  • DNS 主機建立流程
    • 複製主機:從一個名為 LSBase 的基礎映像檔(母機)複製(clone)一台新的虛擬機。
    • 新增網卡:複製完成後,在開機前,為新的 DNS 主機新增第二張網卡(Host-Only)。
    • 開機與設定:開機後,修改主機名稱,並設定兩張網卡的 IP 位址。

DNS (BIND9) 伺服器安裝與設定

  • 網路介面卡設定
    • 為 DNS 主機設定兩張網路卡的 IP 位址,例如:
      • 對外卡 (ens33):192.168.100.100
      • 對內卡 (ens37/38):192.168.121.[末碼]
    • 使用 netplan apply 使設定生效,並用 ip a show 檢查。
    • 安裝前須確保主機可獨立上網以下載軟體。
  • BIND9 軟體安裝
    • BIND9 (也稱為 named) 是 DNS 伺服器軟體,使用 apt install bind9 指令進行安裝。
  • 設定檔結構
    • 主要設定檔為 named.conf,透過 include 指令引用外部設定檔,如 named.conf.default-zones。
    • 在 named.conf.default-zones 中使用 zone 語法定義所管理的正解與反解 Zone。
    • 每個 Zone 都會對應一個獨立的記錄檔,透過 file 指令指定路徑。
  • 正解 Zone 設定 (db.[domain-name])
    • $TTL:設定預設的快取生存時間。
    • SOA (Start of Authority) 記錄:定義 Zone 的權威資訊,是 Zone 檔案的起始記錄。
      • @ IN SOA ns.domain.com. service.domain.com. (...)
      • 注意:主機名稱和管理者 Email 結尾的「點」(.) 非常重要,代表此為絕對路徑 (FQDN)。
    • NS (Name Server) 記錄:宣告網域的 DNS 伺服器。
    • A (Address) 記錄:將主機名稱對應到 IPv4 位址(例如 www IN A 192.168.100.200)。
  • 反解 Zone 設定 (db.[reverse-ip])
    • 用於透過 IP 位址查詢網域名稱。
    • Zone 名稱是 IP 網段的反向寫法,並加上 .in-addr.arpa 後綴(例如 100.168.192.in-addr.arpa)。
    • 內部記錄使用 PTR (Pointer) 記錄,將 IP 的末碼對應回完整的網域名稱。

服務管理、驗證與偵錯

  • 服務管理
    • 修改設定檔後,需使用 systemctl restart named (或 bind9) 重新啟動服務。
    • 使用 systemctl status named 檢查服務是否成功啟動。
    • 使用 ss -anlpt 確認 DNS 服務是否正在監聽 Port 53。
  • 偵錯 (Troubleshooting)
    • 當服務啟動失敗或解析異常時,應檢查系統日誌。
    • 使用 journalctl -u named 查看特定服務的完整日誌,並注意錯誤訊息的時間戳。
    • 常見錯誤包括設定檔語法錯誤(如缺少分號)、Zone 檔名寫錯、FQDN 結尾缺少「點」等。
  • 功能驗證
    • 使用 nslookup 工具進行查詢驗證。
    • 語法:nslookup [要查詢的網域名稱/IP] [DNS伺服器IP]。
    • 重點:驗證內部 DNS 時,必須在指令中明確指定內部 DNS 伺服器的 IP,否則系統會向外部 DNS 查詢,導致驗證失敗。

DHCP 伺服器與客戶端設定

  • DHCP 伺服器 DNS 設定調整
    • 編輯 /etc/dhcp/dhcpd.conf 設定檔。
    • 在 domain-name-servers 選項中,將內部 DNS 伺服器的 IP 位址加在最前面,外部 DNS 位址置後作為備援。
    • 可加入 domain-name 選項,讓客戶端自動獲取網域名稱。
    • 修改後需重啟 DHCP 服務 (systemctl restart dhcpd)。
  • 客戶端 DNS 驗證
    • 在客戶端機器上重新取得 IP 後,使用 resolvectl status 指令可以查看當前獲取的 DNS 伺服器列表及正在使用的伺服器。
    • 使用 nslookup 指令(不帶伺服器 IP)測試是否能正確解析內部域名。

虛擬機管理

  • 系統關機順序
    • 為確保系統狀態一致,應遵循正確的關機順序:
   1. 先關閉客戶端機器 (Clients)。
   2. 再關閉服務主機 (DHCP, DNS)。
   3. 最後關閉閘道器 (Gateway)。
  • 建立虛擬機還原點 (Snapshot)
    • 在完成階段性任務後,為所有相關的虛擬機建立還原點。
    • 建議使用日期(如 20260421)作為還原點的統一命名,方便管理。
    • 當後續操作出錯時,可以快速地將所有機器還原到這個已知的、穩定的狀態,節省重置時間。

2026-0421-04.png