CentOS BIND DNS完整实战:域名解析原理+主从服务器+排错全流程
前言
上网输入域名就能访问网站,背后全靠DNS域名解析服务。早期互联网仅靠HOSTS文件维护域名IP映射,规模暴涨后出现名称冲突、同步困难等问题,DNS分布式架构应运而生。本文完整讲解DNS底层原理、域名层级、各类资源记录、Linux BIND自建权威服务器、缓存DNS(Unbound/Dnsmasq)、全套查询排错命令,附带实验拓扑与完整可复制配置,适合运维自学、课堂实操。
一、DNS诞生与核心作用
1.1 早期HOSTS文件缺陷
互联网前身ARPAnet时代,所有主机名与IP对应关系统一存放在HOSTS.txt,由NIC统一维护。
随着联网设备激增,出现两大致命问题:
分布式DNS系统完美解决以上痛点。
1.2 DNS核心功能
DNS全称Domain Name System域名解析系统,核心作用:
把人类易记的字符域名(www.huawei.com),转换为计算机通信使用的IP地址,实现域名↔IP双向映射。

上图流程:
1.3 DNS系统组成
二、DNS域名层级结构
2.1 域名分类标准
- 通用gTLD:.com商业、.edu教育、.org组织、.gov政府;
- 国家ccTLD:.cn中国、.uk英国、.us美国;

