CentOS虚拟机中配置DNS主从,需先安装DNS服务,然后分别配置主服务器和从服务器的相关文件及
CentOS虚拟机DNS主从配置详解
准备工作
环境要求
- 操作系统:CentOS 7或更高版本(确保两台虚拟机均为相同或兼容版本)
- 网络模式:桥接模式(确保主从服务器能互通,且客户端可访问)
- 软件包:
bind
、bindutils
、bindchroot
(提供DNS服务及安全隔离) - 关闭防火墙与SELinux(可选,但推荐):
systemctl stop firewalld # 关闭防火墙 setenforce 0 # 关闭SELinux
安装BIND服务
在主从服务器上执行:
yum install y bind bindutils bindchroot
主DNS服务器配置
修改主配置文件 /etc/named.conf
编辑文件并设置以下参数:
options { listenon port 53 { 192.168.1.10; }; # 主服务器IP listenonv6 port 53 { ::1; }; directory "/var/named"; allowquery { any; }; # 允许所有IP查询 };
关键项:
listenon
:指定监听的IP地址(改为实际主服务器IP)。allowquery
:设置为any
以允许所有客户端查询。
配置正向解析区域
编辑 /etc/named.rfc1912.zones
,添加以下内容:
zone "example.com" IN { type master; file "example.com.zone"; # 区域文件路径 allowupdate { none; }; };
区域文件示例 (/var/named/example.com.zone
):
$TTL 1D @ IN SOA @ rname.invalid. ( 2025072101 ; Serial(格式:YYYYMMDDNN) 1D ; Refresh 1H ; Retry 1W ; Expire 3H ) ; Minimum TTL NS @ A 192.168.1.10 # 主服务器IP www IN A 192.168.1.10 # www.example.com解析 ftp IN A 192.168.1.10 # ftp.example.com解析 * IN A 192.168.1.10 # 泛域名解析(如mail.example.com)
配置反向解析区域
在 /etc/named.rfc1912.zones
中添加:
zone "1.168.192.inaddr.arpa" IN { type master; file "1.168.192.zone"; # 反向区域文件 allowupdate { none; }; };
反向区域文件示例 (/var/named/1.168.192.zone
):
$TTL 1D @ IN SOA example.com. rname.invalid. ( 2025072101 1D 1H 1W 3H ) NS @ 10 IN PTR www.example.com. # 192.168.1.10的PTR记录
检查配置并启动服务
namedcheckconf # 检查主配置文件语法 namedcheckzone example.com /var/named/example.com.zone # 检查区域文件 systemctl start named # 启动DNS服务 systemctl enable named # 设置开机自启
从DNS服务器配置
修改主配置文件 /etc/named.conf
编辑文件并设置以下参数:
options { listenon port 53 { 192.168.1.20; }; # 从服务器IP listenonv6 port 53 { ::1; }; directory "/var/named"; allowquery { any; }; };
配置正向解析区域为从属模式
在 /etc/named.rfc1912.zones
中添加:
zone "example.com" IN { type slave; masters { 192.168.1.10; }; # 主服务器IP file "slaves/example.com.zone"; # 从服务器区域文件路径 allownotify { 192.168.1.10; }; # 允许主服务器通知 };
配置反向解析区域为从属模式
在 /etc/named.rfc1912.zones
中添加:
zone "1.168.192.inaddr.arpa" IN { type slave; masters { 192.168.1.10; }; file "slaves/1.168.192.zone"; allownotify { 192.168.1.10; }; };
检查配置并启动服务
namedcheckconf systemctl start named systemctl enable named
验证与测试
主从同步验证
- 在主服务器修改区域文件(例如新增记录):
echo "\@ IN MX 10 mail.example.com." >> /var/named/example.com.zone systemctl restart named # 重启服务以应用更改
- 在从服务器查看同步结果:
cat /var/named/slaves/example.com.zone # 应包含新增的MX记录
客户端测试
编辑客户端的 /etc/resolv.conf
,添加从服务器IP:
nameserver 192.168.1.20 # 从服务器IP
使用 nslookup
测试解析:
nslookup www.example.com # 应返回192.168.1.10 nslookup 192.168.1.10 # 应返回www.example.com
常见问题与解答
Q1:如何确保主从服务器之间的网络连通性?
A1:需确保以下条件:
- 主从服务器的TCP和UDP 53端口互通(使用
telnet 192.168.1.10 53
测试)。 - 防火墙允许DNS流量(如开启防火墙,需执行
firewallcmd permanent addservice=dns
)。 - 主从服务器的
/etc/resolv.conf
指向正确的DNS地址。
Q2:为什么从服务器无法同步主服务器的更新?
A2:可能原因及解决方案:
| 问题 | 原因 | 解决方案 |
||||
| 同步失败 | 主服务器未配置alsonotify
或从服务器未配置allownotify
| 在主服务器的named.conf
中添加alsonotify { 从服务器IP; }
|
| 区域文件错误 | 主服务器区域文件语法错误 | 使用namedcheckzone
检查并修复 |
| 网络阻塞 | 主从服务器间TCP/UDP 53端口不通 | 检查防火墙规则并开放端口 |