CentOS下如何部署Bind9搭建DNS服务器?

来源:CDN教程作者:桃乃木香奈头衔:网络博主
导读:本期聚焦于桃乃木香奈创作的《CentOS下如何部署Bind9搭建DNS服务器?》,敬请观看详情。一台刚装好的CentOS服务器,怎样快速变成能解析内部域名的DNS服务器?直接编辑named.conf就能生效吗?本文将从安装Bind9、配置主区域文件到启动验证,完整梳理一套可落地的部署流程。内容包括named.conf主配置的options与zone声明、正向解析区域和反向解析区域的写法、A记录与CNAME及MX记录的格式,以及named-checkconf和named-checkzone语法检查工具的使用。同时会涉及防火墙放行53端口、SELinux策略调整、服务开机自启等常见环境准备步骤。对于初次接触DNS自建解析的读者,文中还给出了dig和nslookup的测试命令,帮助判断解析是否成功。整个部署过程基于CentOS软件仓库自带的bind版本,不涉及源码编译,更适合快速上线内部域名解析或测试环境。如果遇到区域文件权限错误或服务启动失败,也能从常见问题排查部分找到对应思路。

在内部网络环境中,自建DNS服务器可以让主机之间通过域名互相访问,而不必记忆IP地址。CentOS作为常见的Linux服务器发行版,软件仓库中自带了Bind9,部署一套内部解析服务并不复杂。整个过程包括安装软件、编写主配置和区域文件、启动服务以及验证解析结果。下面先从安装和基础环境准备开始。

CentOS下如何部署Bind9搭建DNS服务器?

安装Bind9与检查运行环境

在CentOS 7及以上的发行版中,bind软件包直接由官方仓库提供,使用yum或dnf命令即可完成安装。安装前建议先更新系统软件源索引,然后安装bind和bind-utils两个包。bind是DNS服务主程序,bind-utils提供dig、nslookup、host等实用的解析测试工具。安装完成后,主要的配置文件位于/etc/named.conf,区域数据文件默认放在/var/named目录下,服务名称为named。

安装完bind之后,不要急着启动服务,先确认系统防火墙和SELinux的策略。DNS服务使用TCP和UDP的53端口,TCP 53主要用于区域传送和较大的响应,UDP 53负责常规查询。如果防火墙处于运行状态,需要放行这两个协议端口。对于SELinux,named服务在默认策略下已经可以读取/var/named目录,但如果把区域文件放在自定义路径,就需要修改文件上下文或设置named_write_master_zones布尔值。

检查named的版本和配置文件基本结构,可以用named -v命令查看版本。此时可以顺便确认named用户是否存在,因为named服务通常以named用户身份运行,区域文件必须允许该用户读取。环境准备完毕后,再开始编写配置。

yum install -y bind bind-utils
systemctl enable named
firewall-cmd --permanent --add-service=dns
firewall-cmd --reload

配置主DNS区域与解析记录

named.conf是Bind9的主配置文件,采用C语言风格的语句块。打开/etc/named.conf后,首先会看到options段落,里面包含listen-on、listen-on-v6、directory、allow-query等指令。如果要让DNS监听所有网卡,需要把listen-on port 53改成any,或者直接注释掉该行。directory指令指定区域文件的默认目录,通常保持/var/named即可。allow-query控制哪些客户端可以查询,默认localhost,局域网使用时可以改成any或者具体的网段。

在options后面或者文件末尾,可以添加zone声明。正向解析区域负责将域名映射为IP地址,反向解析区域则根据IP查询域名。一个典型的主区域声明包含type master、file文件名和allow-update等参数。file参数指定的文件必须放在directory定义的目录中。

创建区域文件时,需要从SOA记录开始。SOA记录包含主DNS服务器名称、管理员邮箱、序列号以及刷新、重试、过期等时间参数。括号内的时间单位可以是数字,默认秒。之后的NS记录声明区域中的名称服务器,A记录把主机名指向IP,CNAME负责别名,MX记录处理邮件路由。反向区域文件则使用PTR记录,把IP地址最后一段映射回完整域名。

options {
    listen-on port 53 { any; };
    listen-on-v6 port 53 { any; };
    directory "/var/named";
    allow-query { any; };
    recursion yes;
};

zone "ipipp.com" IN {
    type master;
    file "ipipp.com.zone";
};

zone "1.168.192.in-addr.arpa" IN {
    type master;
    file "192.168.1.zone";
};

