📌 本文详细记录了在 centos环境下搭建主从 DNS 服务器的完整过程,实现高可用域名解析服务。适合运维工程师和网络管理员参考。
📖 目录
-
环境准备
-
主 DNS 服务器配置
-
从 DNS 服务器配置
-
客户端 DNS 配置
-
测试与验证
-
故障排除
🎯 环境准备
网络拓扑结构
10.0.0.0/24 网段 ├── Server1 (主 DNS): 10.0.0.101 ├── Server2 (从 DNS): 10.0.0.102 ├── Server3 (Web服务器): 10.0.0.103 └── Desktop (客户端): 10.0.0.104
系统要求
-
centos
-
所有服务器需配置静态 IP
-
主机名已正确设置
-
关闭 SELinux 或配置合适策略(生产环境建议配置)
-
防火墙开放相应端口
🖥️ 主 DNS 服务器配置 (Server1)
1. 安装 BIND 软件包
bash
# 更新系统并安装 BIND sudo dnf install bind bind-utils -y
2. 配置主文件 /etc/named.conf
bash
sudo nano /etc/named.conf
修改以下关键配置:
conf
options { listen-on port 53 { any; }; listen-on-v6 port 53 { none; }; # 禁用 IPv6 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 { localhost; 10.0.0.0/24; }; # 允许区域传输的从服务器 IP allow-transfer { 10.0.0.102; }; # 递归查询设置 recursion yes; # 转发器(可选,指向网关或公共DNS) forwarders { 8.8.8.8; 8.8.4.4; }; # DNS 安全扩展 dnssec-enable yes; dnssec-validation yes; # 响应策略区域(可选) response-policy { zone "rpz.local"; }; }; # 正向解析区域 zone "lab.org" IN { type master; file "dbf"; # 正向解析文件 allow-update { none; }; allow-transfer { 10.0.0.102; }; notify yes; # 主服务器更新时通知从服务器 }; # 反向解析区域 zone "0.0.10.in-addr.arpa" IN { type master; file "dbr"; # 反向解析文件 allow-update { none; }; allow-transfer { 10.0.0.102; }; notify yes; }; # 根域名服务器提示 zone "." IN { type hint; file "named.ca"; };3. 创建正向解析区域文件
bash
sudo nano /var/named/dbf区域文件内容:
zone
$TTL 86400 ; 1 day 默认TTL值 @ IN SOA server1.lab.org. admin.lab.org. ( 2024052701 ; Serial - 格式: YYYYMMDDNN 86400 ; Refresh - 24小时 3600 ; Retry - 1小时 604800 ; Expire - 7天 10800 ; Minimum TTL - 3小时 ) ; 名称服务器记录 IN NS server1.lab.org. IN NS server2.lab.org. ; 邮件交换记录(可选) IN MX 10 mail.lab.org. ; A记录 - 主机地址 server1 IN A 10.0.0.101 server2 IN A 10.0.0.102 server3 IN A 10.0.0.103 desktop IN A 10.0.0.104 ; 别名记录(CNAME) www IN CNAME server3.lab.org. mail IN CNAME server1.lab.org. ftp IN CNAME server2.lab.org.
4. 创建反向解析区域文件
bash
sudo nano /var/named/dbr
$TTL 86400
@ IN SOA server1.lab.org. admin.lab.org. (
2024052701
86400
3600
604800
10800
)
; 名称服务器
IN NS server1.lab.org.
IN NS server2.lab.org.
; PTR记录 - 反向解析
101 IN PTR server1.lab.org.
102 IN PTR server2.lab.org.
103 IN PTR server3.lab.org.
104 IN PTR desktop.lab.org.
5. 设置文件权限
bash
# 修改文件所有者和权限 sudo chown named:named /var/named/dbf /var/named/dbr sudo chmod 640 /var/named/dbf /var/named/dbr # 检查配置文件语法 sudo named-checkconf /etc/named.conf sudo named-checkzone lab.org /var/named/dbf sudo named-checkzone 0.0.10.in-addr.arpa /var/named/dbr
6. 配置防火墙
bash
# 开放 DNS 端口 sudo firewall-cmd --permanent --add-service=dns sudo firewall-cmd --reload # 验证端口开放 sudo firewall-cmd --list-all | grep dns
7. 启动并启用服务
bash
# 启动 BIND 服务 sudo systemctl start named sudo systemctl enable named sudo systemctl status named # 设置开机自启 sudo systemctl enable named
🔄 从 DNS 服务器配置 (Server2)
1. 安装 BIND
bash
sudo dnf install bind bind-utils -y
2. 配置从服务器
bash
sudo nano /etc/named.conf
修改配置如下:
conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { none; };
directory "/var/named";
allow-query { localhost; 10.0.0.0/24; };
recursion yes;
allow-transfer { none; }; # 从服务器不允许区域传输
};
# 正向解析区域(从区域)
zone "lab.org" IN {
type slave;
file "slaves/dbf.slave";
masters { 10.0.0.101; };
allow-notify { 10.0.0.101; };
};
# 反向解析区域(从区域)
zone "0.0.10.in-addr.arpa" IN {
type slave;
file "slaves/dbr.slave";
masters { 10.0.0.101; };
allow-notify { 10.0.0.101; };
};
3. 创建 slaves 目录
bash
sudo mkdir -p /var/named/slaves sudo chown named:named /var/named/slaves sudo chmod 770 /var/named/slaves
4. 检查配置并启动服务
bash
# 检查配置文件 sudo named-checkconf /etc/named.conf # 配置防火墙 sudo firewall-cmd --permanent --add-service=dns sudo firewall-cmd --reload # 启动服务 sudo systemctl start named sudo systemctl enable named sudo systemctl status named
🎯 总结
通过以上步骤,您已经成功搭建了高可用的主从 DNS 服务器架构。主要优势:
-
高可用性:主从架构确保 DNS 服务不间断
-
负载分担:查询请求可在两台服务器间分配
-
数据一致性:自动区域同步保证数据一致
-
易于管理:只需在主服务器修改记录
780

被折叠的 条评论
为什么被折叠?



