在 CentOS/RHEL 系列服务器中配置 DNS 服务器的转发器(用于 BIND DNS 服务),需要修改 BIND 的主配置文件,指定当本地无法解析域名时转发查询的目标 DNS 服务器。以下是详细步骤:
- 已安装 BIND DNS 服务:
yum install -y bind bind-utils
- 确认 BIND 服务状态:
BIND 的转发器配置在主配置文件/etc/named.conf中。
cp /etc/named.conf /etc/named.conf.bak
在options区块中添加或修改forwarders和forward参数:
options {
listen-on port 53 { 127.0.0.1; 192.168.1.100; }; # 监听的IP和端口(添加服务器实际IP)
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";
secroots-file "/var/named/data/named.secroots";
recursing-file "/var/named/data/named.recursing";
allow-query { localhost; 192.168.1.0/24; }; # 允许查询的网段
forwarders {
8.8.8.8; # 谷歌DNS
114.114.114.114; # 国内DNS
223.5.5.5; # 阿里云DNS
};
forward only; # 仅转发模式(本地无法解析时才转发,推荐)
};
参数说明:
forwarders:指定转发目标 DNS 服务器列表(按顺序尝试)。
forward only:仅当转发器可用时才查询,本地不尝试解析(适合纯转发场景)。
forward first:优先转发,转发失败后再尝试本地解析(适合混合场景)。
named-checkconf /etc/named.conf
- 若输出为空,说明语法正确;若有错误,根据提示修改对应行。
systemctl restart named
systemctl enable named
使用nslookup或dig查询一个本地未配置的域名(如example.com),验证是否通过转发器解析:
nslookup example.com 127.0.0.1
dig @127.0.0.1 example.com
成功标志:输出中SERVER字段显示本地 DNS 服务器 IP(如127.0.0.1),且ANSWER SECTION返回正确的 IP 地址,说明转发成功。
tail -f /var/log/messages | grep named
日志中会显示转发查询的记录,例如:
named[xxx]: client 127.0.0.1#xxxxx (example.com): query: example.com A + (127.0.0.1)
named[xxx]: query-errors: debug 1: resolving example.com/A via 8.8.8.8#53
-
转发失败:
- 检查
forwarders中的 DNS 服务器是否可达(ping 8.8.8.8)。
- 确认防火墙放行 DNS 端口(UDP 53):
firewall-cmd --add-port=53/udp --permanent
firewall-cmd --reload
-
客户端无法使用转发器:
- 检查
allow-query参数是否包含客户端所在网段(如192.168.1.0/24)。
- 客户端需将 DNS 服务器地址设置为当前 BIND 服务器的 IP。
通过以上步骤,即可配置 BIND DNS 服务器的转发器,实现将本地无法解析的域名查询转发到指定的上级 DNS 服务器,适用于搭建内部 DNS 服务场景。