如何安装配置BIND9 DNS服务器?

来源:Golang教程作者:宋承宪头衔:网络博主
导读:本期聚焦于宋承宪创作的《如何安装配置BIND9 DNS服务器?》,敬请观看详情。安装BIND9搭建DNS服务器时,很多人会在区域文件语法和权限设置上卡壳。本文以Linux环境为例,先把BIND9的安装、主配置文件named.conf的关键参数、正向与反向区域文件编写方法讲清楚,再演示用named-checkconf和named-checkzone做配置校验,最后给出启动服务并用dig命令验证解析结果的完整流程。过程中重点说明allow-query、递归关闭等安全选项,以及SOA记录、NS记录、A记录、PTR记录的书写规范。看完后,你应该能独立部署一台只提供权威解析或同时支持递归查询的内网DNS服务器,并能排查最常见的配置错误。

BIND(Berkeley Internet Name Domain)是目前互联网上使用最广泛的DNS服务器软件,BIND9是其现代版本,支持DNSSEC、IPv6、动态更新等特性。要把BIND9正确部署起来,核心在于理解主配置文件named.conf与区域数据文件的分工:named.conf负责全局参数、日志、访问控制以及声明哪些区域由本服务器负责;区域文件则保存具体的资源记录。本文以Ubuntu 22.04和CentOS 7/8为例,介绍从安装到验证的完整过程,并重点指出容易出错的地方。

如何安装配置BIND9 DNS服务器?

安装BIND9与准备环境

在Debian/Ubuntu系统上,执行sudo apt update和sudo apt install bind9 bind9utils bind9-doc即可完成安装。CentOS/RHEL系则使用sudo yum install bind bind-utils或sudo dnf install bind bind-utils。安装完成后,服务名通常是named或bind9,Ubuntu下为bind9,CentOS下为named。建议先确认服务状态:systemctl status named(或bind9)。如果之前系统自带了解析服务(如systemd-resolved),需要停用或调整端口,因为BIND默认监听53端口。

生产环境建议规划好目录结构。主配置文件通常位于/etc/bind/named.conf(Ubuntu)或/etc/named.conf(CentOS),区域文件默认放在/var/named/或/etc/bind/zones/。为了管理方便,可以统一创建/etc/bind/zones/目录存放自定义区域文件,并通过include指令引入。同时注意文件权限:BIND服务通常以bind或named用户运行,区域文件必须对该用户可读,否则启动会报权限错误。

主配置文件named.conf关键参数解析

先看一个最简权威服务器配置示例。打开named.conf,全局options块中设置监听地址、工作目录、转发器以及安全选项。以下代码展示了一个只允许本机和内网查询、关闭递归的配置片段:

options {
    directory "/var/cache/bind";
    listen-on port 53 { 127.0.0.1; 192.168.1.10; };
    allow-query { localhost; 192.168.1.0/24; };
    recursion no;
    dnssec-validation auto;
    forwarders { 223.5.5.5; 8.8.8.8; };
};

其中directory指定区域文件的相对路径基准目录;listen-on限定BIND监听的IP地址,若不写则监听所有接口;allow-query控制哪些客户端能向本服务器发起查询,没有列出的网段会收到REFUSED响应;recursion no关闭递归,如果这台服务器只提供权威解析(比如公司内网的域名服务器),必须关闭递归,否则可能被利用进行DNS放大攻击。若需要同时为内网客户端提供递归查询,可以将recursion设为yes,并用allow-recursion限制来源。

之后声明区域。正向区域示例:

zone "ipipp.com" IN {
    type master;
    file "/etc/bind/zones/db.ipipp.com";
    allow-update { none; };
};

zone "1.168.192.in-addr.arpa" IN {
    type master;
    file "/etc/bind/zones/db.192.168.1";
};

第一段声明负责ipipp.com域名的权威解析,区域文件路径为/etc/bind/zones/db.ipipp.com;第二段是反向解析区域,用于将IP地址映射回主机名。注意反向区域名的写法:网段192.168.1.0/24对应的区域名是1.168.192.in-addr.arpa,IP地址段倒序书写。如果使用IPv6,则用ip6.arpa后缀。写完区域声明后保存文件。

