Skip to content

antony@notes:~/container$ cat "80-IT-Infra-Podman-BIND.md"

80-IT-Infra-Podman-BIND

2025-10-26· container

80-IT-Infra-Podman-BIND

1. 認識 Domain Name System

1.1. Domain Name 系統架構

image

  • Top Level Domains 就是 .edu.net.gov …等,這種 Domain 名稱,往下會延伸出第二層、第三層,全球有至少 13 台電腦在管理 Top Level Domains,會有特別的一個組織在管理。
  • 企業內部通常是從第二層的名稱開始維護,在管理這些名稱的時候,最起碼會裝兩台 DNS Server,一個叫做 Primary DNS,另一個叫做 Secondary DNS,裝這兩台 DNS 來管理 Domain Name。
  • 每一個 Domain 的名稱都會用兩台電腦,上面跑 DNS Server 來管 Domain 名稱。
  • 有兩台 DNS Server 管理 google.com 的 Domain name 是甚麼意思?
    • 所謂的管理,就是能夠會回答這個名稱裡面有哪些網路服務,以 google.com 為例,現在在 Google 公司會裝了兩台 DNS Server,主要的功能就是要來回答在網路上 Google 有提供那些網路服務,這些名稱會用名稱來表達,譬如 www.google.com 就代表 Google 的網站服務,而網站服務對應的 IP 位址,就會由 DNS Server 來做回答。
    • google.com 還會有提供哪些網路服務? Web Server, Mail Server…等。
    • 甚麼是 CDN? 在網路上的網站,只要是圖片檔這種需要消耗頻寬的,他們通通都不是放在自己的 Web Server,全部都是在網路上去租用 CDN 網站,由這個網站來把這些資料做傳送。
  • 為何要裝兩台 DNS Server?
    • 第一台叫做 Primary,第二台叫做 Secondary,第二台 DNS Server 會設定成 Read only (唯讀且不可修改),真正對外的只有 Secondary DNS,也就是說 Client 端都會去找 Secondary DNS 做查詢。
    • 那 Secondary DNS 的 Record 資料要從哪來?
      • 從 Primary DNS 來,會透過 AXFR 通訊協定同步到 Secondary DNS 的 Zone 裡面,走的是 TCP/53 Port
      • 所以要新增 www.google.com 的 DNS record,會先在 Primary DNS 裡面去新增,在同步給 Secondary DNS,最後 Client 端會去找 Secondary DNS 做查詢,去找 www.google.com 這個網站服務對應的 IP 位址。
  • DNS Client 是在 Client 裝置上的一個程式或服務,它能將人類可讀的網域名稱,例如將 www.google.com 轉換為電腦在網路上用來相互識別的數字 IP 位址。它會向 DNS Server 傳送查詢以尋找正確的 IP 位址、檢查本機快取中先前解析過的名稱,並協助您連線到網站和線上服務。
  • TCP/53 port 是給 Primary 跟 Secondary 之間做 Zone 同步用的,那 UDP/53 port 則是給 Client 查詢走的 port。

1.2. DNS - Recursive Query

image

自製 BIND Image

$ sudo mkdir -p /opt/zfs/{images/bind,bind/zone}

$ echo 'options {
  directory "/etc/bind";
  pid-file "/var/run/named/named.pid";
  forwarders { 8.8.8.8; 168.95.1.1; };
  allow-query { any; };
  allow-recursion { any; };
  allow-update { any;};  
  allow-transfer { 192.168.188.12; 192.168.188.254; };
  also-notify { 192.168.188.12; };
  listen-on { any; };
  notify yes;
  recursion yes;
};

zone "k8s" IN {
  type master;
  file "/etc/bind/zone/k8s.zone";
}; ' | envsubst | sudo tee /opt/zfs/bind/k8s.mnamed.conf
  • /opt/zfs/bind/k8s.mnamed.conf: Primary DNS 設定檔
    1. 這設定檔主要管的 k8s 這個 Zone
    2. k8s Zone 所有的網路服務 Record 會記錄在 /etc/bind/zone/k8s.zone 檔案中
    3. 如果 DNS Client