在 CentOS/RHEL 系列服务器中配置 DNS 服务器(BIND 服务)的转发器,主要是通过修改 BIND 的主配置文件,指定当本地 DNS 无法解析域名时,将查询请求转发到其他 DNS 服务器的规则。以下是详细操作步骤:
-
安装 BIND 服务(若未安装):
yum install -y bind bind-utils
-
确认 BIND 服务状态:
systemctl status named
systemctl start named
systemctl enable named
BIND 的转发器配置通过主配置文件/etc/named.conf实现,该文件定义了 DNS 服务的全局规则。
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
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 服务器的 IP 地址,多个地址用分号分隔,按顺序尝试。
forward only:本地 DNS 仅作为转发代理,不尝试自己解析域名,适合仅需转发功能的场景。
forward first:优先向转发器查询,若转发失败,再尝试本地解析(如本地有自定义域名解析规则时使用)。
修改后必须检查配置文件是否有语法错误:
named-checkconf /etc/named.conf
- 若命令无输出,说明语法正确;若有错误,根据提示修改对应行(如括号不匹配、IP 格式错误等)。
使用dig或nslookup工具查询一个本地未配置的域名(如example.com),验证是否通过转发器解析:
dig @127.0.0.1 example.com
成功标志:输出中ANSWER SECTION会显示解析结果(如example.com的 IP),且SERVER字段为本地 DNS 服务器 IP(127.0.0.1),说明转发成功。
通过日志确认转发过程:
tail -f /var/log/messages | grep named
日志中会显示转发查询的记录,例如:
named[1234]: client 127.0.0.1#53533 (example.com): query: example.com A + (127.0.0.1)
named[1234]: 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(如
192.168.1.100)。
通过以上步骤,即可完成 DNS 服务器转发器的配置,实现将本地无法解析的域名查询转发到指定的上级 DNS 服务器,适用于企业内部 DNS 服务搭建、加速域名解析等场景。