管理 DNS 服务 课堂笔记
2026/9/17 19:05:25 网站建设 项目流程

1.1 DNS 域名解析服务原理

1.1.1 DNS 核心作用与类型

DNS 是分布式层级域名系统,把好记的域名和 IP 互相映射。

  1. 正向解析:域名 → IP(最常用,如www.bdqn.com得到 IP)
  2. 反向解析:IP → 域名;多用于邮件反垃圾、审计;反向区域命名格式:网段倒序.in‑addr.arpa

Zone(区域):DNS 服务器所管辖的域名 / 网段范围,是 DNS 管理最小单元。分正向 zone反向 zone

DNS 三种服务器角色

同一台服务器,对不同 zone 可以充当不同角色。

表格

角色数据来源核心特点适用场景
缓存域名服务器根 / 外部 DNS 查询结果没有自己的区域数据,只缓存查询结果企业内网,加速解析,减少出口流量
主域名服务器(master 权威)管理员手动编辑 zone 文件拥有该区域最高权威,原始数据来源内网 / 公网域名权威解析
从域名服务器(slave 备份)自动从主服务器下载同步 zone 数据不能手动改数据,做热备份,分担查询压力高可用,主故障可接管解析

1.1.2 BIND 安装与服务控制

BIND 是工业级 DNS 软件,服务进程名叫named;DNS 端口:UDP 53(解析查询),TCP 53(主从区域数据传输同步)

表格

软件包作用
bind主程序、主配置文件
bind‑utilsdig / nslookup / host 测试工具,必装
bind‑chroot安全伪根隔离,提升安全

安装:

dnf -y install bind bind‑utils bind‑chroot

服务操作:

systemctl status named systemctl start named systemctl enable named systemctl restart named # 修改配置后完全重启 systemctl reload named # 重载配置,不中断服务,优先用 reload

检查端口:netstat -anpu | grep named确认 UDP 53 监听。

1.2 构建缓存域名服务器

1.2.1 缓存 DNS 价值

  1. 缓存查询结果,重复请求直接返回,提升内网解析速度
  2. 减少内网机器直接访问公网 DNS,降低出口带宽。

缓存服务器没有自己的域名区域数据。两种查询模式:

  • 方式 1:type hint读取named.ca根服务器文件,迭代查询根 → 顶级域。
  • 方式 2:forwarders {}转发器,直接把请求交给指定公共 DNS,企业内网更推荐,速度更快。

1.2.2 搭建缓存 DNS

主配置文件/etc/named.conf

⚠️ BIND 语法坑:每一行配置结尾分号;不能丢!注释#或者/* */

