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

在 CentOS/RHEL 系列服务器中配置 DNS 服务器的转发器(用于 BIND DNS 服务),需要修改 BIND 的主配置文件,指定当本地无法解析域名时转发查询的目标 DNS 服务器。以下是详细步骤:

一、前提条件

  1. 已安装 BIND DNS 服务:
    bash
    # 安装BIND服务及工具
    yum install -y bind bind-utils
    
  2. 确认 BIND 服务状态:
    bash
    systemctl status named  # 检查是否已启动
    

二、配置 DNS 转发器

BIND 的转发器配置在主配置文件/etc/named.conf中。

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

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

2. 编辑 BIND 主配置文件

bash
vi /etc/named.conf

3. 配置转发器参数

options区块中添加或修改forwardersforward参数:
ini
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; };  # 允许查询的网段

    # 配置转发器(添加需要转发的DNS服务器IP)
    forwarders {
        8.8.8.8;        # 谷歌DNS
        114.114.114.114;  # 国内DNS
        223.5.5.5;      # 阿里云DNS
    };
    forward only;  # 仅转发模式(本地无法解析时才转发,推荐)
    # forward first;  # 优先转发(先转发,转发失败再尝试本地解析)

    # 其他默认配置保留...
};
参数说明
  • forwarders:指定转发目标 DNS 服务器列表(按顺序尝试)。
  • forward only:仅当转发器可用时才查询,本地不尝试解析(适合纯转发场景)。
  • forward first:优先转发,转发失败后再尝试本地解析(适合混合场景)。

三、检查配置文件语法

bash
named-checkconf /etc/named.conf
  • 若输出为空,说明语法正确;若有错误,根据提示修改对应行。

四、重启 BIND 服务使配置生效

bash
systemctl restart named
systemctl enable named  # 设为开机自启

五、验证转发器配置

1. 本地测试 DNS 转发

使用nslookupdig查询一个本地未配置的域名(如example.com),验证是否通过转发器解析:
bash
# 方法1:使用nslookup
nslookup example.com 127.0.0.1  # 向本地DNS服务器查询

# 方法2:使用dig(更详细)
dig @127.0.0.1 example.com
成功标志:输出中SERVER字段显示本地 DNS 服务器 IP(如127.0.0.1),且ANSWER SECTION返回正确的 IP 地址,说明转发成功。

2. 查看 BIND 日志确认转发

bash
tail -f /var/log/messages | grep named
日志中会显示转发查询的记录,例如:
plaintext
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

六、常见问题解决

  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。
通过以上步骤,即可配置 BIND DNS 服务器的转发器,实现将本地无法解析的域名查询转发到指定的上级 DNS 服务器,适用于搭建内部 DNS 服务场景。
阅读剩余
THE END