完整域名格式示例:www.huawei.com.(末尾.代表根域)
三、DNS两种查询方式
DNS查询分为递归查询、迭代查询,互联网标准流程是两者结合。
3.1 递归查询
客户端只发1次请求,本地DNS全权替客户端完成所有查询,直接返回最终IP或报错。
参与角色:用户PC ↔ 本地运营商/自建DNS服务器,请求头部RD=1。
3.2 迭代查询
DNS服务器查不到完整结果,仅返回下一级服务器地址,由当前DNS继续逐级询问。
参与角色:本地DNS ↔ 根服务器/顶级域/权威服务器,请求头部RD=0。
3.3 全网标准查询流程(以www.xiaomi.com为例)
四、DNS核心资源记录RR
资源记录是DNS服务器存储域名信息的最小单元,统一格式:
域名 TTL IN 记录类型 数据
- TTL:缓存生存时间(秒);
- IN:互联网通用类别;
4.1 A记录(IPv4正向解析)
域名映射IPv4地址
server.liuyifei.cloud. 86400 IN A 172.25.254.254
4.2 AAAA记录(IPv6正向解析)
域名映射IPv6地址
a.root-servers.net. 604800 IN AAAA 2001:503:ba3e::2:30
4.3 CNAME别名记录
将域名指向另一个标准域名,多用于CDN、业务切换;
禁止CNAME嵌套多层,避免解析延迟。
www-dev.liuyifei.cloud. 30 IN CNAME lab.liuyifei.cloud.
4.4 PTR反向解析记录
IP反向查询对应主机名,用于邮件反垃圾、服务器审计;
IPv4格式:反向IP.in-addr.arpa,IPv6:ip6.arpa。
4.0.41.198.in-addr.arpa. 785 IN PTR a.root-servers.net.
4.5 NS名称服务器记录
标记当前域名由哪台DNS服务器负责权威解析,一个域至少2台NS做冗余。
laogao.cloud. 86400 IN NS dns.liuyifei.cloud.
4.6 SOA起始授权记录
每个区域文件必须唯一一条,定义主服务器、管理员邮箱、区域同步周期:
laogao.cloud. 86400 IN SOA dns.liuyifei.cloud. root.liuyifei.cloud. 2015071700 3600 300 604800 60
字段释义:序列号、刷新时间、重试间隔、过期时长、否定缓存TTL。
4.7 MX邮件交换记录
指定域名邮件接收服务器,数字越小优先级越高。
laogao.cloud. 86400 IN MX 10 mail.liuyifei.cloud.
laogao.cloud. 86400 IN MX 20 dns.liuyifei.cloud.
4.8 TXT文本记录
用于SPF反垃圾邮件、域名所有权验证、DKIM签名。
4.9 SRV服务定位记录
标记域内LDAP、FTP等业务服务端口与主机。
五、Linux DNS查询实操命令
Windows客户端命令
Linux通用工具
[root@dns-client ~]# host -t NS huawei.com
[root@dns-client ~]# host www.qq.com
[root@dns-client ~]# host -t MX qq.com
# 完整查询
dig -t A www.qq.com
# 仅输出精简IP
dig +short www.qq.com
# 只保留回答段
dig +nocmd +noall +answer www.qq.com
# 指定DNS服务器查询
dig @114.114.114.114 www.qq.com
六、DNS服务器两大类型
仅递归查询、缓存解析结果,不管理自定义域名,内网网关、虚拟机常用。
自建域名解析库,对外提供本域标准答案,分主服务器master、从服务器slave;
从服务器通过区域传输AXFR同步主服务器全部记录,做高可用冗余。
七、CentOS BIND权威DNS完整部署实验
7.1 实验节点规划
| dns-server | 10.1.8.10/24 | BIND主DNS服务器 |
| dns-client | 10.1.8.11/24 | 测试客户端 |
7.2 服务器基础环境配置
# 修改主机名
hostnamectl set-hostname dns-server
# 静态网卡配置
nmcli connection modify ens33 ipv4.method manual ipv4.addresses 10.1.8.10/24 ipv4.gateway 10.1.8.2 ipv4.dns 10.1.8.2
nmcli connection up ens33
客户端同步修改IP为10.1.8.11。
7.3 安装BIND软件
yum install -y bind bind-utils
# 核心文件路径
# 主配置:/etc/named.conf
# 区域文件目录:/var/named
# 服务日志:/var/log/messages
软件说明:
- bind:named服务主程序;
- bind-utils:dig/host/nslookup全套查询工具。
7.4 主配置文件/etc/named.conf详解
acl classroom { 10.1.8.0/24; };
内置默认acl:any/localhost/localnets/none
2. listen-on:指定本机监听DNS的IP端口
options {
listen-on port 53 { 127.0.0.1; 10.1.8.10; };
allow-query { any; };
recursion yes;
allow-recursion { classroom; };
allow-transfer { none; }; # 禁止任意服务器拉取区域数据
};
参数说明:
- allow-query:允许谁发起解析;
- recursion:是否开启递归;
- allow-transfer:限制区域传输,防止域名记录泄露。
7.5 定义正向/反向区域
文件末尾添加zone配置:
zone "liuyifei.cloud" IN {
type master;
file "liuyifei.cloud.zone";
};
# 反向解析区域 10.1.8网段
zone "8.1.10.in-addr.arpa" IN {
type master;
file "10.1.8.zone";
};
7.6 创建区域模板文件
# 复制系统标准模板
cp /var/named/named.localhost /var/named/liuyiufei.cloud.zone
cp /var/named/named.loopback /var/named/10.1.8.zone
# 修改权限与属主
chmod 640 /var/named/*.zone
chown root:named /var/named/*.zone
# SELinux标签修复
chcon -t named_zone_t /var/named/*.zone
正向区域文件 /var/named/laogao.cloud.zone
$TTL 1D
@ IN SOA dns.laogao.cloud. root.laogao.cloud. (
20260809 ;序列号每次修改+1
1D ;刷新
1H ;重试
3H ;过期
15M ;否定缓存
)
IN NS dns.liuyifei.cloud.
dns IN A 10.1.8.10
server IN A 10.1.8.10
client IN A 10.1.8.11
student IN CNAME client.liuyifei.cloud.
www IN A 10.1.8.200
@ IN MX 10 mail.liuyifei.cloud.
mail IN A 10.1.8.253
反向区域文件 /var/named/10.1.8.zone
$TTL 1D
@ IN SOA dns.laogao.cloud. root.laogao.cloud. (
20260809
1D
1H
1W
3H
)
IN NS dns.liuyifei.cloud.
10 IN PTR dns.liuyifei.cloud.
11 IN PTR client.liuyifei.cloud.
200 IN PTR www.liuyifei.cloud.
253 IN PTR mail.liuyifei.cloud.
7.7 配置语法校验(必做,防止启动失败)
# 校验主配置
named-checkconf
# 校验正向区域
named-checkzone liuyifei.cloud /var/named/liuyifei.cloud.zone
# 校验反向区域
named-checkzone 8.1.10 /var/named/10.1.8.zone
7.8 启动服务+防火墙放行53端口
systemctl enable named –now
# 放行DNS UDP/TCP 53
firewall-cmd –add-service=dns –permanent
firewall-cmd –reload
# 实时查看服务日志排错
journalctl -f -u named
7.9 客户端测试解析
客户端修改DNS为10.1.8.10:
nmcli connection modify ens33 ipv4.dns 10.1.8.11
nmcli connection up ens33
# 测试正向
ping www.liuyifei.cloud
dig student.liuyifei.cloud
# 测试反向解析
dig -x 10.1.8.10
# 查询MX邮件记录
dig -t MX liuyifei.cloud
八、拓展自学:缓存DNS服务器
8.1 Unbound(企业专用缓存DNS)
轻量化递归缓存服务,隔离内网客户端公网查询,支持ACL黑白名单。
安装配置核心命令:
yum install -y unbound
unbound-checkconf # 校验配置
systemctl enable unbound –now
unbound-control dump_cache # 导出缓存
unbound-control flush www.liuyifei.cloud # 清空单域名缓存
8.2 Dnsmasq(家用/小型机房轻量工具)
集成DNS缓存+DHCP服务,适合虚拟机、小型局域网;
特色功能:自定义域名劫持、分线路上游DNS、广告屏蔽。
核心配置参数:
server=/cn/114.114.114
server=/google.com/8.8.8.8
address=/ad.com/127.0.0.1 #屏蔽广告域名
网硕互联帮助中心



评论前必须登录!
注册