Linux怎么配置DNS服务器_Linux如何搭建BIND域名解析【教程】

夏敏大大_2882

夏敏大大_2882

2026-03-26

312人浏览

原创

bind9需明确服务类型:缓存服务器(recursion yes; + forwarders)、权威服务器(type master; + recursion no;)或转发服务器;关键配置listen-on、allow-query、recursion必须匹配目标,区域文件路径权限与soa serial需正确,防火墙和selinux亦须检查。

linux怎么配置dns服务器_linux如何搭建bind域名解析【教程】

bind9 不是“装上就能用”的服务,它默认不监听外部请求、不提供权威解析、甚至可能连本地查询都拒绝——配置 DNS 服务器的核心,是明确你到底要什么:是给内网设备做本地缓存?还是对外提供 example.com 的权威解析?目标不同,配置逻辑完全不同。

确认你要的是哪种 DNS 服务

很多人一上来就改 /etc/bind/named.conf,结果 dig @localhost example.com 返回 REFUSED,根本原因是没分清服务类型:

  • 缓存服务器(推荐新手起步):只转发查询、不管理任何域名,适合内部网络加速。关键配置是 recursion yes; + forwarders { 8.8.8.8; 223.5.5.5; };
  • 权威服务器(生产常用):真正“管”某个域名,比如 example.com 的 A 记录由你决定。必须设 type master;、写区域文件、禁用递归(recursion no;)
  • 转发服务器(轻量替代方案):不自己查,把所有请求原样转给上游(如公司统一 DNS),适合策略集中管控

混淆这三者,会导致权限拒绝、超时、或返回意外的缓存结果。

最关键的三个配置项不能错

哪怕只配一个权威 zone,以下三项漏掉任意一个,systemctl start bind9 可能成功,但查询必失败:

  • listen-on port 53 { any; };:BIND 默认只监听 127.0.0.1,外部机器根本连不上。别信“any 安全风险大”,内网环境先放开再加 ACL
  • allow-query { any; };:即使连上了,也会被默认策略拒之门外。测试阶段先设 any,上线前收紧为具体网段(如 192.168.1.0/24)
  • recursion no;(权威场景)或 recursion yes;(缓存场景):这个开关控制 BIND 是否替你去网上查。权威服务器必须关掉,否则会被当成开放递归滥用

错误现象:dig @your-server-ip example.com 返回 NOERROR 但无答案,大概率是 recursion 和服务类型不匹配。

区域文件路径和权限最容易被忽略

你写了 file "/etc/bind/zones/db.example.com";,但 BIND 实际读不到——不是路径写错,而是两个隐形条件没满足:

  • 目录 /etc/bind/zones/ 必须存在,且属主是 bind 用户(Debian/Ubuntu)或 named(RHEL/CentOS)。直接 sudo mkdir /etc/bind/zones 后不改属主,BIND 会静默跳过该 zone
  • 区域文件本身需有读权限:sudo chown bind:bind /etc/bind/zones/db.example.com(Ubuntu)或 sudo chown named:named ...(CentOS)
  • SOA 记录里的 Serial 必须每次修改后递增(如从 2024010101 改成 2024010102),否则从服务器或客户端缓存不会更新

验证命令别只用 named-checkconf,一定要跑:named-checkzone example.com /etc/bind/zones/db.example.com,它能发现 NS 记录指向不存在、TTL 格式错误等硬伤。

防火墙和 SELinux 是真实存在的拦路虎

配置全对,systemctl status bind9 显示 active,但就是没响应?先看这两处:

  • sudo ufw status(Ubuntu)或 sudo firewall-cmd --list-all(CentOS):DNS 依赖 UDP 53 端口,TCP 53 仅用于大响应或区域传输。只开 TCP 或只开 UDP 都不行
  • SELinux(RHEL/CentOS):默认禁止 BIND 写入自定义路径。若把 zone 文件放在 /home/user/zones/ 这类非标准位置,setsebool -P named_write_master_zones 1 或 chcon -t named_zone_t /path/to/file 才能生效

本地测试用 dig @127.0.0.1 example.com 成功,但换一台局域网机器就超时?90% 是防火墙或 allow-query 没放开。

BIND 的配置难点不在语法,而在于每个环节都要求“显式声明”:监听谁、允许谁查、从哪读数据、要不要递归……少一个 ; 可能只是报错,少一个 allow-query 却让你调试两小时。最稳妥的做法,是先用最小化缓存配置跑通,再逐步叠加权威解析能力。
PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
tcp和udp的区别
tcp和udp的区别

TCP和UDP的区别,在连接性、可靠性、速度和效率、数据报大小以及适用场景等方面。本专题为大家提供tcp和udp的区别的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.25

483

5

udp是什么协议
udp是什么协议

UDP是OSI参考模型中一种无连接的传输层协议。本专题为大家带来udp是什么协议的相关文章,免费提供给大家。

2023.08.08

2651

5

tcp和udp有什么区别
tcp和udp有什么区别

tcp和udp的区别有:1、udp是无连接的,tcp是面向连接的;2、udp是不可靠传输,tcp是可靠传输;3、udp是面向报文传输,tcp是面向字节流传输。想了解更多tcp相关的内容,可阅读本专题下面的相关文章。

2024.11.14

3109

8

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3910

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3353

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2493

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6050

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

5682

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3333

8

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习