在RedHat系统中配置DNS服务器通常使用BIND(Berkeley Internet Name Domain)软件包,这是最常用且功能强大的DNS实现工具,以下是详细的配置步骤和说明,包括安装、配置文件设置、服务管理及测试方法。

确保系统已更新至最新状态,并安装BIND相关软件包,打开终端,执行以下命令:
sudo dnf update -y
sudo dnf install bind bind-utils -y
安装完成后,启动named服务(BIND的守护进程)并设置为开机自启:
sudo systemctl start named
sudo systemctl enable named
检查服务状态,确保运行正常:
sudo systemctl status named
配置DNS服务器的基本参数,BIND的主配置文件是/etc/named.conf,需要编辑该文件以定义区域和选项,使用文本编辑器(如vim)打开文件:

sudo vim /etc/named.conf
在文件中,首先修改options部分,设置监听地址和允许查询的客户端,仅允许本地网络查询:
options {
listen-on port 53 { 127.0.0.1; 192.168.1.0/24; }; // 监听本地和局域网IP
listen-on-v6 port 53 { ::1; };
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; 192.168.1.0/24; }; // 允许查询的网段
recursion yes;
dnssec-validation yes;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
注意:168.1.0/24需根据实际网络环境修改。
定义正向和反向解析区域,假设要配置的域名为example.com,网络为168.1.0/24,在named.conf中添加以下内容:
zone "example.com" IN {
type master;
file "example.com.zone";
allow-update { none; };
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "192.168.1.rev";
allow-update { none; };
};
这里的example.com.zone和168.1.rev分别是区域数据文件的名称,需在/var/named目录下创建。

创建正向区域文件/var/named/example.com.zone:
sudo vim /var/named/example.com.zone
```注意替换实际值):
$TTL 86400 @ IN SOA ns1.example.com. admin.example.com. ( 2025101501 ; Serial 3600 ; Refresh 1800 ; Retry 604800 ; Expire 86400 ; Minimum TTL ) IN NS ns1.example.com. IN MX 10 mail.example.com. ns1 IN A 192.168.1.10 www IN A 192.168.1.20 mail IN A 192.168.1.30
`SOA`记录包含区域管理信息,`NS`记录指定名称服务器,`A`记录将域名映射到IP地址。
创建反向区域文件`/var/named/192.168.1.rev`:
sudo vim /var/named/192.168.1.rev
$TTL 86400 @ IN SOA ns1.example.com. admin.example.com. ( 2025101501 ; Serial 3600 ; Refresh 1800 ; Retry 604800 ; Expire 86400 ; Minimum TTL ) IN NS ns1.example.com. 10 IN PTR ns1.example.com. 20 IN PTR www.example.com. 30 IN PTR mail.example.com.
`PTR`记录将IP地址映射到域名,需与正向区域的`A`记录对应。
配置完成后,检查文件权限和语法错误:
sudo chown root:named /var/named/example.com.zone sudo chown root:named /var/named/192.168.1.rev sudo named-checkconf sudo named-checkzone example.com /var/named/example.com.zone sudo named-checkzone 1.168.192.in-addr.arpa /var/named/192.168.1.rev
若检查通过,重启named服务加载新配置:
sudo systemctl restart named
测试DNS解析功能,使用`dig`或`nslookup`命令查询域名:
dig @127.0.0.1 www.example.com nslookup 192.168.1.20
若返回正确的IP地址或域名,说明配置成功,若需允许其他客户端访问,需检查防火墙设置:
sudo firewall-cmd --permanent --add-service=dns sudo firewall-cmd --reload
以下为相关问答FAQs:
**Q1: 如何修改DNS服务器的监听端口?**
A1: 在`/etc/named.conf`的`options`部分,修改`listen-on port 53`中的端口号,例如改为`listen-on port 53 { 127.0.0.1; };`,修改后需重启named服务并确保防火墙允许新端口的访问。
**Q2: DNS区域文件中的Serial号有什么作用??**
A2: Serial号用于标识区域文件的版本,当区域内容更新时,必须递增Serial号(如从2025101501改为2025101502),以便从服务器检测到变化并请求区域传输,若Serial号未更新,从服务器可能不会同步最新数据。 