文章目錄
- 安裝DNS服務
- 設置配置文件
- 自定義域名解析
- 完整配置
需求是公司內網服務器無法連接外網,需要在本地搭建DNS服務,這樣物理機器遷移到內網后,通過域名解析訪問服務
DNS服務器 172.25.14.215
| ip | 域名 |
|---|---|
| 172.25.14.216 | mysql.server |
| 172.25.14.217 | redis.server |
| 172.25.14.218 | kafka.server |
安裝DNS服務
yum update -y
yum install bind bind-utils -y
設置配置文件
vim /etc/named.conf
options {listen-on port 53 { any; }; // 監聽所有IPv4接口上的53端口listen-on-v6 port 53 { ::1; }; // 監聽IPv6本地回環地址上的53端口directory "/var/named"; // 定義工作目錄,區域數據文件存放于此dump-file "/var/named/data/cache_dump.db";statistics-file "/var/named/data/named_stats.txt";memstatistics-file "/var/named/data/named_mem_stats.txt";allow-query { any; }; // 允許任何主機發送查詢請求recursion no; // 禁止遞歸查詢(如果作為權威DNS服務器)dnssec-enable yes;dnssec-validation yes;/* Path to ISC DLV key */bindkeys-file "/etc/named.iscdlv.key";managed-keys-directory "/var/named/dynamic";
};logging {channel default_debug {file "data/named.run";severity dynamic;};
};zone "." IN { // 根區配置type hint;file "named.ca";
};// 包含額外的默認配置
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
修改允許的連接為所有

# 啟動服務
systemctl start named# 設置開機自啟
systemctl enable named# 開放DNS防火墻,允許DNS流量通過
firewall-cmd --add-service=dns --permanent
firewall-cmd --reload
切換DNS前服務無法正常訪問

由于默認設置了recursion yes為yes,表示允許DNS遞歸查詢,通過172.25.14.215的DNS再次進行查詢
所以切換DNS后服務器正常訪問(這個看業務需求是否關閉DNS遞歸查詢)

自定義域名解析
vim /etc/named.conf添加server域名的解析
zone "server" IN {type master;file "/var/named/server.zone";allow-update { none; };
};
告訴BIND你有一個名為server的主區域,其區域數據文件位于/var/named/server.zone
$TTL 86400
@ IN SOA ns1.server. admin.server. (2025031301 ; 序列號3600 ; 刷新時間1800 ; 重試時間1209600 ; 過期時間86400 ) ; 最小TTL; 定義名稱服務器
@ IN NS ns1.server.; 將ns1.server.mysql指向具體的IP地址
ns1 IN A 192.168.1.10; 解析server.mysql到指定的IP地址
@ IN A 192.168.1.11; 定義其他子域或服務的A記錄
www IN A 192.168.1.12
ftp IN A 192.168.1.13; 定義郵件交換記錄(MX)
@ IN MX 10 mail.server.; 定義mail.server.mysql的A記錄
mail IN A 192.168.1.14
參數解釋
$TTL 86400:設置默認的TTL(生存時間),表示該區域中所有資源記錄在緩存中的有效期,默認為86400秒(即1天)。可以被單個記錄中的TTL覆蓋。
SOA記錄:
@ IN SOA ns1.server.mysql. admin.server.mysql. ( ... )@表示當前域(本例中是server.mysql)IN表示Internet類記錄SOA是Start of Authority的縮寫,標記了權威開始的記錄ns1.server.mysql. 是主名稱服務器的名字admin.server.mysql. 是負責該區域的管理員郵箱地址(注意,在這里使用.代替@)。- 接下來的括號內的數字分別是:
- 序列號:每次更新區域文件時應該增加這個值,以通知從服務器同步新的數據。
- 刷新時間:從服務器等待多久后再次嘗試與主服務器同步。
- 重試時間:如果同步失敗,從服務器等待多久后再進行重試。
- 過期時間:如果無法聯系上主服務器,從服務器繼續使用過期數據的時間長度。
- 最小TTL:設定該區域內所有記錄的最小TTL值。
NS記錄 :
@ IN NS ns1.server.mysql. 指定server.mysql的權威名稱服務器是ns1.server.mysql.。
A記錄:
ns1 IN A 192.168.1.10將主機名ns1映射到IP地址192.168.1.10。- 同樣地,其他A記錄將不同的主機名映射到相應的IP地址。
MX記錄:
@ IN MX 10 mail.server.mysql. 定義了郵件交換服務器,優先級為10,指向mail.server.mysql.。
完整配置
vim /etc/named.conf

vim /var/named/server.zone
$TTL 86400
@ IN SOA ns1.server. admin.server. (2025031301 ; 序列號3600 ; 刷新時間1800 ; 重試時間1209600 ; 過期時間86400 ) ; 最小TTL; 定義名稱服務器
@ IN NS ns1.server.; 將ns1.server指向具體的IP地址
ns1 IN A 172.25.14.215; 解析server到指定的IP地址
@ IN A 172.25.14.215; 定義其他子域或服務的A記錄
www IN A 172.25.14.215
mysql IN A 172.25.14.216
redis IN A 172.25.14.217
kafka IN A 172.25.14.218
