如何在CentOS/RHEL系列服务器中配置DNS服务器的转发器

在 CentOS/RHEL 系列服务器中配置 DNS 服务器(BIND 服务)的转发器,主要是通过修改 BIND 的主配置文件,指定当本地 DNS 无法解析域名时,将查询请求转发到其他 DNS 服务器的规则。以下是详细操作步骤:

一、环境准备

  1. 安装 BIND 服务(若未安装):
    bash
    # 安装BIND主程序和工具
    yum install -y bind bind-utils
    
  2. 确认 BIND 服务状态
    bash
    # 检查服务是否运行
    systemctl status named
    # 若未运行,启动服务
    systemctl start named
    # 设置开机自启
    systemctl enable named
    

二、配置 DNS 转发器(核心步骤)

BIND 的转发器配置通过主配置文件/etc/named.conf实现,该文件定义了 DNS 服务的全局规则。

1. 备份配置文件(重要)

bash
cp /etc/named.conf /etc/named.conf.bak

2. 编辑主配置文件

bash
vi /etc/named.conf

3. 配置转发规则

在配置文件的options区块中,添加或修改forwarders(转发目标)和forward(转发模式)参数:
ini
options {
    # 监听的IP地址(添加服务器本地IP,允许外部查询)
    listen-on port 53 { 127.0.0.1; 192.168.1.100; };  # 替换为实际IP
    # 允许查询的客户端网段(如本地局域网)
    allow-query     { localhost; 192.168.1.0/24; };   # 替换为实际网段
    
    # 配置转发器(目标DNS服务器列表,按优先级排序)
    forwarders {
        8.8.8.8;          # 谷歌公共DNS
        114.114.114.114;  # 国内公共DNS
        223.5.5.5;        # 阿里云DNS
    };
    
    # 转发模式(二选一)
    forward only;  # 仅转发:本地不解析,完全依赖转发器(推荐纯转发场景)
    # forward first; # 优先转发:先请求转发器,失败后再尝试本地解析(混合场景)
    
    # 保留其他默认配置(如目录、日志路径等)
};
参数说明
  • forwarders:指定转发目标 DNS 服务器的 IP 地址,多个地址用分号分隔,按顺序尝试。
  • forward only:本地 DNS 仅作为转发代理,不尝试自己解析域名,适合仅需转发功能的场景。
  • forward first:优先向转发器查询,若转发失败,再尝试本地解析(如本地有自定义域名解析规则时使用)。

三、验证配置文件语法

修改后必须检查配置文件是否有语法错误:
bash
named-checkconf /etc/named.conf
  • 若命令无输出,说明语法正确;若有错误,根据提示修改对应行(如括号不匹配、IP 格式错误等)。

四、重启服务使配置生效

bash
systemctl restart named

五、验证转发器是否生效

1. 本地测试转发功能

使用dignslookup工具查询一个本地未配置的域名(如example.com),验证是否通过转发器解析:
bash
# 向本地DNS服务器查询(127.0.0.1为本地DNS)
dig @127.0.0.1 example.com
成功标志:输出中ANSWER SECTION会显示解析结果(如example.com的 IP),且SERVER字段为本地 DNS 服务器 IP(127.0.0.1),说明转发成功。

2. 查看 DNS 查询日志

通过日志确认转发过程:
bash
# 实时查看BIND服务日志
tail -f /var/log/messages | grep named
日志中会显示转发查询的记录,例如:
plaintext
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

六、常见问题解决

  1. 转发失败(无解析结果)
    • 检查forwarders中的 DNS 服务器是否可达:ping 8.8.8.8
    • 确认防火墙放行 DNS 端口(UDP 53):
      bash
      firewall-cmd --add-port=53/udp --permanent
      firewall-cmd --reload
      
  2. 客户端无法使用转发服务
    • 检查allow-query是否包含客户端网段(如192.168.1.0/24),否则客户端会被拒绝查询。
    • 客户端需将 DNS 服务器地址设置为当前 BIND 服务器的 IP(如192.168.1.100)。
通过以上步骤,即可完成 DNS 服务器转发器的配置,实现将本地无法解析的域名查询转发到指定的上级 DNS 服务器,适用于企业内部 DNS 服务搭建、加速域名解析等场景。
阅读剩余
THE END