正向区域文件的内容相对固定,开头设置默认生存时间,然后定义SOA和NS记录。主机记录根据实际网络规划填写,例如将www主机的A记录指向Web服务器IP。CNAME记录用于别名,MX记录指向邮件服务器。需要注意的是,区域文件中域名后面要加上点号表示完整名称,否则会被当作相对于当前域名的名称。

$TTL 86400
@   IN  SOA ns1.ipipp.com. admin.ipipp.com. (
        2025010101 ; Serial
        3600       ; Refresh
        1800       ; Retry
        604800     ; Expire
        86400 )    ; Minimum TTL
@       IN  NS  ns1.ipipp.com.
ns1     IN  A   192.168.1.10
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.

反向区域文件用于根据IP查询域名,PTR记录将IP最后一段指向完整域名。反向区域的名称通常写作反写的网段加上in-addr.arpa,例如192.168.1.0/24对应的区域名是1.168.192.in-addr.arpa。反向解析不强制要求配置,但在某些需要验证来源的系统中比较有用。

$TTL 86400
@   IN  SOA ns1.ipipp.com. admin.ipipp.com. (
        2025010101 ; Serial
        3600       ; Refresh
        1800       ; Retry
        604800     ; Expire
        86400 )    ; Minimum TTL
@       IN  NS  ns1.ipipp.com.
10      IN  PTR ns1.ipipp.com.
20      IN  PTR www.ipipp.com.
30      IN  PTR mail.ipipp.com.

启动服务与验证解析结果

完成配置后,不要直接重启named。先使用named-checkconf检查主配置文件语法,如果没有任何输出,说明语法正确;如果有错误,会显示具体行号和提示。接着用named-checkzone命令检查区域文件。例如检查正向区域ipipp.com,命令格式是named-checkzone ipipp.com /var/named/ipipp.com.zone。反向区域同理。确认所有配置无误后,再通过systemctl start named启动服务。

启动后,使用systemctl status named查看运行状态。如果启动失败,可以查看/var/log/messages或使用journalctl -u named查看详细日志。常见问题包括区域文件权限不足、SOA记录括号不匹配、缺少NS记录、序列号格式错误等。对于权限问题,可以使用chown named:named /var/named/ipipp.com.zone来调整所有者。

服务运行正常后,用dig和nslookup进行实际查询。dig @127.0.0.1 www.ipipp.com可以直接指定本地DNS服务器进行解析,如果返回ANSWER SECTION中包含192.168.1.20,说明正向解析成功。反向解析使用dig -x 192.168.1.20,或者nslookup 192.168.1.20。测试时注意域名末尾的点代表绝对域名,区域配置中不能省略。

named-checkconf
named-checkzone ipipp.com /var/named/ipipp.com.zone
systemctl start named
systemctl status named
dig @127.0.0.1 www.ipipp.com
dig -x 192.168.1.20

配置转发器与安全加固

如果内部DNS需要解析外部域名,可以在options中配置forwarders,将无法解析的请求转发给运营商DNS或公共DNS,例如223.5.5.5和223.6.6.6。开启转发后,Bind9会先尝试本地区域解析,未命中时转发给上游DNS。通常设置forward only,避免递归查询直接访问根服务器,降低解析延迟和外部流量。

为了安全,除非是面向所有客户端开放的公共DNS,否则建议将allow-query和allow-recursion限制为内网网段。allow-query控制谁能查询,allow-recursion控制谁能使用递归服务。如果只允许192.168.1.0/24网段访问,可以写成allow-query { 192.168.1.0/24; };。同时关闭不需要的查询来源,减少被利用进行DNS放大攻击的风险。

另外,Bind9支持chroot环境运行,但CentOS仓库版本默认没有启用,需要手动配置比较繁琐。对于一般内部部署,更实际的做法是限制named进程运行用户、设置区域文件为只读,并定期查看查询日志。如果需要对外提供DNS服务,还应该配置allow-transfer,只允许指定从服务器进行区域传送,避免区域数据被恶意拉取。

options {
    directory "/var/named";
    allow-query { 192.168.1.0/24; };
    allow-recursion { 192.168.1.0/24; };
    allow-transfer { none; };
    forwarders {
        223.5.5.5;
        223.6.6.6;
    };
    forward only;
};

完成以上步骤后,一台基于CentOS的Bind9 DNS服务器就可以稳定运行了。无论是内部主机名解析,还是作为上游DNS的转发节点,这套配置都能满足日常需求。遇到解析不生效时,优先检查区域文件序列号是否递增、SOA记录括号是否闭合,以及防火墙是否真正放行了53端口。

CentOS DNS服务器Bind9部署DNS区域解析修改时间:2026-09-21 00:00:50

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