从零吃透DNS原理!BIND服务完整配置+排错实战(保姆级教程)
摘要:DNS是网络通信的核心基石,也是运维、网工面试高频考点。本文从DNS诞生背景、层级原理、查询机制讲起,全覆盖DNS各类资源记录,手把手带你完成CentOS下BIND服务安装、正向/反向解析配置、权限排错、命令测试,全程无删减实操代码,零基础也能一键复刻落地。
关键词:DNS原理;BIND配置;域名解析;正向反向区域;DNS排错;Linux运维
一、为什么需要DNS?DNS诞生的底层逻辑
1.1 DNS核心作用
DNS(Domain Name System,域名解析系统)被誉为互联网的网络翻译官,核心功能是实现 域名 ↔ IP地址 双向映射解析。
网络中所有设备通信本质依靠IP地址,但纯数字IP晦涩难记、不便于运维管理。DNS通过字符化域名替代IP访问,彻底解决了网络设备寻址繁琐的问题,是所有网页访问、服务调用的基础。
1.2 从HOSTS文件到DNS的迭代历程
互联网前身ARPAnet早期,全网主机数量极少,业界通过单一 HOSTS.txt 静态文件统一维护主机名与IP的对应关系,由NIC(网络信息中心)全权管理。用户修改主机信息后,通过邮件同步给NIC,管理员定期更新全网文件,完全适配小规模网络。
随着TCP/IP协议普及,网络主机、用户数量爆发式增长,静态HOSTS文件的致命缺陷彻底暴露:
-
名称冲突问题:无法约束用户自定义主机名,极易出现域名重复、解析冲突
-
数据一致性差:全网HOSTS文件无法实时同步,本地缓存与真实IP映射频繁错位
-
运维效率极低:人工手动更新、同步,无法适配大规模网络扩容
为解决静态解析的弊端,分布式、可动态同步、层级化的DNS域名解析系统正式诞生,成为互联网标准解析协议。
二、DNS系统架构与域名层级详解
2.1 DNS核心组成
DNS是典型的分布式架构,核心由两大模块构成:
-
域名:网络主机的字符化唯一标识,是用户访问服务的入口(如laofang.cloud、www.baidu.com)
-
DNS解析服务器:核心服务载体,存储域名与IP的资源映射记录,响应客户端解析请求。单台DNS服务器仅存储部分域名记录,通过全网服务器协同完成全局解析。
2.2 域名层级与分类标准
DNS采用树形层级命名空间,从根域向下逐层划分,完整结构:主机名.二级域名.顶级域名.根域,日常访问中末尾的根域「.」默认省略。
2.2.1 核心术语
Domain(域名域):一组域名资源记录的集合,对应DNS子树的全部解析规则,例如 laofang.cloud 就是一个独立域名域。
2.2.2 顶级域名分类(TLD)
顶级域名由IANA(互联网号码分配机构)统一管理委派,分为两大类:
-
通用顶级域(gTLD):按业务场景划分,通用无地域限制,如 .com、.net、.edu、.org
-
国家顶级域(ccTLD):按国家/地区划分,遵循ISO 3166-1标准,如 .cn(中国)、.us(美国)、.uk(英国)
三、DNS核心查询机制(递归+迭代)
DNS解析全程由两种查询方式配合完成,99.9%的互联网解析场景均为「递归+迭代」组合模式,二者分工明确、不可混淆。
3.1 两种查询核心定义
3.1.1 递归查询(RD=1)
参与角色:客户端(手机/电脑) ↔ 本地DNS服务器
核心逻辑:一问到底、全权代办。客户端仅发起1次查询请求,要求本地DNS服务器必须返回最终解析IP或报错结果,不接受中间跳转地址。
3.1.2 迭代查询(RD=0)
参与角色:本地DNS服务器 ↔ 根服务器/顶级服务器/权威服务器
核心逻辑:层层问路、自主查询。上级服务器无对应解析记录时,仅返回下一级服务器地址,由本地DNS持续向下查询,直至获取最终结果。
3.2 完整解析流程(以www.xiaomi.com为例)
-
客户端→本地DNS:发起递归查询,请求解析 www.xiaomi.com IP
-
本地DNS→根服务器:发起迭代查询,根服务器返回 .com 顶级服务器地址
-
本地DNS→.com顶级服务器:发起迭代查询,顶级服务器返回 xiaomi.com 权威服务器地址
-
本地DNS→xiaomi.com权威服务器:发起迭代查询,权威服务器返回最终IP地址
-
本地DNS→客户端:将最终IP结果返回客户端,同时缓存本次解析记录
四、DNS全品类资源记录(RR)详解
资源记录(Resource Record)是DNS服务器存储解析规则的核心数据结构,所有域名解析规则均由各类RR记录组成。
#域名 TTL 类别 记录类型 内容
owner-name TTL class type data
server.laofang.cloud. 300 IN A 192.168.1.10
通用参数说明:(A/AAAA/CNAME/MX/NS/PTR/SOA/TXT 等所有记录类型都遵循该格式,只是type和data的具体含义不同)
| 列名 | 内容 |
|---|---|
| owner-name | 域名 / 拥有者名称 |
| TTL | 生存时间 Time To Live,本地 DNS 缓存这条记录多久,单位:秒 |
| class | 网络类别,IN=Internet,全网 99.9% 域名解析都是 IN |
| type | 资源记录类型,A 记录:IPV4 正向解析 |
| data | 记录数据 / 内容,这条 A 记录的值 |
总表 1:全类型记录一览
| 记录类型 | 通俗核心作用 | 标准格式模板 | 实用示例 | 关键注意事项 & 适用场景 |
|---|---|---|---|---|
| A | 域名→IPv4 地址,网站最基础解析 | 主机名 [TTL] IN A IPv4 | www 30 IN A 10.1.8.200 | 1. 本条 TTL 会覆盖全局缓存;2.30 秒短 TTL 适合 IP 经常改动、服务器割接;3. 静态网站用长 TTL 减轻 DNS 压力 |
| AAAA | 域名→IPv6 地址,适配新一代网络 | 主机名 [TTL] IN AAAA IPv6 | www IN AAAA 2409::xxxx | 家用内网一般不用,公网 IPv6 网站才配置 |
| CNAME | 域名别名,相当于 “快捷方式”,跳转至别的域名 | 主机名 IN CNAME 完整域名. | student IN CNAME client.laofang.cloud. | 1. 末尾小数点不能丢;2. 别名不能无限套别名,最终必须落到 A/AAAA;3. 不能和 A 记录写在同一个主机名;多用于 CDN 加速 |
| PTR | IP 反向查域名,反向解析 | 倒序 IP IN PTR 域名. | 10 IN PTR dns.laofang.cloud. | 1.IPv4 要把 IP 倒过来写,放在 in-addr.arpa 区域;2. 主要给邮件服务器做身份核验、运维排查溯源 |
| NS | 指定谁负责解析这个域名 | @ IN NS DNS 服务器域名. | @ IN NS dns.laofang.cloud. | 声明当前域名的权威DNS服务器,是域名正常解析的基础,每个域名必须配置NS记录 |
| SOA | 区域总规则,给从 DNS 同步定规矩,一个区域仅有 1 条 | 固定 7 段字段 | 配置头部固定声明 | 改解析记录必须改序列号,不然从服务器不会更新数据 |
| MX | 指定收邮件的服务器 | @ IN MX 优先级 邮件域名. | @ IN MX 10 mail.laofang.cloud. | 数字越小,邮箱服务器优先级越高,优先用来收邮件;多台邮箱可以写多条 MX 做备份 |
| TXT | 文本备注,用来做域名身份验证 | 主机名 IN TXT “文本内容” | @ IN TXT "v=spf1 all" | 多用于防垃圾邮件、域名所有权认证、密钥存放 |
| SRV | 定位内网 FTP、数据库等特殊服务,包含端口、优先级、权重信息 | 格式包含优先级、端口、目标域名 | _ldap._tcp IN SRV 10 100 389 ldap.laofang.cloud. | 企业内网搭建服务使用,个人网站基本用不到 |
总表 2:SOA7 个字段通俗详解表
SOA(Start of Authority):每个DNS区域有且仅有一条的核心声明记录,定义区域权威信息、数据同步规则、缓存策略。
1 $TTL 1D
2 @ IN SOA dns.laofang.cloud. root.laofang.cloud. (
3 0 ; serial
4 1D ; refresh
5 1H ; retry
6 1W ; expire
7 3H ) ; minimum
| 字段名称 | 通俗解释 | 实操要求 |
|---|---|---|
MNAME | 主 DNS 服务器,这个区域的 “老大服务器” | 填写权威主服务器完整域名dns.laofang.cloud. |
RNAME | 管理员邮箱,用.替代@ | root.laofang.cloud. = root@laofang.cloud |
Serial 序列号 | 版本号,记录文件的身份证 | 每次修改解析记录必须 + 1,否则从 DNS 不更新 |
Refresh 刷新时间 | 从服务器多久主动找老大同步一次数据 | 内网常用 1 天,公网常用几小时(1D=1天) |
Retry 重试时间 | 同步失败后,隔多久再次尝试同步 | 一般几十分钟,不要设置太短(1H=1小时) |
Expire 过期时间 | 老大服务器失联多久,小弟就停止解析 | 通常 1 周,避免断网后解析瘫痪(1W=1周) |
Minimum 最小 TTL | 查不到域名时,“不存在” 这个结果的缓存时长 | 防止高频恶意查询消耗服务器性能(3H=3小时) |
五、BIND服务架构与核心文件解析
BIND(Berkeley Internet Name Domain)是Linux平台最主流的DNS服务程序,通过named进程提供解析服务,支持权威解析、递归解析、主从同步等全功能。
5.1 核心软件包
-
bind:核心服务包,运行named主进程,提供DNS解析能力
-
bind-utils:工具包,包含dig、nslookup、host等解析测试命令
5.2 核心配置文件全覆盖
-
/etc/named.conf:BIND主配置文件,全局参数、监听、权限、区域定义总入口 -
/etc/named.rfc1912.zones:系统内置标准区域配置,存放本地回环解析规则 -
/etc/named.root.key:根域DNSSEC密钥,用于域名安全校验 -
/etc/rndc.key:服务远程控制密钥,用于rndc热重载、缓存清空 -
/var/named/:区域解析库文件存放目录,所有正向/反向解析规则均在此目录 -
/var/log/messages:BIND服务排错核心日志
5.3 DNSSEC核心配置解析
named.conf中两大安全核心参数,用于抵御DNS劫持、缓存投毒:
-
dnssec-enable yes;:DNSSEC功能总开关,开启域名签名校验能力 -
dnssec-validation yes;:开启全网域名自动签名校验,通过根密钥逐级验证域名合法性
5.4 BIND配置选项
named主要配置文件是/etc/named.conf。 该文件控制BIND的基本操作,由root用户(named组)拥有,具有八进制权限0640,并且具有named_conf_t SELinux类型。配置文件还指定了每个区域的配置文件位置,这些文件通常保存在/var/named中。 配置DNS服务器需要执行以下步骤:
5.4.1 配置地址匹配列表(acl 访问列表)
作用:批量定义 IP 网段,后续监听、放行、黑名单可直接调用列表,简化重复书写
# vim /etc/named.conf
# 定义一个叫 trusted-nets 的组, 包含两个网段: 192.168.10.0/24 和 192.168.20.0/24
acl trusted-nets { 192.168.10.0/24; 192.168.20.0/24; };
acl classroom { 10.1.8.0/24; };
在其值中使用classroom的任何指令都将与10.1.8.0/24网络中的主机匹配。acl语句定义的地址集可以被多个指令引用。
named中内置了4个预定义的ACL
| ACL 名称 | 含义(匹配范围) | 大白话 |
|---|---|---|
none | 不匹配任何主机(拒绝所有) | 谁都不行 |
any | 所有主机、所有 IP | 所有人都能 |
localhost | 本机所有网卡 IP(含 127.0.0.1、::1、物理网卡 IP) | 只能这台机器自己 |
localnets | 本机所有网卡所在的整个网段(含回环网段) | 本机 + 同局域网的机器 |
localhost只匹配本机自己的 IP,是单个地址级别;localnets匹配本机所在的整个网段,是网段级别,范围更大;- 公网权威 DNS 推荐
allow-query { any; },内网 DNS 推荐allow-query { localnets; }更安全。
5.4.2 配置named 侦听的IP地址
作用在/etc/named.conf文件options块中指定许多全局设置。listen-on和listen-on-v6指令,指定了命名监听的接口和端口
示例1:将BIND配置为侦听10.1.8.10 IPv4地址和默认的IPv4回送地址
# vim /etc/named.conf
options {
listen-on port 53 { 127.0.0.1; 10.1.8.10; };
......
};
listen-on 是 “监听哪些本机 IP”
- 127.0.0.1 :只允许本机内部访问 DNS(本机自己用)
- 10.1.8.10 :允许局域网 / 外部机器访问这台服务器的 DNS
示例2:结合acl指令配置
# vim /etc/named.conf
acl interfaces { 127.0.0.1; 10.1.8.10; };
acl interfacesv6 { ::1; 2001:db8:2020::5300; };
options {
listen-on port 53 { interfaces; };
listen-on-v6 port 53 { interfacesv6; };
...output omitted...
};
5.4.3 配置客户端的访问控制
- allow-query,控制所有查询。 默认情况下,allow-query设置为localhost,对于公开权威服务器必须定义 allow-query { any; }; 允许互联网托管者从他们那里获取信息。
- allow-recursion,控制递归查询。 权威服务器不应允许递归查询, 防止服务器被用于DNS放大分布式拒绝服务攻击,并更好地保护其免受缓存中毒攻击。
配置此功能最简单的方法是完全关闭递归:
options {
......
recursion no;
......
};
如果必须允许受信任的客户端执行递归,则可以打开递归并为这些特定主机或网络设置allow-recursion:
options {
......
recursion yes;
allow-recursion { trusted-nets; };
......
};
allow-transfer,控制区域转移(Zone Transfer)。 区域转移允许客户端获取我们区域中所有数据的转储,区域转移应该受到限制,否则攻击者很容易快速获取我们区域中的所有资源记录。
DNS 主从架构中:
- 主DNS:负责写解析记录
- 从DNS:需要从主服务器下载全部解析记录
这个下载动作叫 区域传送(Zone Transfer)
# 就是只允许这些 IP 来下载你的 DNS 数据。
allow-transfer { 允许的IP };
可以使用dig命令查询该区域的AXFR(Zone Transfer)记录:
dig axfr @classroom.laofang.cloud laofang.cloud
#dig DNS 查询工具(来自 bind-utils)
#axfr = Area Transfer = 区域传送= 一次性下载整个域名的所有解析记录
# @classroom.laofang.cloud @ 后面 = 向哪台 DNS 服务器发起请求,这里就是向
classroom.laofang.cloud 这台 DNS 服务器请求
#laofang.cloud要下载 哪个域名区域 的全部记录
5.4.4 配置zone
示例:以下named.conf块将服务器配置为承载laofang.cloud及其相应的反向查找区域8.1.10.in-addr.arpa的主要区域文件。
[root@dns-server ~ 18:59:50]# vim /etc/named.conf
......
options {
# 修改listen-on
listen-on port 53 { 127.0.0.1; 10.1.8.10; };
......
# 修改allow-query
allow-query { any; };
};
......
# 最后添加如下内容
zone "laofang.cloud" IN {
type master;
file "laofang.cloud.zone";
};
zone "8.1.10.in-addr.arpa" IN {
type master;
file "10.1.8.zone";
};
配置说明:
- type,指定服务器角色。
- file,指定相对路径名。 相对路径由 options 块中的 directory 指令设置。
5.4.5 编写区域文件
BIND 应该能够读取这些区域文件,但不能写入它们。 这些文件应归root用户和named组所有,以便守护程序在某种程度上受到损害时不能更改它们。
正向记录,将名称映射到IP地址和其他记录。该区域文件必须具有:
- SOA记录。
- 每个公用名称服务器的NS记录。
- 该区域的其他A,AAAA,CNAME,MX,SRV和TXT记录。
示例:laofang.could域
$TTL 1D ; 全局默认TTL:所有无单独TTL的记录,客户端缓存1天
@ IN SOA dns.laofang.cloud. root.laofang.cloud. ( ; @代表区域的名称,避免重复键入
0 ; serial ; 区域版本序列号,修改记录必须+1,控制从服务器同步
1D ; refresh ; 从服务器主动向主服务器核对更新的间隔:1天
1H ; retry ; 同步失败后,再次重试连接的间隔:1小时
1W ; expire ; 主服务器失联满1周,从服务器停止对外解析
3H ) ; minimum ; 不存在域名的否定缓存时长,无效查询缓存3小时
IN NS dns.laofang.cloud. ; 声明本域名的权威DNS服务器
dns IN A 10.1.8.10 ; dns.laofang.cloud 解析到 10.1.8.10
server IN A 10.1.8.10 ; server.laofang.cloud 解析到 10.1.8.10
student IN CNAME client.laofang.cloud. ; student为client域名别名,跳转解析client的IP
client IN A 10.1.8.11 ; client.laofang.cloud 解析到 10.1.8.11
www 30 IN A 10.1.8.200 ; www.laofang.cloud独立TTL=30秒,解析到10.1.8.200
@ IN MX 10 mail.laofang.cloud. ; 域名默认邮箱服务器,优先级10
mail IN A 10.1.8.253 ; mail.laofang.cloud 解析到 10.1.8.253
任何不以点号结尾的名称均被视为部分主机名,系统自动拼接为完全合格的域名, 换句话说,server等效于 server.laofang.cloud.。
反向记录,将IP地址映射到主机名。该区域文件必须具有:
- SOA记录
- NS记录
- PTR记录
示例:8.1.10.in-addr.arpa区域
$TTL 1D ; 全局默认TTL,无自定义TTL的反向记录统一缓存1天
@ IN SOA dns.laofang.cloud. root.laofang.cloud. (
0 ; serial ;区域序列号,修改记录必须递增,用于主从同步校验
1D ; refresh ;从服务器每日主动查询主服务器是否更新数据
1H ; retry ;同步失败后,每隔1小时重试连接
1W ; expire ;主服务器失联满1周,从服务器停止解析服务
3H ) ; minimum ;无效IP查询的否定缓存时长为3小时
IN NS dns.laofang.cloud. ; 指定该反向域的权威DNS服务器
10 IN PTR server.laofang.cloud. ; IP末尾段10 反向解析指向 server.laofang.cloud
10 IN PTR dns.laofang.cloud. ; IP末尾段10 反向解析指向 dns.laofang.cloud
11 IN PTR client.laofang.cloud. ; IP末尾段11 反向解析指向 client.laofang.cloud
11 IN PTR student.laofang.cloud. ; IP末尾段11 反向解析指向 student.laofang.cloud
200 IN PTR www.laofang.cloud. ; IP末尾段200 反向解析指向 www.laofang.cloud
253 IN PTR mail.laofang.cloud. ; IP末尾段253 反向解析指向 mail.laofang.cloud
- PTR 记录规则:只填写 IP 最后一段数字,系统自动拼接网段,10 对应 IP 10.1.8.10。
六、DNS客户端常用查询命令
6.1 windows
| 命令 | 作用说明 | 典型场景 |
|---|---|---|
ipconfig /displaydns | 显示本机所有 DNS 缓存记录 | 排查 “别人能解析我不能” 的缓存问题 |
ipconfig /flushdns | 清空本机 DNS 缓存 | 改完解析后强制刷新,拿到最新记录 |
ping 域名 | 测试连通性,同时显示解析到的 IP | 快速验证域名解析是否正常 |
tracert 域名 | 路由追踪,每一跳都显示解析 IP | 排查解析正常但访问不通的网络问题 |
6.2 linux
- host(Linux 轻量)
| 用法格式 | 作用说明 | 示例 |
|---|---|---|
host 域名 | 查域名对应 IP(A/AAAA/CNAME) | host www.qq.com |
host -t NS 域名 | 查 NS 记录 | host -t NS huawei.com |
host -t MX 域名 | 查 MX 记录 | host -t MX qq.com |
host -t PTR IP | 反向解析 | host -t PTR 10.1.8.10 |
[root@dns-server ~ 19:37:47]# host -t NS huawei.com
huawei.com name server nsall4th.huawei.cn.
huawei.com name server nsallsec.huawei.com.
huawei.com name server nsall.huawei.com.
huawei.com name server nsall3rd.huawei.cn.
[root@dns-server ~ 19:38:06]# host www.qq.com
www.qq.com is an alias for ins-r23tsuuf.ias.tencent-cloud.net.
ins-r23tsuuf.ias.tencent-cloud.net has address 101.91.42.232
ins-r23tsuuf.ias.tencent-cloud.net has address 101.91.22.57
ins-r23tsuuf.ias.tencent-cloud.net has IPv6 address 240e:e1:a800:120::76
ins-r23tsuuf.ias.tencent-cloud.net has IPv6 address 240e:e1:a800:120::36
- dig(Linux 专业级)
| 用法格式 | 作用说明 | 示例 |
|---|---|---|
dig 域名 | 查 A 记录,输出完整应答头 + 问题 + 回答 | dig www.qq.com |
dig +short 域名 | 只输出 IP,最精简结果 | dig +short www.qq.com |
dig -t MX 域名 | 查 MX 记录 | dig -t MX qq.com |
dig -t NS 域名 | 查 NS 记录 | dig -t NS qq.com |
dig -x IP地址 | 反向解析(IP→域名) | dig -x 10.1.8.10 |
dig @DNS服务器IP 域名 | 指定 DNS 服务器查询 | dig @114.114.114.114 www.qq.com |
dig +trace 域名 | 追踪完整解析链路(根→顶级→权威) | dig +trace www.qq.com |
dig axfr 域名 @主服务器IP | 区域传送,拉取全部记录(主从同步用) | dig axfr laofang.cloud @10.1.8.10 |
[root@dns-server ~ 19:38:57]# dig -t A www.qq.com
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.16 <<>> -t A www.qq.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1444
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.qq.com. IN A
;; ANSWER SECTION:
www.qq.com. 82 IN CNAME ins-r23tsuuf.ias.tencent-cloud.net.
ins-r23tsuuf.ias.tencent-cloud.net. 107 IN A 101.91.22.57
ins-r23tsuuf.ias.tencent-cloud.net. 107 IN A 101.91.42.232
;; Query time: 25 msec
;; SERVER: 223.5.5.5#53(223.5.5.5)
;; WHEN: 三 8月 05 19:39:31 CST 2026
;; MSG SIZE rcvd: 119
- wohis查询域名信息
| 命令 | 作用说明 | 示例 |
|---|---|---|
whois 域名 | 查询域名注册信息(注册商、注册人、过期时间) | whois www.qq.com |
# 先安装查询软件
[root@dns-server ~ 19:40:46]# yum -y install whois
[root@dns-server ~ 19:41:05]# whois www.qq.com
No match for "WWW.QQ.COM".
>>> Last update of whois database: 2026-08-05T11:40:58Z <<<
NOTICE: The expiration date displayed in this record is the date the
registrar's sponsorship of the domain name registration in the registry is
currently set to expire. This date does not necessarily reflect the expiration
date of the domain name registrant's agreement with the sponsoring
registrar. Users may consult the sponsoring registrar's Whois database to
view the registrar's reported date of expiration for this registration.
TERMS OF USE: You are not authorized to access or query our Whois
database through the use of electronic processes that are high-volume and
automated except as reasonably necessary to register domain names or
modify existing registrations; the Data in VeriSign Global Registry
Services' ("VeriSign") Whois database is provided by VeriSign for
information purposes only, and to assist persons in obtaining information
about or related to a domain name registration record. VeriSign does not
guarantee its accuracy. By submitting a Whois query, you agree to abide
by the following terms of use: You agree that you may use this Data only
for lawful purposes and that under no circumstances will you use this Data
to: (1) allow, enable, or otherwise support the transmission of mass
6.3 双平台通用
| 用法格式 | 作用说明 | 示例 |
|---|---|---|
nslookup 域名 | 查域名对应的 IP(默认 A 记录) | nslookup www.qq.com |
nslookup 域名 DNS服务器IP | 指定 DNS 服务器查询 | nslookup www.qq.com 114.114.114.114 |
nslookup -type=MX 域名 | 查邮件交换记录 | nslookup -type=MX qq.com |
nslookup -type=NS 域名 | 查权威 DNS 服务器 | nslookup -type=NS qq.com |
交互模式:输入nslookup回车,再set q=类型 | 切换查询类型,连续查多个域名 | > set q=mx → > qq.com |
# linux 查询
[root@dns-server ~ 19:42:13]# nslookup www.qq.com
Server: 223.5.5.5
Address: 223.5.5.5#53
Non-authoritative answer:
www.qq.com canonical name = ins-r23tsuuf.ias.tencent-cloud.net.
Name: ins-r23tsuuf.ias.tencent-cloud.net
Address: 101.91.42.232
Name: ins-r23tsuuf.ias.tencent-cloud.net
Address: 101.91.22.57
Name: ins-r23tsuuf.ias.tencent-cloud.net
Address: 240e:e1:a800:120::36
Name: ins-r23tsuuf.ias.tencent-cloud.net
Address: 240e:e1:a800:120::76
# windows 查询
C:\Users\Administrator>nslookup www.qq.com
服务器: a.center-dns.jsinfo.net
Address: 218.2.135.1
非权威应答:
名称: ins-r23tsuuf.ias.tencent-cloud.net
Addresses: 240e:e1:a800:120::76
240e:e1:a800:120::36
101.91.22.57
101.91.42.232
Aliases: www.qq.com
七、实战环境搭建(CentOS7)
7.1 环境规划
-
DNS服务端(dns-server):10.1.8.10/24
-
DNS客户端(dns-client):10.1.8.11/24
7.2 基础环境配置
7.2.1 服务端配置
# 修改主机名
hostnamectl set-hostname dns-server
# 配置静态IP
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 autoconnect yes
nmcli connection up ens33
# 安装BIND服务与工具
yum install -y bind bind-utils
# 放行DNS防火墙端口
firewall-cmd --add-service=dns --permanent
firewall-cmd --reload
7.2.2 客户端配置
# 修改主机名
hostnamectl set-hostname dns-client
# 配置静态IP与DNS指向服务端
nmcli connection modify ens33 ipv4.method manual ipv4.addresses 10.1.8.11/24 ipv4.gateway 10.1.8.2 ipv4.dns 10.1.8.10 autoconnect yes
nmcli connection up ens33
7.3 主配置文件修改(/etc/named.conf)
修改监听地址、查询权限,适配局域网解析:
options {
listen-on port 53 { 127.0.0.1; 10.1.8.10; }; # 监听本机DNS端口
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; }; # 允许所有客户端查询
recursion yes; # 开启递归查询
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
7.4 配置正向+反向解析区域
7.4.1 定义区域规则
在named.conf末尾添加自定义区域:
# 正向解析区域:laofang.cloud
zone "laofang.cloud" IN {
type master;
file "laofang.cloud.zone";
};
# 反向解析区域:10.1.8.0网段
zone "8.1.10.in-addr.arpa" IN {
type master;
file "10.1.8.zone";
};
7.4.2 创建正向区域文件
# 复制模板文件创建配置文件(配置文件权限为0640,不然会启动失败)
cp -a /var/named/named.localhost /var/named/laofang.cloud.zone
# 编辑正向解析规则
vim /var/named/laofang.cloud.zone
完整正向区域内容:
$TTL 1D
@ IN SOA dns.laofang.cloud. root.laofang.cloud. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS dns.laofang.cloud.
dns IN A 10.1.8.10
server IN A 10.1.8.10
student IN CNAME client.laofang.cloud.
client IN A 10.1.8.11
www 30 IN A 10.1.8.200
@ IN MX 10 mail.laofang.cloud.
mail IN A 10.1.8.253
7.4.3 创建反向区域文件
cp -a /var/named/named.loopback /var/named/10.1.8.zone
# 编辑反向解析规则
vim /var/named/10.1.8.zone
完整反向区域内容:
$TTL 1D
@ IN SOA dns.laofang.cloud. root.laofang.cloud. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS dns.laofang.cloud.
10 IN PTR server.laofang.cloud.
10 IN PTR dns.laofang.cloud.
11 IN PTR client.laofang.cloud.
11 IN PTR student.laofang.cloud.
200 IN PTR www.laofang.cloud.
253 IN PTR mail.laofang.cloud.
八、配置校验与服务启动
8.1 语法校验(必做!规避启动报错)
# 校验主配置文件
named-checkconf
# 校验正向区域文件
named-checkzone laofang.cloud /var/named/laofang.cloud.zone
# 校验反向区域文件
named-checkzone 8.1.10.in-addr.arpa /var/named/10.1.8.zone
8.2 启动服务并设置开机自启
systemctl enable named --now
systemctl status named
# 如果系统开启了selinux功能,执行下面命令设置文件标签
chcon -t named_zone_t /var/named/*.zone
# 查询selinux功能,当前处于强制开启模式,会主动拦截不符合安全策略的访问、权限操作,日常运维中端口放行、网站访问、挂载目录、NFS 共享等问题经常是它拦截导致
[root@server ~ 22:54:28]# getenforce
Enforcing
九、生产避坑核心注意事项
-
域名后缀必带点:所有FQDN域名末尾必须加「.」,否则解析路径错乱
-
修改记录必改序列号:更新zone解析规则后,必须递增Serial值,主从架构才能同步
-
权限严格管控:zone文件权限640、属主root:named,权限过大会导致服务启动失败
-
TTL灵活配置:静态业务用长TTL减少解析开销,测试/变更业务用短TTL快速生效
-
禁止CNAME嵌套NS/MX:NS、MX记录值必须为真实A记录域名,不能指向CNAME
-
DNSSEC适配内网:内网无签名域名,可单独对内网zone关闭dnssec-validation,避免解析失败
十、DNS 面试高频必考总结(精简背诵版)
11.1 递归查询与迭代查询区别(必问)
-
递归查询:客户端 → 本地DNS。客户端只发一次请求,DNS服务器必须返回最终结果,全权代办。RD=1。
-
迭代查询:本地DNS → 根/顶级/权威服务器。对方不会帮你查完,只会返回下一级地址,自己继续问路。RD=0。
11.2 SOA 记录七个字段作用(面试核心)
每个 zone 有且仅有一条 SOA,是区域的“身份证+同步规则”。
-
MNAME:主DNS服务器(本区域权威服务器)
-
RNAME:管理员邮箱(. 替代 @)
-
Serial:序列号,改配置必须加 1,否则从库不更新
-
Refresh:从服务器多久主动同步一次主服务器
-
Retry:同步失败的重试间隔
-
Expire:主服务器失联多久,从服务器停止解析服务
-
Minimum:域名不存在(NXDOMAIN)的缓存时间
11.3 常见 DNS 记录类型面试题
-
A:域名 → IPv4
-
AAAA:域名 → IPv6
-
CNAME:域名别名,不能与 A 记录共存,NS/MX 不能指向 CNAME
-
NS:指定域名由哪台 DNS 负责解析
-
MX:邮件服务器,数值越小优先级越高
-
PTR:IP 反查域名,多用于邮件、安全审计
-
TXT:域名校验、SPF 防垃圾邮件
11.4 TTL 作用与生产使用场景
-
TTL 越大:缓存时间长、解析速度快、压力小,适合静态稳定业务
-
TTL 越小:缓存快速过期,适合割接、测试、IP 变更频繁的业务(如文中 30s TTL)
11.5 DNS 解析完整流程(面试口述标准答案)
客户端先查本地 hosts & 缓存,没有则向本地DNS发起递归查询;本地DNS依次向根服务器、顶级服务器、权威服务器发起迭代查询,最终获取IP,返回客户端并缓存结果。
11.6 BIND 服务常见报错原因(排错面试)
-
区域文件末尾缺少 . 导致域名拼接错误
-
修改解析记录未递增序列号,主从不同步
-
文件权限不是 root:named 640,服务读取失败
-
CNAME、NS、MX 规则混用导致解析环路
-
DNSSEC 开启但内网域名无签名,造成解析超时
&spm=1001.2101.3001.5002&articleId=163511877&d=1&t=3&u=b6089aa1884c46d791637a4ccdf61724)
3931

被折叠的 条评论
为什么被折叠?



