域名系統(Domain Name System, DNS)是互聯網的「電話簿」,將人類易記的域名(如 example.com)轉換為機器路由所需的 IP 位址。DNS 採用分層分散式資料庫架構,全球協同運作,是網路通訊不可或缺的基礎設施。
.com、.net、.org、.edu、.gov….cn、.tw、.hk、.jp….arpa(用於反向解析)google.com、baidu.comwww.google.com、mail.google.com,最多 127 級
客戶端→本地 DNS,本地 DNS 負責完整查詢鏈路並返回最終結果。特點:客戶端只發一次請求,負擔轉移給本地 DNS。
本地 DNS→根域→TLD→權威域,每層返回下一層 NS 記錄,本地 DNS 逐層追問。特點:減輕上層伺服器負載,利用快取加速。
Client → 本地 hosts → 本地 DNS 快取 → 本地 DNS (遞迴) → 根域 (迭代) → TLD → 權威域 → 返回結果 → 快取 → Client
參考自《鳥哥的 Linux 私房菜》,區域檔關鍵符號:
$TTL:預設快取生存時間(秒)$ORIGIN:重新定義區域根域名@:代表當前區域名($ORIGIN 值).:結尾的點表示完整域名 (FQDN),避免自動附加區域後綴| 記錄類型 | 格式範例 | 說明 |
|---|---|---|
| SOA | @ IN SOA ns1 admin (2024010101 2H 10M 1W 1D) | 區域權威起始記錄,含序列號、刷新/重試/過期/最小 TTL |
| NS | @ IN NS ns1 | 授權名稱伺服器宣告,需配合 A 記錄 |
| A | www IN A 192.168.1.10 | 域名→IPv4,最常用 |
| AAAA | www IN AAAA 2001:db8::1 | 域名→IPv6 |
| PTR | 10 IN PTR www.example.com. | 反向解析,IP 反寫 + .in-addr.arpa. |
| CNAME | web IN CNAME www | 別名→規範名,便於 IP 變更維護 |
| MX | @ IN MX 10 mail | 郵件交換器,優先權數值越小越優先 |
| TXT | @ IN TXT "v=spf1 mx -all" | 文本記錄,用於 SPF、DKIM、域名驗證 |
yum install bind bind-libs bind-utils bind-chroot
# bind-utils 提供 dig、host、nslookup、nsupdate 測試工具
/etc/named.conf # 主配置檔
/etc/named.rfc1912.zones # 區域定義檔(建議獨立管理)
/etc/rndc.key # rndc 遠程控制金鑰
/var/named/ # 區域資料檔預設目錄
/var/named/chroot/ # chroot 獄環境(生產建議啟用)
options {
listen-on port 53 { 192.168.1.10; 127.0.0.1; };
directory "/var/named";
allow-query { 192.168.1.0/24; };
recursion yes;
dnssec-enable no; # 內網測試建議關閉
};
zone "." IN { type hint; file "named.ca"; };
zone "localhost" IN { type master; file "localhost.zone"; };
zone "0.0.127.in-addr.arpa" IN { type master; file "named.local"; };
dig -t NS . @a.root-servers.net > /var/named/named.ca
# /etc/named.rfc1912.zones
zone "example.com" IN {
type master;
file "example.com.zone";
allow-transfer { 192.168.1.20; }; # 僅允許指定從伺服器
};
# /var/named/example.com.zone
$TTL 86400
$ORIGIN example.com.
@ IN SOA ns1.example.com. hostmaster.example.com. (
2024010101 ; Serial
3H ; Refresh
15M ; Retry
1W ; Expire
1D ) ; Minimum
IN NS ns1
IN NS ns2
IN MX 10 mail
ns1 IN A 192.168.1.10
ns2 IN A 192.168.1.20
mail IN A 192.168.1.10
www IN A 192.168.1.100
www IN A 192.168.1.101 # 輪詢負載均衡
ftp IN A 192.168.1.100
web IN CNAME www
zone "1.168.192.in-addr.arpa" IN {
type master;
file "1.168.192.zone";
allow-transfer { 192.168.1.20; };
};
# 區域檔:以 PTR 為主,無需 MX/A/AAAA/CNAME
$TTL 86400
@ IN SOA ns1.example.com. hostmaster.example.com. ( ... )
IN NS ns1.example.com.
100 IN PTR www.example.com.
101 IN PTR www.example.com.
10 IN PTR mail.example.com.
10 IN PTR ns1.example.com.
zone "example.com" IN {
type slave;
masters { 192.168.1.10; };
file "slaves/example.com.zone";
};
zone "1.168.192.in-addr.arpa" IN {
type slave;
masters { 192.168.1.10; };
file "slaves/1.168.192.zone";
};
父區域新增 NS + A 記錄授權子域:
sub.example.com. IN NS ns1.sub.example.com.
ns1.sub.example.com. IN A 192.168.2.10
子域伺服器獨立管理 sub.example.com 區域,父域解析子域需轉發或遞迴查詢。
view "internal" {
match-clients { 192.168.1.0/24; };
zone "example.com" IN { type master; file "example.com.int.zone"; };
};
view "external" {
match-clients { any; };
zone "example.com" IN { type master; file "example.com.ext.zone"; };
};
| 指令 | 用途 |
|---|---|
named-checkconf | 檢查主配置語法 |
named-checkzone "zone" file | 檢查區域檔語法 |
rndc status | 查看服務狀態 |
rndc reload [zone] | 熱重載配置/區域 |
rndc retransfer zone | 強制觸發區域傳送 |
dig +trace @server domain | 追蹤完整解析路徑 |
dig -t axfr @server zone | 模擬全量區域傳送(檢洩) |
dig -x IP @server | 反向解析測試 |
host -t type domain [server] | 簡易查詢工具 |
allow-recursion)allow-transfer)version "None";)dnssec-validation yes;)bind-chroot)named.ca)rndc querylog)