在CentOS上搭建DNS服务器,通常使用BIND(Berkeley Internet Name Domain)软件,以下是在CentOS上搭建DNS服务器的详细步骤和相关FAQs:
一、安装BIND DNS服务器
1、更新系统:

打开终端并以root用户身份登录到CentOS。
运行以下命令更新系统的软件包:
sudo yum update2、安装BIND:
使用以下命令安装BIND DNS服务器:
sudo yum install bind bindutils二、配置BIND DNS服务器
1、编辑主配置文件:
使用文本编辑器打开/etc/named.conf 文件,并根据需求进行配置。

options {
listenon port 53 { any; };
directory "/var/named";
dumpfile "/var/named/data/cache_dump.db";
statisticsfile "/var/named/data/named_stats.txt";
memstatisticsfile "/var/named/data/named_mem_stats.txt";
allowquery { any; };
recursion yes;
};
zone "example.com" IN {
type master;
file "/var/named/example.com.zone";
}; 在上面的配置中,请将<IP range> 替换为允许访问该DNS服务器的IP地址范围,将<DNS server IP> 替换为外部DNS服务器的IP地址。
2、创建正向区域文件:
使用文本编辑器创建一个新文件并保存为/var/named/example.com.zone,其中example.com 是你想要使用的域名。
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2023091101 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ) ; Minimum TTL
)
@ IN NS ns1.example.com.
ns1 IN A 192.168.1.1
www IN A 192.168.1.2 在上面的配置中,SOA 记录指定了授权开始,并列出了主域名服务器和域管理员的电子邮件。NS 记录指定了域名服务器。A 记录将域名映射到IP地址。
3、创建反向区域文件(可选):
如果需要反向解析,可以创建反向区域文件,对于192.168.1.0/24 网络,可以创建/var/named/reverse.example.com 文件:

$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2023091101 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ) ; Minimum TTL
)
@ IN NS ns1.example.com.
1 IN PTR ns1.example.com.
2 IN PTR www.example.com. 在上面的配置中,PTR 记录用于反向DNS解析,将IP地址映射回域名。
三、启动BIND DNS服务器
1、启动服务:
运行以下命令启动BIND DNS服务器并设置其在系统启动时自动启动:
sudo systemctl start named
sudo systemctl enable named2、检查服务状态:
运行以下命令检查DNS服务的当前状态:
sudo systemctl status named确保服务正在运行且没有错误。
四、配置客户端设备的DNS设置
1、修改客户端配置文件:
在客户端设备上,将DNS设置为指向你搭建的内网DNS服务器的IP地址,可以通过编辑/etc/resolv.conf 文件来实现:
nameserver <你的DNS服务器的IP地址>五、测试DNS解析
1、使用ping或nslookup命令测试:
在客户端设备上,使用ping 或nslookup 命令测试域名解析是否正常工作:
ping www.example.com
nslookup www.example.com如果能够正确解析域名并返回对应的IP地址,则说明DNS服务器搭建成功。
六、FAQs
Q1: 如何确保我的DNS服务器不对外开放递归查询?
A1: 在BIND的主配置文件中,将recursion 设置为no,并添加适当的访问控制列表(ACL)来限制允许递归查询的IP地址范围。
Q2: 如何查看BIND的日志文件以诊断问题?
A2: BIND的日志文件通常位于/var/log/messages,你可以使用tail f /var/log/messages 命令实时查看日志输出,以便诊断问题。
Q3: 如何更新区域文件而不重启BIND服务?
A3: 你可以使用rndc reload 命令来重新加载区域文件,而无需重启整个BIND服务,确保区域文件已更新并保存,然后运行:
sudo rndc reload <your_zone_name>
将<your_zone_name> 替换为你的区域名称(如example.com)。
