在企业网络环境中,为了提高DNS服务的高可用性和容错能力,通常会部署主从DNS服务器。本文将详细讲解如何在Ubuntu系统上使用BIND9软件配置Ubuntu DNS主从同步,即使你是Linux新手也能轻松上手。
一、准备工作
你需要两台运行Ubuntu(建议20.04或更高版本)的服务器:
主DNS服务器(Master):IP地址为192.168.1.10从DNS服务器(Slave):IP地址为
192.168.1.11
确保两台服务器之间网络互通,并已安装
bind9:
sudo apt updatesudo apt install bind9 -y
二、配置主DNS服务器(Master)
编辑主服务器的BIND9主配置文件:
sudo nano /etc/bind/named.conf.options
确保包含以下内容(允许从服务器查询和传输区域数据):
options { directory "/var/cache/bind"; // 允许查询的客户端 allow-query { any; }; // 允许区域传输的从服务器IP allow-transfer { 192.168.1.11; }; recursion yes; dnssec-validation auto; auth-nxdomain no;};
接下来,定义一个正向解析区域(以
example.com为例):
sudo nano /etc/bind/named.conf.local
添加以下区域配置:
zone "example.com" { type master; file "/etc/bind/db.example.com";};
创建区域数据文件:
sudo nano /etc/bind/db.example.com
填入以下内容(注意替换IP和域名):
$TTL 86400@ IN SOA ns1.example.com. admin.example.com. ( 2024060101 ; Serial 3600 ; Refresh 1800 ; Retry 604800 ; Expire 86400 ) ; Minimum TTL; Name Servers@ IN NS ns1.example.com.@ IN NS ns2.example.com.; A Recordsns1 IN A 192.168.1.10ns2 IN A 192.168.1.11www IN A 192.168.1.100
保存后,检查配置并重启服务:
sudo named-checkconfsudo named-checkzone example.com /etc/bind/db.example.comsudo systemctl restart bind9
三、配置从DNS服务器(Slave)
在从服务器上,编辑配置文件:
sudo nano /etc/bind/named.conf.local
添加以下内容:
zone "example.com" { type slave; file "slaves/db.example.com"; masters { 192.168.1.10; };};
确保
/var/cache/bind/slaves/目录存在且有写权限:
sudo mkdir -p /var/cache/bind/slavessudo chown bind:bind /var/cache/bind/slaves
重启从服务器的BIND9服务:
sudo systemctl restart bind9
四、验证主从同步是否成功
在从服务器上查看日志:
sudo tail -f /var/log/syslog | grep named
如果看到类似
transfer of 'example.com/IN' from 192.168.1.10#53: transferred serial 2024060101的信息,说明同步成功。
你也可以使用
dig命令测试:
dig @192.168.1.11 example.com ANY
如果返回与主服务器相同的结果,说明DNS服务器同步配置成功!
五、常见问题排查
防火墙是否放行了UDP/TCP 53端口? 主服务器的allow-transfer是否包含了从服务器IP? 区域文件中的Serial号是否更新?每次修改后需递增Serial才能触发同步。
通过以上步骤,你就完成了基于Ubuntu的BIND9主从配置。这种架构不仅能提升DNS服务的可靠性,还能在主服务器宕机时由从服务器继续提供解析服务,是生产环境的标准实践。
希望这篇关于Ubuntu搭建DNS主从同步的教程对你有所帮助!如有疑问,欢迎留言交流。