options { listen‑on port 53 {192.168.10.101; }; # listen‑on‑v6 port 53 { ::1; }; # 注释 ipv6 directory "/var/named"; allow‑query { any; }; # 允许哪些客户端来查询 recursion yes; # 缓存服务器必须开启递归查询 dnssec‑validation no; # 测试环境关闭 dnssec # 启用转发器,二选一,启用转发器就可以注释掉下面根 zone forwarders { 114.114.114.114; 202.96.128.86; }; }; 根域 hint;如果配置 forwarders,该段可以注释 zone "." IN { type hint; file "named.ca"; };

检查语法(每次改完配置必执行!

named‑checkconf

客户端测试:把网卡 DNS1 指向缓存服务器 IP。

nslookup www.baidu.com # Non‑authoritative answer → 非权威回答,代表结果来自缓存服务器,特征标识

1.2.3 缓存 DNS 优化

  1. 使用国内运营商转发器,替代根 hint,速度更快。
  2. max‑cache‑size 1G;在 options {} 内设置最大缓存占用。
  3. 生产环境打开dnssec‑validation yes防 DNS 劫持。

1.3 主 / 从域名服务器

主服务器保存原始 zone 数据;从服务器不能手动编辑 zone,自动拉取主服务器数据,实现高可用备份。⚠️主服务器 zone 文件修改记录,SOA 序列号必须增大,否则从服务器不会同步更新!

1.3.1 主域名服务器搭建

  1. 修改/etc/named.conf
options { listen‑on port 53 {192.168.10.101; }; directory "/var/named"; allow‑query { any; }; recursion yes; dnssec‑validation no; }; 正向区域 bdqn.com zone "bdqn.com" IN { type master; file "bdqn.com.zone"; allow‑transfer {192.168.10.102; }; # 只允许从服务器 IP 同步数据,安全! }; 反向区域 zone "10.168.192.in‑addr.arpa" IN { type master; file "192.168.10.arpa"; allow‑transfer {192.168.10.102; }; };
  1. 创建正向区域数据文件/var/named/bdqn.com.zone

zone 文件记录类型汇总 | 记录 | 作用 | |---|---| |SOA | 权威起始,序列号、刷新、重试、过期、否定缓存;改记录序列号要 + 1| |NS | 声明该域的 DNS 服务器 | |MX | 邮件交换,数字越小优先级越高 | |A | 域名 → IPv4| |AAAA | 域名 → IPv6| |CNAME | 别名记录 | |PTR | 反向解析 IP → 域名,只用写 IP 主机位 | |*| 泛域名,匹配所有未定义子域名 |

$TTL 86400 @ IN SOA bdqn.com. admin.bdqn.com. ( 2025020311 ; 序列号,修改 zone 必须递增! 4H ; 刷新间隔(从服务器多久来拉取更新) 30M ; 重试间隔 12H ; 失效时间 1D ) ; 否定缓存 TTL @ IN NS ns1.bdqn.com. @ IN NS ns2.bdqn.com. @ IN MX 10 mail.bdqn.com. ns1 IN A 192.168.10.101 ns2 IN A 192.168.10.102 www IN A 192.168.10.104 mail IN A 192.168.10.105 study IN A 192.168.10.106 IN A 192.168.10.107 ; 泛域名
  1. 反向 zone 文件/var/named/192.168.10.arpa
$TTL 86400 @ IN SOA bdqn.com. admin.bdqn.com. ( 2025020311 4H 30M 12H 1D ) @ IN NS ns1.bdqn.com. @ IN NS ns2.bdqn.com. 104 IN PTR www.bdqn.com. 105 IN PTR mail.bdqn.com. 106 IN PTR study.bdqn.com. 101 IN PTR ns1.bdqn.com. 102 IN PTR ns2.bdqn.com.
  1. 修改文件属组为named!named 进程以 named 用户运行,root 创建的文件默认读不到!
chown :named /var/named/bdqn.com.zone /var/named/192.168.10.arpa 语法校验 named‑checkzone bdqn.com /var/named/bdqn.com.zone named‑checkzone 10.168.192.in‑addr.arpa /var/named/192.168.10.arpa named‑checkconf -z

-z参数会同时检查主配置 + 全部 zone 文件,排错强烈推荐。

  1. systemctl restart named

1.3.3 从域名服务器搭建

从服务器不需要手写 zone 数据文件!自动下载,保存目录/var/named/slaves/。从服务器的named.conf配置:

options { listen‑on port 53 {192.168.10.102; }; directory "/var/named"; allow‑query { any; }; recursion yes; dnssec‑validation no; }; zone "bdqn.com" IN { type slave; masters {192.168.10.101; }; # 写主 DNS 的 IP file "slaves/bdqn.com.zone"; }; zone "10.168.192.in‑addr.arpa" IN { type slave; masters {192.168.10.101; }; file "slaves/192.168.10.arpa"; };

检查语法,启动 named,查看 slaves 目录是否生成同步下来的 zone 文件。日志看同步:tail -f /var/log/messages,看到transfer completed代表同步成功。

1.3.4 主从高可用关键点

  1. 主服务器配置allow‑transfer {从服务器IP;};,拒绝陌生机器扒取全部域名数据。
  2. 主 zone 修改记录,SOA 序列号数字必须增大,否则从服务器不会同步!
  3. 测试高可用:停止主服务器systemctl stop named,客户端填从 DNS,依旧正常解析。
  4. 从服务器不能手动修改 slaves 下的 zone,重启 named 会被主服务器数据覆盖。

1.4 基于 BIND View 构建智能 DNS

1.4.1 原理

普通 DNS:不管哪个客户端,查询同一个域名返回完全一样 IP。View 视图:根据客户端来源 IP 网段,匹配不同视图,每个视图使用独立 zone 文件,返回不同解析结果。

典型场景:内网用户访问域名返回内网 IP,外网用户访问同一个域名返回公网 IP;南北网就近解析。

⚠️ View 匹配从上往下执行,精确网段写在前面,any 写最后;一旦匹配命中就不再往下匹配。每个 view 里面需要配置 zone,如果需要访问外网域名,view 内部必须带上hint 根 zone或者 forwarders 转发。

1.4.2 内外网隔离 View 配置示例

options { listen‑on port 53 { any; }; directory "/var/named"; allow‑query { any; }; recursion yes; dnssec‑validation no; }; 内网视图:精确网段放最前面 view "internal" { match‑clients {192.168.10.0/24; }; zone "bdqn.com" IN { type master; file "bdqn.com.zone.internal"; }; zone "." IN { type hint; file "named.ca"; }; }; 外网视图,剩下所有客户端 view "external" { match‑clients { any; }; zone "bdqn.com" IN { type master; file "bdqn.com.zone.external"; }; };

分别创建bdqn.com.zone.internal内网 zone 文件、bdqn.com.zone.external外网 zone 文件,两套 zone 记录可以完全不一样。修改属组chown :named,全套语法检查:named‑checkconf -z,重启 named。

1.4.4 View 注意事项

  1. 匹配顺序:更精确网段写在前面,any 放最后,顺序错直接解析异常
  2. 每个 view 内部,如果要访问公网域名,必须配置 hint 根 zone 或者 forwarders 转发。
  3. 每个 view 拥有独立 zone,互不干扰。
  4. 不能把 zone 写在 view 外面,全部 zone 必须收纳到对应的 view 大括号里面。

本章总结

  1. DNS 分为正向解析(域名 → IP)、反向解析(IP → 域名);Zone 区域是 DNS 最小管理单元。服务器角色:缓存 DNS(无 zone)、主 DNS(权威 master)、从 DNS(slave 同步主服务器 zone)。
  2. BIND 由named.conf主配置 + zone 区域数据文件组成;配置结束必须执行named‑checkconf -z语法校验,分号;不能丢
  3. 缓存 DNS 依靠递归查询,推荐用 forwarders 转发器替代根 hint,适合企业内网加速。
  4. 主‑从 DNS 高可用:主服务器 zone 修改后SOA 序列号必须递增,从服务器才会同步;主配置allow‑transfer限制同步来源 IP。
  5. View 智能 DNS,根据客户端来源 IP 网段匹配不同视图,实现同一域名对不同客户端返回不同 IP;视图从上往下匹配,精确规则写前面;view 内部需要配置根域保证公网域名解析。

高频命令速查表

表格

功能命令
named 全套语法检查named‑checkconf -z

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询