编写正向与反向区域文件

正向区域文件由SOA记录、NS记录、A记录、CNAME记录等组成。SOA记录是每个区域的起始记录,包含主DNS服务器名称、管理员邮箱(将@替换为点)、序列号、刷新时间等参数。以下是一个完整示例:

$TTL 3600
@   IN  SOA ns1.ipipp.com. admin.ipipp.com. (
            2025031501  ; 序列号,格式YYYYMMDDNN
            7200        ; 刷新时间
            3600        ; 重试时间
            1209600     ; 过期时间
            3600 )      ; 否定缓存TTL
    IN  NS  ns1.ipipp.com.
    IN  NS  ns2.ipipp.com.
ns1 IN  A   192.168.1.10
ns2 IN  A   192.168.1.11
www IN  A   192.168.1.20
mail IN A   192.168.1.30
@   IN  MX  10 mail.ipipp.com.
ftp IN  CNAME www.ipipp.com.

注意几点:域名结尾的点表示绝对域名,如果不写点则会被自动补全为当前区域名;SOA记录中的@代表区域名本身;管理员邮箱admin.ipipp.com.实际对应admin@ipipp.com;序列号每次修改区域文件后必须递增,否则从服务器不会同步更新。NS记录指明该区域的权威名称服务器,A记录将主机名映射到IPv4地址,MX记录指定邮件服务器及优先级,CNAME用于别名。

反向区域文件则主要包含PTR记录。示例:

$TTL 3600
@   IN  SOA ns1.ipipp.com. admin.ipipp.com. (
            2025031501
            7200
            3600
            1209600
            3600 )
    IN  NS  ns1.ipipp.com.
10  IN  PTR ns1.ipipp.com.
11  IN  PTR ns2.ipipp.com.
20  IN  PTR www.ipipp.com.
30  IN  PTR mail.ipipp.com.

在反向区域中,记录名只写IP地址的主机部分,例如10对应192.168.1.10。PTR记录的值必须是完整域名且以点结尾。正向和反向区域可以同时存在,便于通过IP反查域名。建议在修改完区域文件后,使用named-checkzone ipipp.com /etc/bind/zones/db.ipipp.com检查语法,该命令会解析文件并报告错误位置。

启动服务与验证解析

配置完成后,先运行named-checkconf检查主配置文件语法,再运行named-checkzone检查每个区域文件。如果没有任何输出,说明语法正确;有错误会显示具体行号。然后重启服务:systemctl restart bind9(或systemctl restart named)。查看日志journalctl -u bind9 -f可实时观察启动过程。常见的启动失败原因包括:区域文件路径不存在、文件权限不足、SOA记录中缺少点、序列号格式错误等。

验证解析使用dig命令。在本机执行dig @127.0.0.1 www.ipipp.com A,如果返回状态为NOERROR且answer section中有A记录,说明正向解析正常。测试反向解析:dig @127.0.0.1 -x 192.168.1.20。如果配置了递归查询,还可以测试dig @127.0.0.1 www.baidu.com看是否能转发到上游。注意测试时指定的服务器地址必须与listen-on和allow-query匹配,否则会得到connection refused或REFUSED。

另外,使用rndc status可以查看BIND运行状态。rndc是BIND的管理工具,需要先配置rndc.key或使用rndc-confgen生成密钥。如果没有配置rndc,启动时可能报错,但不影响DNS查询功能。对于生产环境,建议开启日志记录:在named.conf中添加logging { channel query_log { file "/var/log/named/query.log"; severity info; }; category queries { query_log; }; };,方便排查客户端请求。

BIND9DNS服务器配置安装修改时间:2026-10-01 08:16:52

免责声明:已尽一切努力确保本网站所含信息的准确性。网站作品多为原创整理与精心创作,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们进行处理Email:chomcom@qq.com。
引用或转载本作品时,请注明当前出处:https://www.ipipp.com/html/1001/64165.html,基于非商业用途的前提下,欢迎转载或二创本作品。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。