# DNS 域名解析服务
# 1. DNS 基本概述
# 1.1 为什么需要域名
在互联网中,使用 IP 地址与服务器进行通信根本行不通,原因如下:
- 1、不好记忆,例如:学校官网的 IP 地址是 "39.104.16.126" ,难以记忆;
- 2、IP 地址会经常变更,所以通过 IP 地址去访问某台机器就会发生访不到的问题;
此时 DNS 协议就应运而生了,那 DNS 解决了什么问题?DNS 主要用来管理域名(比较好记忆的字符)与 IP 地址(比较难记忆)的对应关系表。
# 1.2 什么是 DNS
DNS(Domain Name System) 是 ” 域名系统 “英文缩写,它所提供的服务是用来将域名转换为 IP 地址的工作。 DNS 就是一位” 翻译官 “,它的基本工作原理可以用下图来表示;

# 1.3 DNS 域名结构
由于因特网的用户数量较多,所以因特网在命名时采用的是层次树状结构的命名方法。
- 1. 互联网中的域名是有结构有规划的;
- 2. 由于域名进行了分级,在进行域名和 IP 地址解析时能更容易找到;
- 3. 其次域名具备全球唯一性;

# 1.4 域名分类
根域:知道所有顶级域名服务器的域名和地址全世界只有 13 组根服务器,其中 10 台设置在美国,另外的三台设置与英国,瑞典,日本;
顶级域:知道所有顶级域名服务器下注册的所有二级域名的 IP 地址。
顶级域有两种:通用域 (com) 域和国家域 (cn【包括 hk/tw】、jp)。
顶级域名由 ICANN (互联网名称与数字地址分配机构)委任的注册机构负责运行。
二级域:负责一个区的域名服务器 (hmallleasing.com)
- 无需到 ICANN 进行申请,只需要到运行顶级域的注册机构(阿里、腾讯)去申请即可。
- 如果申请的域名没有被注册,也没有被注册为商标,仅需要缴纳一笔年费即可得到心仪的域名。
三级域或主机名:根据服务器所提供的业务功能,选择配置对应的主机名称解析记录,比如(www、ops)
# 1.5 DNS 查询原理
DNS 查询的结果通常会在本地域名服务器中进行缓存,如果本地域名服务器中有缓存的情况下,则会跳过如下 DNS 查询步骤,很快返回解析结果。
下面的示例则概述了本地域名服务器没有缓存的情况下, DNS 查询所需的步骤:
- 1、用户在浏览器中输入 example.com , 则由本地域名服务器开始进行递归查询。
- 2、本地域名服务器采用迭代查询的方法,向根域名服务器进行查询。
- 3、根域名服务器告诉本地域名服务器,下一步应该查询的顶级域名服务器 .TLD 的 IP 地址。
- 4、本地域名服务器向顶级域名服务器 .com TLD 进行查询。
- 5、.com TLD 服务器告诉本地域名服务器,下一步查询 example.com 权威域名服务器的 IP 地址。
- 6、本地域名服务器向 example.com 权威域名服务器发送查询。
- 7、example.com 权威域名服务器告诉本地域名服务器所查询的主机 IP 地址。
- 8、本地域名服务器最后把查询的 IP 地址响应给浏览器。

# 1.5.1 递归查询
递归查询是指 DNS 服务器在收到用户发起的请求时,必须向用户返回一个准确的查询结果。
如果 DNS 服务器本地没有存储与之对应的信息,则该服务器需要询问其他服务器,并将返回的查询结构提交给用户。
# 1.5.2 迭代查询
迭代查询是指 DNS 服务器在收到用户发起的请求时,并不直接回复查询结果,而是告诉另一台 DNS 服务器的地址,用户再向这台 DNS 服务器提交请求,这样依次反复,直到返回查询结果。
# 1.6 DNS 解析类型
# 1.6.1 A
- A 记录可实现将域名指向 IP 地址,也称为正向解析;
- 正向解析:域名 --> DNS 服务返回 IP;

# 1.6.2 PTR
- PTR 记录可以实现 IP 查找域名,也称为反向解析;
- 反向解析: IP-->DNS 服务返回域名;

# 1.6.3 CNAME
- 当需要将域名指向另一个域名,再由另一个域名提供 IP 地址,就需要添加 CNAME 记录;
- 最常用 CNAME 的场景有 WAF (Web Application Firewall)、CDN;

# 1.6.4 NS
- 1、客户端查询 DNS 服务,如当前 DNS 无法提供权威解析,则返回一条 NS 记录;
- 2、客户端在通过 NS 记录中提供的 DNS 权威服务器进行解析;

# 1.6.5 MX
MX 记录用于说明哪台服务器是当前区域的邮件服务器,包含内容:
- name:域名
- IN MX:表示是邮件服务器的记录
- 数字:代表优先级
- 邮件服务器的完整域名:FQDN
# 1.7 企业自建 DNS 方式
企业常规做法:购买域名、完成 ICP 备案,并使用公网 DNS 服务(万网..)进行免费(付费)解析。
为什么需要自建 DNS?
- 1、内网 web 服务,例如: jenkins、jumpserver、wiki 等,不适合解析至公网;
- 2、内网中间件服务 db、mq 等,由于会经常迁移或扩缩容,应该使用域名对外提供,便于维护;
- 3、服务器都有 hostname , hostname 应该设置为 FQDN ,如何维护主机名和主机的内网 IP 的关系;
综上:我们需要构建至少一套企业内部的 DNS 服务;
# 2. BIND 基础应用
# 2.1 什么是 BIND
BIND (由美国加州大学开发并且维护的)、BIND 是一个开源、稳定、且应用广泛的 DNS 服务。
- 开源:指 BIND 服务源代码是开放的;
- 稳定:指 BIND 服务运行非常稳定;
- 广泛:政府企业、单位机构、学校、等;
# 2.2 BIND 的组成
BIND 提供(域名解析服务、权威域名服务、DNS 调试工具)
- 域名解析服务:将域名解析为 IP 地址;
- 权威域名服务:能从该服务器查询到完整域名对应的 IP 地址,则这台服务器就算权威解析;
- DNS 调试工具:主要提供 DNS 客户端调试工具,供客户端使用;
# 2.3 BIND 服务实战
# 2.3.1 BIND 环境准备
| 系统版本 | 外网地址 | 内网地址 | 功能及作用 |
|---|---|---|---|
| Centos7 | eth0:192.168.40.91 | eth1:172.16.1.91 | DNS-Master |
| Centos7 | eth0:192.168.40.92 | eth1:172.16.1.92 | DNS-Slave |
| Centos7 | eth0:192.168.40.93 | eth1:172.16.1.93 | DNS-Son【子域】 |
# 2.3.2 BIND 服务安装
Bind 的安装非常简单,只需要通过 yum 即可完成安装;
- 1、bind 提供主程序包;
- 2、bind-utils 提供工具包;
[root@dns-master ~]# yum install bind bind-utils -y | |
[root@dns-master ~]# systemctl start named && systemctl enable named | |
[root@dns-master ~]# rndc-confgen -r /dev/urandom -a | |
[root@dns-master ~]# chown root:named /etc/rndc.key | |
[root@dns-master ~]# chmod 640 /etc/rndc.key | |
[root@dns-master ~]# systemctl restart named |
# 2.3.3 BIND 配置文件
- 主配置文件格式
- options {} :全局选项(监听端口、数据文件存储位置、缓存位置、权限等)
- logging {} :服务日志选项
- zone . {}:自定义区域配置
- include:包含别的文件
- 主配置文件注意事项
- 语法非常严格;
- 文件权限属主 root ,属组 named ,文件权限 640
- 配置文件解析
[root@dns-master ~]# cat /etc/named.conf | |
options { | |
// ipv4监听地址及端口 | |
listen-on port 53 { any; }; | |
// ipv6监听地址及端口 | |
listen-on-v6 port 53 { ::1; }; | |
// 区域配置存储目录 | |
directory "/var/named"; | |
// DNS解析过内容的缓存文件 | |
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"; | |
recursing-file "/var/named/data/named.recursing"; | |
secroots-file "/var/named/data/named.secroots"; | |
// 允许谁本台DNS发起查询请求(localhost|ip|any) | |
allow-query { any; }; | |
/* | |
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion. | |
- If you are building a RECURSIVE (caching) DNS server, you need to enable | |
recursion. | |
- If your recursive DNS server has a public IP address, you MUST enable access | |
control to limit queries to your legitimate users. Failing to do so will | |
cause your server to become part of large scale DNS amplification | |
attacks. Implementing BCP38 within your network would greatly | |
reduce such attack surface | |
*/ | |
//递归查询 | |
recursion yes; | |
//安全校验相关的 | |
dnssec-enable yes; | |
//安全校验相关的 | |
dnssec-validation yes; | |
/* Path to ISC DLV key */ | |
bindkeys-file "/etc/named.root.key"; | |
managed-keys-directory "/var/named/dynamic"; | |
pid-file "/run/named/named.pid"; | |
session-keyfile "/run/named/session.key"; | |
}; | |
// 控制日志输出的级别以及输出的位置 | |
logging { | |
channel default_debug { | |
file "data/named.run"; | |
severity dynamic; | |
}; | |
}; | |
//默认可以对任何域名提供解析服务,因为named.ca中存储的是全球根域服务器; | |
zone "." IN { | |
type hint; | |
file "named.ca"; //区域配置文件名称 | |
}; | |
//包含其他文件 | |
include "/etc/named.rfc1912.zones"; | |
include "/etc/named.root.key"; |
# 2.3.4 客户端验证 DNS 解析的配置
1. 配置 DNS 服务器指向,在 /etc/resolv.conf 里配置 dns 的 IP 地址
[root@client ~]# cat /etc/resolv.conf | |
# Generated by NetworkManager | |
nameserver 192.168.40.91 |
- 使用 ping 命令验证解析
[root@client ~]# ping www.baidu.com | |
PING www.a.shifen.com (183.2.172.177) 56(84) bytes of data. | |
64 bytes from 183.2.172.177 (183.2.172.177): icmp_seq=1 ttl=128 time=15.5 ms | |
64 bytes from 183.2.172.177 (183.2.172.177): icmp_seq=2 ttl=128 time=12.2 ms |
# 2.4 自定义区域
自定义域分为如下两类:
主机域(内网)
- 1、主机域其实是一个假域;
- 2、主机域其实是不能解析到互联网上;
- 3、主机域它只对局域网(内网)提供服务;
业务域(外网)
- 1、业务域一般都是真实可用的;
- 2、业务域则为一个真正需要对外提供服务的域名;
# 2.4.1 自定义区域配置文件解析
- 区域 zone 文件定义在 /etc/named.conf 配置;
- 也可以配置在自定义的其他文件里,并在 named.conf 里 include
- 注意文件的权限,属主 root 属组 named 文件权限 640
zone "hmallleasing.com" IN { | |
type master|slave; // 自定义区域类型 | |
file /path/to/zonefile; // 绝对路径和相对路径 | |
allow-update {ip|none}; // 允许哪个ip可以使用nsupdate动态更新区域文件 | |
}; |
# 2.4.2 自定义区域数据库文件
范例以及编写注意事项:
- 1、严格注意语法书写,其格式非常严格;
- 2、记录不准许折行书写;
- 3、单行记录开头不准许空格或 tab 开头;
[root@dns-master ~]# cat /var/named/example.com.zone | |
$TTL 600 ; DNS失效时间,单位秒; | |
hmallleasing.com. IN SOA ns.hmallleasinge.com. xuyong.hmallleasing.com. ( | |
; 区域名称 IN SOA dns.hmallleasing.com. 管理员邮箱 | |
; 区域名称可以使用过@表示,@表示当前域 | |
2021041514 ; 序列号(serial number) 十进制,不能超过10位,通常使用日期时间戳,例如2018121601 | |
10800 ; 刷新时间(refresh time) 即每隔多久到主服务器检查一次 | |
900 ; 重试时间(retry time) 即刷新不成功多久后重试,应该小于refresh time | |
604800 ; 过期时间(expire time) 当辅助DNS无法联系主DNS时,辅助DNS在多长时间内认为其缓存是有效的。 | |
86400 ; 权威应答的ttl(netgative answer ttl) ;缓存DNS服务器可以缓存记录多长时间 | |
) | |
; 给客户端返回NS记录,hmallleasing.com. 域名由哪几台权威服务器提供解析 | |
hmallleasing.com. IN NS ns1.hmallleasing.com. | |
hmallleasing.com. IN NS ns2.hmallleasing.com. | |
; A记录,配置权威域名的真实IP地址; | |
ns1.hmallleasing.com. IN A 172.16.1.91 | |
ns2.hmallleasing.com. IN A 172.16.1.92 | |
; 真正的域名解析 | |
www.hmallleasing.com. IN A 1.1.1.1 | |
web.hmallleasing.com. IN A 2.2.2.2 |
# 2.5 BIND 增加 A 记录正向解析实战
用户通过 DNS 服务器 172.16.1.91 解析 www.hmalleasing.com
- 1、添加 hmallleasing.com 区域配置文件
- 2、添加区域数据库文件,配置 NS 记录,返回 DNS 权威服务器地址
- 3、该域的 DNS 权威服务器为 172.16.1.91
- 4、添加该域的 A 记录解析
# 2.5.1 新增区域配置文件
1. 在主配置文件 /etc/named.conf,新增一个 hmallleasing.com 区域配置
[root@dns-master ~]# cat /etc/named.conf | |
... | |
options { | |
// ipv4监听地址及端口 | |
listen-on port 53 { any; }; | |
... | |
// 允许谁本台DNS发起查询请求(localhost|ip|any) | |
allow-query { any; }; | |
... | |
//自行配置权威域名解析hmallleaing.com | |
zone "hmallleasing.com" IN { | |
type master; | |
file "hmallleasing.com.zone"; //具体解析记录配置存储至哪个文件 | |
}; | |
... |
2. 检查配置文件语法是否正常
[root@dns-master ~]# named-checkconf |
# 2.5.2 新增区域数据库文件
1. 添加区域数据库文件
[root@dns-master ~]# cat /var/named/hmallleasing.com.zone | |
$TTL 600 ; DNS失效时间,单位秒; | |
hmallleasing.com. IN SOA ns.hmallleasing.com. xuy.nf-leasing.com. ( | |
; 区域名称 IN SOA dns.hmallleasing.com. 管理员邮箱 | |
; 区域名称可以使用过@表示,@表示当前域 | |
2025092018 ; 序列号(serial number) 十进制,不能超过10位,通常使用日期时间戳,例如2018121601 | |
10800 ; 刷新时间(refresh time) 即每隔多久到主服务器检查一次 | |
900 ; 重试时间(retry time) 即刷新不成功多久后重试,应该小于refresh time | |
604800 ; 过期时间(expire time) 当辅助DNS无法联系主DNS时,辅助DNS在多长时间内认为其缓存是有效的。 | |
86400 ; 权威应答的ttl(netgative answer ttl) ;缓存DNS服务器可以缓存记录多长时间 | |
) | |
; 给客户端返回NS记录,hmallleasing.com. 域名由哪几台权威服务器提供解析 | |
hmallleasing.com. IN NS ns1.hmallleasing.com. | |
; A记录,配置权威域名的真实IP地址; | |
ns1.hmallleasing.com. IN A 172.16.1.91 | |
; 真正的域名解析 | |
www.hmallleasing.com. IN A 1.1.1.1 | |
web.hmallleasing.com. IN A 2.2.2.2 |
2. 检查区域数据库文件
[root@dns-master ~]# named-checkzone hmallleasing.com /var/named/hmallleasing.com.zone | |
zone hmallleasing.com/IN: loaded serial 2025092018 | |
OK |
3. 重载 DNS 服务器
[root@dns-master ~]# rndc reload |
# 2.5.3 客户端测试域名解析
[root@client ~]# yum install bind-utils -y | |
[root@client ~]# dig web.hmallleasing.com @172.16.1.91 +short | |
2.2.2.2 | |
[root@client ~]# dig www.hmallleasing.com @172.16.1.91 +short | |
1.1.1.1 |
# 2.6 BIND 增加 CNAME 记录实战
用户通过 DNS 服务器 172.16.1.91 解析 www.job.com
1、添加 job.com 区域配置文件
2、添加区域数据库文件,配置 NS 记录,返回 DNS 权威服务器地址
3、该域的 DNS 权威服务器为 172.16.1.91
4、添加该域的 CNAME 解析记录,解析至 www.hmallleasing.com 域名上

# 2.6.1 新增区域配置文件
1. 在主配置文件 /etc/named.conf,新增一个 hmallleasing.com 区域配置
[root@dns-master ~]# cat /etc/named.conf | |
... | |
options { | |
// ipv4监听地址及端口 | |
listen-on port 53 { any; }; | |
... | |
// 允许谁本台DNS发起查询请求(localhost|ip|any) | |
allow-query { any; }; | |
... | |
//自行配置权威域名解析job.com | |
zone "job.com" IN { | |
type master; | |
file "job.com.zone"; //具体解析记录配置存储至哪个文件 | |
}; | |
... |
2. 检查配置文件语法是否正常
[root@dns-master ~]# named-checkconf |
# 2.6.2 新增区域数据库文件
1. 添加区域数据库文件
[root@dns-master ~]# cat /var/named/job.com.zone | |
$TTL 600 ; DNS失效时间,单位秒; | |
job.com. IN SOA ns.job.com. xuy.nf-leasing.com. ( | |
; 区域名称 IN SOA dns.hmallleasing.com. 管理员邮箱 | |
; 区域名称可以使用过@表示,@表示当前域 | |
2025092018 ; 序列号(serial number) 十进制,不能超过10位,通常使用日期时间戳,例如2018121601 | |
10800 ; 刷新时间(refresh time) 即每隔多久到主服务器检查一次 | |
900 ; 重试时间(retry time) 即刷新不成功多久后重试,应该小于refresh time | |
604800 ; 过期时间(expire time) 当辅助DNS无法联系主DNS时,辅助DNS在多长时间内认为其缓存是有效的。 | |
86400 ; 权威应答的ttl(netgative answer ttl) ;缓存DNS服务器可以缓存记录多长时间 | |
) | |
; 给客户端返回NS记录,hmallleasing.com. 域名由哪几台权威服务器提供解析 | |
job.com. IN NS ns1.job.com. | |
; A记录,配置权威域名的真实IP地址; | |
ns1.job.com. IN A 172.16.1.91 | |
; 真正的域名解析 | |
www.job.com. IN CNAME www.hmallleasing.com. | |
dev.job.com. IN A 2.2.2.3 |
2. 检查区域数据库文件
[root@dns-master ~]# named-checkzone job.com /var/named/job.com.zone | |
zone job.com/IN: loaded serial 2025092018 | |
OK |
3. 重载 DNS 服务器
[root@dns-master ~]# rndc reload |
# 2.6.3 客户端测试域名解析
[root@client ~]# dig www.job.com @172.16.1.91 +short | |
www.hmallleasing.com. | |
1.1.1.1 | |
[root@client ~]# dig dev.job.com @172.16.1.91 +short | |
2.2.2.3 |
# 2.7 BIND 增加 PTR 记录反向解析实战
配置反向解析 PTR:IP-->FQDN
- 1、反向区域文件名称为逆向网络地址 加 .in-addr.arpa. 后缀组成
- 2、反向区域数据库文件,例如 172.16.1.200 的 name 为 200 ,完全格式为:1.16.172.in-addr.arpa.
# 2.7.1 新增区域配置文件
1. 在主配置文件 /etc/named.conf,新增一个反向区域配置
[root@dns-master ~]# cat /etc/named.conf | |
... | |
options { | |
// ipv4监听地址及端口 | |
listen-on port 53 { any; }; | |
... | |
// 允许谁本台DNS发起查询请求(localhost|ip|any) | |
allow-query { any; }; | |
... | |
//配置反向解析 | |
zone "1.16.172.in-addr.arpa" IN { | |
type master; | |
file "1.16.172.zone"; | |
}; | |
... |
2. 检查配置文件语法是否正常
[root@dns-master ~]# named-checkconf |
# 2.7.2 新增区域数据库文件
1. 添加反向解析区域数据库文件
[root@dns-master ~]# cat /var/named/1.16.172.zone | |
$TTL 600 ; DNS失效时间,单位秒; | |
@ IN SOA 1.16.172.in-addr.arpa. xuy.nf-leasing.com. ( | |
2025092018 ; 序列号(serial number) 十进制,不能超过10位,通常使用日期时间戳,例如2018121601 | |
10800 ; 刷新时间(refresh time) 即每隔多久到主服务器检查一次 | |
900 ; 重试时间(retry time) 即刷新不成功多久后重试,应该小于refresh time | |
604800 ; 过期时间(expire time) 当辅助DNS无法联系主DNS时,辅助DNS在多长时间内认为其缓存是有效的。 | |
86400 ; 权威应答的ttl(netgative answer ttl) ;缓存DNS服务器可以缓存记录多长时间 | |
) | |
;ns反向解析 | |
@ IN NS ns1.hmallleasing.com. | |
;权威DNS反向解析 | |
91 IN PTR ns1.hmallleasing.com. | |
;www反向解析 | |
200 IN PTR route.hmallleasing.com. | |
5 IN PTR lb.hmallleasing.com. | |
7 IN PTR web01.hmallleasing.com. | |
8 IN PTR web02.hmallleasing.com. |
2. 检查区域数据库文件
[root@dns-master ~]# named-checkzone job.com /var/named/1.16.172.zone | |
zone job.com/IN: loaded serial 2025092018 | |
OK |
3. 重载 DNS 服务器
[root@dns-master ~]# rndc reload |
# 2.7.3 客户端测试域名解析
[root@client ~]# dig -x 172.16.1.200 @172.16.1.91 +short | |
route.hmallleasing.com. | |
[root@client ~]# dig -x 172.16.1.7 @172.16.1.91 +short | |
web01.hmallleasing.com. | |
[root@client ~]# dig -x 172.16.1.8 @172.16.1.91 +short | |
web02.hmallleasing.com. | |
[root@client ~]# dig -x 172.16.1.5 @172.16.1.91 +short | |
lb.hmallleasing.com. |
# 3. 递归查询
# 3.1 什么是递归查询

- 如果你要建立一个【授权域名】服务器,仅提供本地已存在域名解析即可;那么不要开启 recursion 功能。
- 如果你要建立一个递归 DNS 服务器,那么需要开启 recursion 功能。
- 如果你的递归 DNS 服务器有公网 IP 地址,你必须开启访问控制功能,只有合法用户才可以发询问。
# 3.2 递归查询配置参数
| 参数 | 选项 | 作用 |
|---|---|---|
| recurison | yes/no | 是否开启递归查询请求 |
| allow-recursion | {address_match_list | any | none }; | 限制客户端递归请求的范围 |
# 3.3 递归查询配置场景
# 3.3.1 开启递归查询
BIND 默认配置中的 recurison 参数是启用的;
- 1、配置仅允许 172.16.1.0 网段用户可以查询(可选);
- 2、使用客户端查询系统中存在的域名;
- 3、使用客户端查询系统中不存在的域名(让 BIND 进行递归查询);
1. 修改 /etc/named.conf 配置文件
[root@dns-master ~]# cat /etc/named.conf | |
... | |
//递归查询 | |
recursion yes; | |
allow-recursion { 192.168.40.0/24;172.16.1.0/24; }; | |
... |
2. 语法检查且重新加载 named
[root@dns-master ~]# named-checkconf | |
[root@dns-master ~]# rndc reload | |
server reload successful |
3. 查询存在 BIND 服务中的域名
[root@client ~]# dig web.hmallleasing.com @172.16.1.91 +short | |
2.2.2.2 |
4. 查询不在 BIND 服务中的域名,可以获取正确返回,原因是 BIND 进行了递归查询
[root@client ~]# dig www.qq.com @172.16.1.91 +short | |
ins-r23tsuuf.ias.tencent-cloud.net. | |
121.14.77.221 | |
121.14.77.201 |
# 3.3.2 关闭递归查询
1. 修改 /etc/named.conf 配置文件
[root@dns-master ~]# cat /etc/named.conf | |
... | |
//递归查询 | |
recursion no; | |
#allow-recursion { 192.168.40.0/24;172.16.1.0/24; }; | |
... |
2. 语法检查且重新加载 named
[root@dns-master ~]# named-checkconf | |
[root@dns-master ~]# rndc reload | |
server reload successful |
3. 查询存在 BIND 服务中的域名会返回权威结果,因为本地无需进行递归查询,即可返回权威解析
[root@client ~]# dig web.hmallleasing.com @172.16.1.91 +short | |
2.2.2.2 |
4. 由于本地无法返回权威结果,同时也禁用了递归查询,所以查询本地不存在域名会有 WARNING 提示
[root@client ~]# dig www.qq.com @172.16.1.91 | |
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.16 <<>> www.qq.com @172.16.1.91 | |
;; global options: +cmd | |
;; Got answer: | |
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 30635 | |
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1 | |
;; WARNING: recursion requested but not available #递归查询不可用 | |
;; OPT PSEUDOSECTION: | |
; EDNS: version: 0, flags:; udp: 4096 | |
;; QUESTION SECTION: | |
;www.qq.com. IN A | |
;; Query time: 0 msec | |
;; SERVER: 172.16.1.91#53(172.16.1.91) | |
;; WHEN: Sat Sep 20 21:33:54 CST 2025 | |
;; MSG SIZE rcvd: 39 |
# 4. DNS 主辅同步
# 4.1 DNS 主辅同步概念
辅助 DNS 是 DNS 容灾备份服务:在主 DNS 和辅 DNS 之间建立区域数据传输机制,当主 DNS 遇到故障或者服务中断时,辅 DNS 仍可以继续提供解析服务,因此保障业务稳定运行。
辅助 DNS 的优势:
- 容灾备份,降低业务中断风险:主 DNS 系统故障,辅助 DNS 可继续提供域名解析服务,保障业务可用性。
- 负责均衡,流量均摊降低负载:当辅助 DNS 与主 DNS 同时对外提供解析服务时,可以达到流量负载均衡的效果。
# 4.2 DNS 主从同步原理

# 4.3 DNS 主从同步场景
# 4.3.1 主从环境准备
- 1、确保防火墙规则开放(建议关闭)
- 2、保持主从服务器时钟一致;
- 3、搭建完主从后,若修改主服务器域配置, Serail Number 必须递增,否则不同步;
# 4.3.2 主辅同步配置要点
- 1、主 DNS 的 named.conf 里配置 allow-transfer 和 also-notify 选项;
- 2、辅助 DNS 主配置文件 option 段添加 masterfile-format text ,否则同步的文件为 data 类型;
- 3、辅助 DNS 添加区域配置文件,类型为 slave ,同时指向 masters 参数指向 master 地址;
- 4、辅助 DNS 不可主动修改 DNS 数据库文件;
# 4.3.3 Master 服务器的配置
1. 在主配置文件 /etc/named.conf,新增一个反向区域配置
[root@dns-master ~]# cat /etc/named.conf | |
... | |
options { | |
//允许哪个地址同步master配置信息 | |
allow-transfer { 172.16.1.92; }; | |
//主动通知辅助DNS域名变更 | |
also-notify { 172.16.1.92; }; | |
}; | |
... | |
//自行配置权威域名解析hmallleaing.com | |
zone "hmallleasing.com" IN { | |
type master; | |
file "hmallleasing.com.zone"; //具体解析记录配置存储至哪个文件 | |
}; | |
zone "job.com" IN { | |
type master; | |
file "job.com.zone"; //具体解析记录配置存储至哪个文件 | |
}; | |
//配置反向解析 | |
zone "1.16.172.in-addr.arpa" IN { | |
type master; | |
file "1.16.172.zone"; | |
}; | |
... |
2. 添加区域数据库文件 (需要多添加一条 ns 记录)
#1.hmallleasing.com.zone 需要多添加一条 ns 记录 | |
[root@dns-master ~]# cat /var/named/hmallleasing.com.zone | |
$TTL 600 ; DNS失效时间,单位秒; | |
hmallleasing.com. IN SOA ns.hmallleasing.com. xuy.nf-leasing.com. ( | |
; 区域名称 IN SOA dns.hmallleasing.com. 管理员邮箱 | |
; 区域名称可以使用过@表示,@表示当前域 | |
2025092018 ; 序列号(serial number) 十进制,不能超过10位,通常使用日期时间戳,例如2018121601 | |
10800 ; 刷新时间(refresh time) 即每隔多久到主服务器检查一次 | |
900 ; 重试时间(retry time) 即刷新不成功多久后重试,应该小于refresh time | |
604800 ; 过期时间(expire time) 当辅助DNS无法联系主DNS时,辅助DNS在多长时间内认为其缓存是有效的。 | |
86400 ; 权威应答的ttl(netgative answer ttl) ;缓存DNS服务器可以缓存记录多长时间 | |
) | |
; 给客户端返回NS记录,hmallleasing.com. 域名由哪几台权威服务器提供解析 | |
hmallleasing.com. IN NS ns1.hmallleasing.com. | |
hmallleasing.com. IN NS ns2.hmallleasing.com. | |
; A记录,配置权威域名的真实IP地址; | |
ns1.hmallleasing.com. IN A 172.16.1.91 | |
ns2.hmallleasing.com. IN A 172.16.1.92 | |
; 真正的域名解析 | |
www.hmallleasing.com. IN A 1.1.1.1 | |
web.hmallleasing.com. IN A 2.2.2.2 | |
#2./1.16.172.zone 需要多添加一条 ns 记录 | |
[root@dns-master ~]# cat /var/named/1.16.172.zone | |
$TTL 600 ; DNS失效时间,单位秒; | |
@ IN SOA 1.16.172.in-addr.arpa. xuy.nf-leasing.com. ( | |
2025092018 ; 序列号(serial number) 十进制,不能超过10位,通常使用日期时间戳,例如2018121601 | |
10800 ; 刷新时间(refresh time) 即每隔多久到主服务器检查一次 | |
900 ; 重试时间(retry time) 即刷新不成功多久后重试,应该小于refresh time | |
604800 ; 过期时间(expire time) 当辅助DNS无法联系主DNS时,辅助DNS在多长时间内认为其缓存是有效的。 | |
86400 ; 权威应答的ttl(netgative answer ttl) ;缓存DNS服务器可以缓存记录多长时间 | |
) | |
;ns反向解析 | |
@ IN NS ns1.hmallleasing.com. | |
@ IN NS ns2.hmallleasing.com. | |
;权威DNS反向解析 | |
91 IN PTR ns1.hmallleasing.com. | |
92 IN PTR ns2.hmallleasing.com. | |
;www反向解析 | |
200 IN PTR route.hmallleasing.com. | |
5 IN PTR lb.hmallleasing.com. | |
7 IN PTR web01.hmallleasing.com. | |
8 IN PTR web02.hmallleasing.com. | |
#2.job.com.zone 需要多添加一条 ns 记录 | |
[root@dns-master named]# cat job.com.zone | |
$TTL 600 ; DNS失效时间,单位秒; | |
job.com. IN SOA ns.job.com. xuy.nf-leasing.com. ( | |
; 区域名称 IN SOA dns.hmallleasing.com. 管理员邮箱 | |
; 区域名称可以使用过@表示,@表示当前域 | |
2025092019 ; 序列号(serial number) 十进制,不能超过10位,通常使用日期时间戳,例如2018121601 | |
10800 ; 刷新时间(refresh time) 即每隔多久到主服务器检查一次 | |
900 ; 重试时间(retry time) 即刷新不成功多久后重试,应该小于refresh time | |
604800 ; 过期时间(expire time) 当辅助DNS无法联系主DNS时,辅助DNS在多长时间内认为其缓存是有效的。 | |
86400 ; 权威应答的ttl(netgative answer ttl) ;缓存DNS服务器可以缓存记录多长时间 | |
) | |
; 给客户端返回NS记录,hmallleasing.com. 域名由哪几台权威服务器提供解析 | |
job.com. IN NS ns1.job.com. | |
job.com. IN NS ns2.job.com. | |
; A记录,配置权威域名的真实IP地址; | |
ns1.job.com. IN A 172.16.1.91 | |
ns2.job.com. IN A 172.16.1.92 | |
; 真正的域名解析 | |
www.job.com. IN CNAME www.hmallleasing.com. | |
dev.job.com. IN A 2.2.2.3 |
3. 检查语法并重载 DNS 服务器
[root@dns-master ~]# named-checkconf | |
[root@dns-master ~]# named-checkzone hmallleasing.com /var/named/hmallleasing.com.zone | |
[root@dns-master ~]# rndc reload |
# 4.3.4 Slave 服务器的配置
1. 安装 bind 服务
[root@dns-slave ~]# yum install bind bind-utils -y | |
[root@dns-slave ~]# systemctl start named && systemctl enable named |
2. 配置 rndc【首次需要配置】
[root@dns-slave ~]# rndc-confgen -r /dev/urandom -a | |
[root@dns-slave ~]# chown root:named /etc/rndc.key | |
[root@dns-slave ~]# chmod 640 /etc/rndc.key | |
[root@dns-slave ~]# systemctl restart named |
3. 修改主配置文件
[root@dns-slave ~]# cat /etc/named.conf | |
... | |
options { | |
listen-on port 53 { any; }; | |
allow-query { any; }; | |
masterfile-format text; | |
}; | |
... |
4. 添加区域配置文件,类型为 slave,然后指向 master 地址
[root@dns-slave ~]# cat /etc/named.conf | |
... | |
//自行配置权威域名解析hmallleaing.com | |
zone "hmallleasing.com" IN { | |
type slave; | |
file "slaves/hmallleasing.com.zone"; //具体解析记录配置存储至哪个文件 | |
masters { 172.16.1.91; }; | |
}; | |
zone "job.com" IN { | |
type slave; | |
file "slaves/job.com.zone"; //具体解析记录配置存储至哪个文件 | |
masters { 172.16.1.91; }; | |
}; | |
//配置反向解析 | |
zone "1.16.172.in-addr.arpa" IN { | |
type slave; | |
file "slaves/1.16.172.zone"; | |
masters { 172.16.1.91; }; | |
}; | |
include "/etc/named.rfc1912.zones"; | |
include "/etc/named.root.key"; | |
... |
4. 检查语法并重载 DNS 服务器
[root@dns-master ~]# named-checkconf | |
[root@dns-master ~]# rndc reload | |
[root@dns-slave ~]# ll /var/named/slaves/ | |
-rw-r--r-- 1 named named 549 Sep 20 22:30 1.16.172.zone | |
-rw-r--r-- 1 named named 420 Sep 20 22:30 hmallleasing.com.zone | |
-rw-r--r-- 1 named named 356 Sep 20 22:30 job.com.zone |
# 4.3.5 测试主辅解析
使用 dig 进行域名解析,先通过 master 解析,然后在使用 slave 测试解析
1. 通过 master 解析
[root@client ~]# dig www.hmallleasing.com @172.16.1.91 | |
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.16 <<>> www.hmallleasing.com @172.16.1.91 | |
;; global options: +cmd | |
;; Got answer: | |
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34451 | |
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3 | |
;; OPT PSEUDOSECTION: | |
; EDNS: version: 0, flags:; udp: 4096 | |
;; QUESTION SECTION: | |
;www.hmallleasing.com. IN A | |
;; ANSWER SECTION: | |
www.hmallleasing.com. 600 IN A 1.1.1.1 | |
;; AUTHORITY SECTION: | |
hmallleasing.com. 600 IN NS ns2.hmallleasing.com. | |
hmallleasing.com. 600 IN NS ns1.hmallleasing.com. | |
;; ADDITIONAL SECTION: | |
ns1.hmallleasing.com. 600 IN A 172.16.1.91 | |
ns2.hmallleasing.com. 600 IN A 172.16.1.92 | |
;; Query time: 0 msec | |
;; SERVER: 172.16.1.91#53(172.16.1.91) | |
;; WHEN: Sat Sep 20 23:03:40 CST 2025 | |
;; MSG SIZE rcvd: 133 |
2. 通过 slave 解析
[root@client ~]# dig www.hmallleasing.com @172.16.1.92 | |
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.16 <<>> www.hmallleasing.com @172.16.1.92 | |
;; global options: +cmd | |
;; Got answer: | |
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4506 | |
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3 | |
;; OPT PSEUDOSECTION: | |
; EDNS: version: 0, flags:; udp: 4096 | |
;; QUESTION SECTION: | |
;www.hmallleasing.com. IN A | |
;; ANSWER SECTION: | |
www.hmallleasing.com. 600 IN A 1.1.1.1 | |
;; AUTHORITY SECTION: | |
hmallleasing.com. 600 IN NS ns2.hmallleasing.com. | |
hmallleasing.com. 600 IN NS ns1.hmallleasing.com. | |
;; ADDITIONAL SECTION: | |
ns1.hmallleasing.com. 600 IN A 172.16.1.91 | |
ns2.hmallleasing.com. 600 IN A 172.16.1.92 | |
;; Query time: 0 msec | |
;; SERVER: 172.16.1.92#53(172.16.1.92) | |
;; WHEN: Sat Sep 20 23:03:23 CST 2025 | |
;; MSG SIZE rcvd: 133 |
3. 测试主辅同步
#1.dns master 新增一条记录,然后滚动 seria2025092019 自增 1 | |
[root@dns-master named]# cat hmallleasing.com.zone | |
$TTL 600 ; DNS失效时间,单位秒; | |
hmallleasing.com. IN SOA ns.hmallleasing.com. xuy.nf-leasing.com. ( | |
; 区域名称 IN SOA dns.hmallleasing.com. 管理员邮箱 | |
; 区域名称可以使用过@表示,@表示当前域 | |
2025092019 ; 序列号(serial number) 十进制,不能超过10位,通常使用日期时间戳,例如2018121601 | |
10800 ; 刷新时间(refresh time) 即每隔多久到主服务器检查一次 | |
900 ; 重试时间(retry time) 即刷新不成功多久后重试,应该小于refresh time | |
604800 ; 过期时间(expire time) 当辅助DNS无法联系主DNS时,辅助DNS在多长时间内认为其缓存是有效的。 | |
86400 ; 权威应答的ttl(netgative answer ttl) ;缓存DNS服务器可以缓存记录多长时间 | |
) | |
; 给客户端返回NS记录,hmallleasing.com. 域名由哪几台权威服务器提供解析 | |
hmallleasing.com. IN NS ns1.hmallleasing.com. | |
hmallleasing.com. IN NS ns2.hmallleasing.com. | |
; A记录,配置权威域名的真实IP地址; | |
ns1.hmallleasing.com. IN A 172.16.1.91 | |
ns2.hmallleasing.com. IN A 172.16.1.92 | |
; 真正的域名解析 | |
www.hmallleasing.com. IN A 1.1.1.1 | |
web.hmallleasing.com. IN A 2.2.2.2 | |
blog.hmallleasing.com. IN A 3.3.3.3 | |
#2. 重载 DNS 服务器 | |
[root@dns-master named]# rndc reload | |
#3. 使用 master 以及 slave 地址测试新添加的记录是否能解析 | |
[root@client ~]# dig blog.hmallleasing.com @172.16.1.91 | |
[root@client ~]# dig blog.hmallleasing.com @172.16.1.92 | |
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.16 <<>> blog.hmallleasing.com @172.16.1.91 | |
;; global options: +cmd | |
;; Got answer: | |
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60136 | |
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3 | |
;; OPT PSEUDOSECTION: | |
; EDNS: version: 0, flags:; udp: 4096 | |
;; QUESTION SECTION: | |
;blog.hmallleasing.com. IN A | |
;; ANSWER SECTION: | |
blog.hmallleasing.com. 600 IN A 3.3.3.3 | |
;; AUTHORITY SECTION: | |
hmallleasing.com. 600 IN NS ns1.hmallleasing.com. | |
hmallleasing.com. 600 IN NS ns2.hmallleasing.com. | |
;; ADDITIONAL SECTION: | |
ns1.hmallleasing.com. 600 IN A 172.16.1.91 | |
ns2.hmallleasing.com. 600 IN A 172.16.1.92 | |
;; Query time: 0 msec | |
;; SERVER: 172.16.1.91#53(172.16.1.91) | |
;; WHEN: Sat Sep 20 23:10:17 CST 2025 | |
;; MSG SIZE rcvd: 134 |
# 5. DNS 子域授权配置
# 5.1 什么是 DNS 子域授权
A 服务负责 (hmallleasing.com)域名解析,授权 B 服务器管理 (ops.hmallleasing.com) 的域名解析;

# 5.2 DNS 子域授权环境
| 环境 | 域名 | 节点外网地址 | 节点内网地址 |
|---|---|---|---|
| 父域 Master | hmallleasing.com | 192.168.40.91 | 172.16.1.91 |
| 父域 Slace | hmamllleasing.com | 192.168.40.92 | 172.16.1.93 |
| 子域 | ops.hmallleasing.com | 192.168.40.92 | 172.16.1.93 |
# 5.3 DNS 子域授权的配置
# 5.3.1 DNS Master 父域配置
1. 区域配置文件此前可以复用之前主辅配置,所以无需修改;
[root@dns-master ~]# cat /etc/named.conf | |
options { | |
... | |
//允许哪个地址同步master配置信息 | |
allow-transfer { 172.16.1.92; }; | |
//主动通知辅助DNS域名变更 | |
also-notify { 172.16.1.92; }; | |
}; | |
... | |
//自行配置权威域名解析hmallleaing.com | |
zone "hmallleasing.com" IN { | |
type master; | |
file "hmallleasing.com.zone"; //具体解析记录配置存储至哪个文件 | |
}; | |
zone "job.com" IN { | |
type master; | |
file "job.com.zone"; //具体解析记录配置存储至哪个文件 | |
}; | |
//配置反向解析 | |
zone "1.16.172.in-addr.arpa" IN { | |
type master; | |
file "1.16.172.zone"; | |
}; |
2. 区域数据库文件,将 ops 三级子域授权给子域服务器
[root@dns-master ~]# cat /var/named/hmallleasing.com.zone | |
$TTL 600 ; DNS失效时间,单位秒; | |
hmallleasing.com. IN SOA ns.hmallleasing.com. xuy.nf-leasing.com. ( | |
; 区域名称 IN SOA dns.hmallleasing.com. 管理员邮箱 | |
; 区域名称可以使用过@表示,@表示当前域 | |
2025092019 ; 序列号(serial number) 十进制,不能超过10位,通常使用日期时间戳,例如2018121601 | |
10800 ; 刷新时间(refresh time) 即每隔多久到主服务器检查一次 | |
900 ; 重试时间(retry time) 即刷新不成功多久后重试,应该小于refresh time | |
604800 ; 过期时间(expire time) 当辅助DNS无法联系主DNS时,辅助DNS在多长时间内认为其缓存是有效的。 | |
86400 ; 权威应答的ttl(netgative answer ttl) ;缓存DNS服务器可以缓存记录多长时间 | |
) | |
; 给客户端返回NS记录,hmallleasing.com. 域名由哪几台权威服务器提供解析 | |
hmallleasing.com. IN NS ns1.hmallleasing.com. | |
hmallleasing.com. IN NS ns2.hmallleasing.com. | |
; A记录,配置权威域名的真实IP地址; | |
ns1.hmallleasing.com. IN A 172.16.1.91 | |
ns2.hmallleasing.com. IN A 172.16.1.92 | |
; 真正的域名解析 | |
www.hmallleasing.com. IN A 1.1.1.1 | |
web.hmallleasing.com. IN A 2.2.2.2 | |
blog.hmallleasing.com. IN A 3.3.3.3 | |
;增加子域的配置 | |
ops.hmallleasing.com. IN NS ns1.ops.hmallleasing.com. | |
ns1.ops.hmallleasing.com. IN A 172.16.1.93 |
- 检查配置文件,区域数据库文件,重载服务
[root@dns-master ~]# named-checkconf | |
[root@dns-master ~]# named-checkzone hmallleasing.com /var/named/hmallleasing.com.zone | |
[root@dns-master ~]# systemctl restart named |
# 5.3.2 DNS 子域配置 (Other)
1.bind 软件安装
[root@dns-son ~]# yum install bind bind-utils -y |
2. 修改配置文件,然后增加紫玉的 zone 配置文件
[root@dns-son ~]# cat /etc/named.conf | |
options { | |
... | |
listen-on port 53 { any; }; | |
allow-query { any; }; | |
}; | |
//增加如下配置 | |
zone "ops.hmallleasing.com" IN { | |
type master; | |
file "ops.hmallleasing.com.zone"; | |
}; |
3. 添加区域数据数据库文件
[root@dns-son ~]# cat /var/named/ops.hmallleasing.com.zone | |
$TTL 600 ; DNS失效时间,单位秒; | |
ops.hmallleasing.com. IN SOA ns.ops.hmallleasing.com. xuy.nf-leasing.com. ( | |
; 区域名称 IN SOA dns.hmallleasing.com. 管理员邮箱 | |
; 区域名称可以使用过@表示,@表示当前域 | |
2025092018 ; 序列号(serial number) 十进制,不能超过10位,通常使用日期时间戳,例如2018121601 | |
10800 ; 刷新时间(refresh time) 即每隔多久到主服务器检查一次 | |
900 ; 重试时间(retry time) 即刷新不成功多久后重试,应该小于refresh time | |
604800 ; 过期时间(expire time) 当辅助DNS无法联系主DNS时,辅助DNS在多长时间内认为其缓存是有效的。 | |
86400 ; 权威应答的ttl(netgative answer ttl) ;缓存DNS服务器可以缓存记录多长时间 | |
) | |
; 给客户端返回NS记录,hmallleasing.com. 域名由哪几台权威服务器提供解析 | |
ops.hmallleasing.com. IN NS ns1.ops.hmallleasing.com. | |
; A记录,配置权威域名的真实IP地址; | |
ns1.ops.hmallleasing.com. IN A 172.16.1.93 | |
; 真正的域名解析 | |
www.ops.hmallleasing.com. IN A 6.6.6.6 | |
blog.ops.hmallleasing.com. IN A 7.7.7.7 |
4. 检查配置文件,区域数据库文件,重载服务
[root@dns-son ~]# named-checkconf | |
[root@dns-son ~]# named-checkzone ops.hmallleasing.com /var/named/ops.hmallleasing.com.zone | |
[root@dns-son ~]# systemctl start named && systemctl enable named |
# 5.3.3 验证结果
1. 客户端获取子域对应的解析
[root@client ~]# dig www.ops.hmallleasing.com @172.16.1.93 +short | |
6.6.6.6 | |
[root@client ~]# dig blog.ops.hmallleasing.com @172.16.1.93 +short | |
7.7.7.7 |
2. 客户端获取子域对应的解析(使用父域的 IP)
[root@client ~]# dig blog.ops.hmallleasing.com @172.16.1.91 +short | |
7.7.7.7 | |
[root@client ~]# dig www.ops.hmallleasing.com @172.16.1.92 +short | |
6.6.6.6 |
3. 客户端获取父域对应的解析(使用子域的 IP)
# 无法正常解析 | |
[root@client ~]# dig www.hmallleasing.com @172.16.1.93 +short |
问题:由于父域与子域互相维护不同的区域配置,它们之间并不存在任何的联系,所以子域在解析父域的域名时,它并不会直接通过父域来获取权威的解析记录,那它会怎么做呢?
- 第一步:它会先找顶点根域;
- 第二步:寻找找 com 域对应的 DNS 服务器;
- 第三步:寻找 example 域对应的 DNS 服务器,而后获取 www 对应的解析记录;
- 这种查找模式是由 DNS 的机制所决定的;
解决方法:明确告诉子域,让其能找到父域进项查询解析,而无需查找根域;(需要配置 DNS 的转发),参考小节:6.2、子域名转发的配置。
# 6. DNS 转发模式
# 6.1 什么是 DNS 转发
转发指的是将域名查询请求,转至某一台服务器解析(被转发的服务器必须允许为当前服务器做递归)
转发分为两类;
- 区域转发:仅转发对某特定区域的解析请求;
- 全局转发:针对本地没有通过 zone 定义的区域查询请求,统统转发;
转发参数:
- forwarders:转发给哪台服务器,可以多台;
- forwarder only:仅转发;
- forwarder first:优先转发给对应的服务器查询,如转发未响应,则自行迭代查询;
# 6.2 DNS 转发示例
全局转发示例配置(所有本地不存在的域名都进行转发)
options { | |
... | |
forward { first | only }; | |
forwarders { SERVER_IP; }; | |
... | |
} |
区域转发示例配置(符合该区域则进行条件转发)
zone "ZONE_NAME" IN { | |
type forward; | |
forward first|only ; | |
forwarders { SERVER_IP; }; | |
}; |
# 6.3 DNS 区域转发实践
1. 在子域服务器上,添加父域的域名,然后配置转发;
[root@dns-son ~]# cat /etc/named.conf | |
... | |
zone "ops.hmallleasing.com" IN { | |
type master; | |
file "ops.hmallleasing.com.zone"; | |
}; | |
//增加如下配置 | |
zone "hmallleasing.com" IN { | |
type forward; | |
forward first; | |
forwarders { 172.16.1.91; 172.16.1.92; }; | |
}; |
2. 检查配置文件,区域数据库文件,重载服务
[root@dns-son ~]# named-checkconf | |
[root@dns-son ~]# systemctl restart named |
3. 测试转发效果
[root@client ~]# dig www.hmallleasing.com @172.16.1.93 +short | |
1.1.1.1 | |
[root@client ~]# dig web.hmallleasing.com @172.16.1.93 +short | |
2.2.2.2 | |
[root@client ~]# dig blog.hmallleasing.com @172.16.1.93 +short | |
3.3.3.3 |
# 7. 智能 DNS 概述
智能 DNS 就是根据用户的来源地域,自动智能化判断来路 IP 返回给用户,而不需要用户进行选择;
# 7.1 什么是智能 DNS
DNS 解析,不判断访问者来源,会随机选择其中一个 IP 地址返回给访问者。
智能 DNS 解析,会判断访问者的来源,为不同的访问者智能返回不同的 IP 地址,可使访问者在访问网站时可获取用户指定的 IP 地址,能够减少解析时延,并提升网站访问速度的功效。
比方一个企业的站点三个运营商的带宽都有:电信、联通、移动;同样来自三个不同 运营商网络的访问用户,假设电信用户访问企业网址的时候,智能 DNS 会自动根据 IP 判断,再从电信返回给电信用户,其它的也同理;
- 电信用户:访问 www.hmallleasing.com 返回 1.1.1.1
- 联通用户:访问 www.hmallleasing.com 返回 2.2.2.2
- 移动用户:访问 www.hmallleasing.com 返回 3.3.3.3

# 7.2 如何实现智能 DNS
实现智能 DNS 需要 VIEW 试图以及 ACL 访问控制列表协同完成;

# 7.2.1 ACL 访问控制列表
ACL 访问控制列表,是用来限制哪些主机可以通过 DNS 查询,哪些不可以;
系统默认内置四种 ACL:
- any :允许所有主机节点查询;
- none :拒绝所有主机节点查询;
- localhost :仅允许本地接口网络主机查询;
- localnet :本地子网所有 IP;
1. 简单 ACL 规则定义
acl "ips" { //定义一个名为ips的ACL
10.0.0.1; 10.0.0.2; 192.168.1.1; //包含3个单个IP
172.16.1.0/24;
...
};
2. 复杂 ACL 规则定义
acl "all_rule" { //定义一个名为all_rule的ACL | |
"ips"; //可以嵌套包含其他ACL | |
10.0.15.0/24; //包含10.0.15.0子网中的所有IP | |
!10.0.16.1/24; //非10.0.16.1子网的IP | |
{10.0.17.1;10.0.18.2;}; //包含了一个IP组 | |
localhost; //本地网络接口IP(含实际接口IP和127.0.0.1) | |
}; |
3. 定义的 ACL 规则如何使用
allow-update { "ips"; }; //允许谁能更新 | |
allow-transfer { "all_rule"; }; //允许谁能同步 | |
... |
# 7.2.2 VIEW 视图功能
view 语句定义了视图功能,视图是 BIND9 提供的强大的新功能,允许 DNS 服务器根据不同的客户端,请求相同的域名,但返回不同的解析结果;
view 语法示例:
view view_name [class] { | |
match-clients { address_match_list } ; | |
match-destinations { address_match_list } ; | |
match-recursive-only { yes_or_no } ; | |
[ view_option; ...] | |
[zone; ...] | |
}; |
# 7.3 智能 DNS 场景实战
- 维护一个主机域;根据不同环境的 IP 请求,查询相同域名,返回不同的解析结果;(企业常用)
- 维护一个业务域;根据不同的运营商 IP 地址,解析到不同的地址;(需要大量 IP 地址库)
# 7.3.1 定义 ACL 规则
//模拟测试业务地址段 | |
acl "env-test" { | |
172.16.1.10; | |
}; | |
//模拟生产业务地址段 | |
acl "env-prod" { | |
172.16.1.200; | |
}; |
# 7.3.2 定义 VIEW 视图
1. 修改 /etc/named.conf 配置文件
[root@dns-master ~]# cp /etc/named.conf /etc/named.conf.bak | |
[root@dns-master ~]# cat /etc/named.conf | |
... | |
//模拟测试业务地址段 | |
acl "test" { | |
172.16.1.10; | |
}; | |
//模拟生产业务地址段 | |
acl "prod" { | |
172.16.1.200; | |
}; | |
//测试业务view | |
view "test-project" { | |
match-clients { "test"; }; | |
recursion yes; | |
zone "." IN { | |
type hint; | |
file "named.ca"; | |
}; | |
zone "example.com" { | |
type master; | |
file "test/example.com.zone"; | |
}; | |
}; | |
//生产业务view | |
view "prod-project" { | |
match-clients { "prod"; }; | |
recursion yes; | |
zone "." IN { | |
type hint; | |
file "named.ca"; | |
}; | |
zone "example.com" { | |
type master; | |
file "prod/example.com.zone"; | |
}; | |
}; | |
//默认的view | |
view "default" { | |
match-clients { any; }; | |
recursion yes; | |
zone "." IN { | |
type hint; | |
file "named.ca"; | |
}; | |
zone "example.com" { | |
type master; | |
file "default/example.com.zone"; | |
}; | |
}; | |
//包含其他文件 | |
#include "/etc/named.rfc1912.zones"; | |
include "/etc/named.root.key"; |
2. 检查配置文件语法
[root@dns-master ~]# named-checkconf |
# 7.3.3 测试环境 zone (电信)
1. 创建目录并修改属组
[root@dns-master ~]# mkdir /var/named/test | |
[root@dns-master ~]# chgrp named /var/named/test/ |
2. 准备测试环境的 zone 区域配置文件
[root@dns-master ~]# cat /var/named/test/example.com.zone | |
$TTL 600 ; DNS失效时间,单位秒; | |
example.com. IN SOA ns.example.com. xuy.nf-leasing.com. ( | |
; 区域名称 IN SOA dns.hmallleasing.com. 管理员邮箱 | |
; 区域名称可以使用过@表示,@表示当前域 | |
2025092018 ; 序列号(serial number) 十进制,不能超过10位,通常使用日期时间戳,例如2018121601 | |
10800 ; 刷新时间(refresh time) 即每隔多久到主服务器检查一次 | |
900 ; 重试时间(retry time) 即刷新不成功多久后重试,应该小于refresh time | |
604800 ; 过期时间(expire time) 当辅助DNS无法联系主DNS时,辅助DNS在多长时间内认为其缓存是有效的。 | |
86400 ; 权威应答的ttl(netgative answer ttl) ;缓存DNS服务器可以缓存记录多长时间 | |
) | |
; 给客户端返回NS记录,example.com. 域名由哪几台权威服务器提供解析 | |
example.com. IN NS ns1.example.com. | |
; A记录,配置权威域名的真实IP地址; | |
ns1.example.com. IN A 172.16.1.91 | |
; 真正的域名解析 | |
www.example.com. IN A 1.1.1.1 |
3. 检查 zone 区域配置文件语法
[root@dns-master ~]# named-checkzone example.com /var/named/test/example.com.zone | |
[root@dns-master ~]# systemctl restart named |
# 7.3.4 生产环境 zone (联通)
1. 创建目录并修改属组
[root@dns-master ~]# mkdir /var/named/prod | |
[root@dns-master ~]# chgrp named /var/named/prod/ |
2. 准备测试环境的 zone 区域配置文件
[root@dns-master ~]# cp /var/named/test/example.com.zone /var/named/prod/example.com.zone | |
[root@dns-master ~]# cat /var/named/prod/example.com.zone | |
$TTL 600 ; DNS失效时间,单位秒; | |
example.com. IN SOA ns.example.com. xuy.nf-leasing.com. ( | |
; 区域名称 IN SOA dns.hmallleasing.com. 管理员邮箱 | |
; 区域名称可以使用过@表示,@表示当前域 | |
2025092018 ; 序列号(serial number) 十进制,不能超过10位,通常使用日期时间戳,例如2018121601 | |
10800 ; 刷新时间(refresh time) 即每隔多久到主服务器检查一次 | |
900 ; 重试时间(retry time) 即刷新不成功多久后重试,应该小于refresh time | |
604800 ; 过期时间(expire time) 当辅助DNS无法联系主DNS时,辅助DNS在多长时间内认为其缓存是有效的。 | |
86400 ; 权威应答的ttl(netgative answer ttl) ;缓存DNS服务器可以缓存记录多长时间 | |
) | |
; 给客户端返回NS记录,example.com. 域名由哪几台权威服务器提供解析 | |
example.com. IN NS ns1.example.com. | |
; A记录,配置权威域名的真实IP地址; | |
ns1.example.com. IN A 172.16.1.91 | |
; 真正的域名解析 | |
www.example.com. IN A 2.2.2.2 |
3. 检查 zone 区域配置文件语法
[root@dns-master ~]# named-checkzone example.com /var/named/prod/example.com.zone | |
[root@dns-master ~]# systemctl restart named |
# 7.3.5 添加默认 zone
1. 创建目录并修改属组
[root@dns-master ~]# mkdir /var/named/default | |
[root@dns-master ~]# chgrp named /var/named/default |
2. 准备测试环境的 zone 区域配置文件
[root@dns-master ~]# cat /var/named/default/example.com.zone | |
$TTL 600 ; DNS失效时间,单位秒; | |
example.com. IN SOA ns.example.com. xuy.nf-leasing.com. ( | |
; 区域名称 IN SOA dns.hmallleasing.com. 管理员邮箱 | |
; 区域名称可以使用过@表示,@表示当前域 | |
2025092018 ; 序列号(serial number) 十进制,不能超过10位,通常使用日期时间戳,例如2018121601 | |
10800 ; 刷新时间(refresh time) 即每隔多久到主服务器检查一次 | |
900 ; 重试时间(retry time) 即刷新不成功多久后重试,应该小于refresh time | |
604800 ; 过期时间(expire time) 当辅助DNS无法联系主DNS时,辅助DNS在多长时间内认为其缓存是有效的。 | |
86400 ; 权威应答的ttl(netgative answer ttl) ;缓存DNS服务器可以缓存记录多长时间 | |
) | |
; 给客户端返回NS记录,example.com. 域名由哪几台权威服务器提供解析 | |
example.com. IN NS ns1.example.com. | |
; A记录,配置权威域名的真实IP地址; | |
ns1.example.com. IN A 172.16.1.91 | |
; 真正的域名解析 | |
www.example.com. IN A 3.3.3.3 |
3. 检查 zone 区域配置文件语法
[root@dns-master ~]# named-checkzone example.com /var/named/default/example.com.zone | |
[root@dns-master ~]# systemctl restart named |
# 7.3.6 客户端测试
使用不同客户端查询相同的域名进行测试验证
# 172.16.1.10 解析结果 | |
[root@client ~]# dig www.example.com @172.16.1.91 +short | |
1.1.1.1 | |
# 172.16.1.200 解析结果 | |
[root@route ~]# dig www.example.com @172.16.1.91 +short | |
2.2.2.2 | |
# 172.16.1.7 解析结果 | |
[root@web01 ~]# dig www.example.com @172.16.1.91 +short | |
3.3.3.3 |
# 7.4 智能 DNS 主从场景实践
- 基于 TSIG KEY 实现多 VIEW 主从同步,TSIG KEY 是基于对称秘钥加密技术实现的 DNS 报文认证机制。
- 秘钥生成后存放至通信双方的配置文件中,报文传送前使用对称加密计数。
# 7.4.1 生成 TSIG-KEY
使用 BIND 自带的工具 ddns-confgen 生成 TSIG-KEY,每个 view 需要一对 TSIG-KEY
#1. 生成 default 默认 TSIG-KEY | |
[root@dns-master ~]# ddns-confgen -a hmac-md5 | |
key "default-key" { | |
algorithm hmac-md5; | |
secret "MGMtJqmFgFdGU1yh7/FzBQ=="; | |
}; | |
#2. 生成测试环境 TSIG-KEY | |
[root@dns-master ~]# ddns-confgen -a hmac-md5 | |
key "test-key" { | |
algorithm hmac-md5; | |
secret "0huRl0JD1goOvb6/BupIKw=="; | |
}; | |
#3. 生成生产环境 TSIG-KEY | |
[root@dns-master ~]# ddns-confgen -a hmac-md5 | |
key "prod-key" { | |
algorithm hmac-md5; | |
secret "1q8T/d2fNp4Y4sLETWZPBA=="; | |
}; |
# 7.4.2 Master DNS 配置
Master DNS named.conf 配置(172.16.1.91)
[root@dns-master ~]# cat /etc/named.conf | |
// | |
// named.conf | |
// | |
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS | |
// server as a caching only nameserver (as a localhost DNS resolver only). | |
// | |
// See /usr/share/doc/bind*/sample/ for example named configuration files. | |
// | |
// See the BIND Administrator's Reference Manual (ARM) for details about the | |
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html | |
options { | |
// ipv4监听地址及端口 | |
listen-on port 53 { any; }; | |
// ipv6监听地址及端口 | |
listen-on-v6 port 53 { ::1; }; | |
// 区域配置存储目录 | |
directory "/var/named"; | |
// DNS解析过内容的缓存文件 | |
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"; | |
recursing-file "/var/named/data/named.recursing"; | |
secroots-file "/var/named/data/named.secroots"; | |
// 允许谁本台DNS发起查询请求(localhost|ip|any) | |
allow-query { any; }; | |
//允许哪个地址同步master配置信息 | |
allow-transfer { 172.16.1.92; }; | |
//主动通知辅助DNS域名变更 | |
also-notify { 172.16.1.92; }; | |
/* | |
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion. | |
- If you are building a RECURSIVE (caching) DNS server, you need to enable | |
recursion. | |
- If your recursive DNS server has a public IP address, you MUST enable access | |
control to limit queries to your legitimate users. Failing to do so will | |
cause your server to become part of large scale DNS amplification | |
attacks. Implementing BCP38 within your network would greatly | |
reduce such attack surface | |
*/ | |
//递归查询 | |
recursion yes; | |
allow-recursion { 192.168.40.0/24;172.16.1.0/24; }; | |
//安全校验相关的 | |
dnssec-enable yes; | |
//安全校验相关的 | |
dnssec-validation yes; | |
/* Path to ISC DLV key */ | |
bindkeys-file "/etc/named.root.key"; | |
managed-keys-directory "/var/named/dynamic"; | |
pid-file "/run/named/named.pid"; | |
session-keyfile "/run/named/session.key"; | |
}; | |
// 控制日志输出的级别以及输出的位置 | |
logging { | |
channel default_debug { | |
file "data/named.run"; | |
severity dynamic; | |
}; | |
}; | |
//模拟测试业务地址段 | |
acl "test" { | |
172.16.1.10; | |
}; | |
//模拟生产业务地址段 | |
acl "prod" { | |
172.16.1.200; | |
}; | |
//TSIG-KEY | |
key "default-key" { | |
algorithm hmac-md5; | |
secret "MGMtJqmFgFdGU1yh7/FzBQ=="; | |
}; | |
key "test-key" { | |
algorithm hmac-md5; | |
secret "0huRl0JD1goOvb6/BupIKw=="; | |
}; | |
key "prod-key" { | |
algorithm hmac-md5; | |
secret "1q8T/d2fNp4Y4sLETWZPBA=="; | |
}; | |
//测试业务view | |
view "test-project" { | |
//须取消两台DNS主机通过地址匹配,使其通过TSIG-KEY匹配,如果不取消会出现拒绝访问 | |
match-clients { key test-key; !172.16.1.91;!172.16.1.92; "test"; }; | |
//Slave节点与Master节点通讯使用key-test | |
server 172.16.1.92 { keys test-key; }; | |
//允许test-project view区域使用test-key传输区域文件 | |
allow-transfer { key test-key; }; | |
recursion yes; | |
zone "." IN { | |
type hint; | |
file "named.ca"; | |
}; | |
zone "example.com" { | |
type master; | |
file "test/example.com.zone"; | |
}; | |
}; | |
//生产业务view | |
view "prod-project" { | |
//须取消两台DNS主机通过地址匹配,使其通过TSIG-KEY匹配,如果不取消会出现拒绝访问 | |
match-clients { key prod-key; !172.16.1.91;!172.16.1.92; "prod"; }; | |
//Slave节点与Master节点通讯使用prod-key | |
server 172.16.1.92 { keys prod-key; }; | |
//允许test-project view区域使用prod-key传输区域文件 | |
allow-transfer { key prod-key; }; | |
recursion yes; | |
zone "." IN { | |
type hint; | |
file "named.ca"; | |
}; | |
zone "example.com" { | |
type master; | |
file "prod/example.com.zone"; | |
}; | |
}; | |
//默认的view | |
view "default" { | |
//须取消两台DNS主机通过地址匹配,使其通过TSIG-KEY匹配,如果不取消会出现拒绝访问 | |
match-clients { key default-key; !172.16.1.91;!172.16.1.92; any; }; | |
//Slave节点与Master节点通讯使用default-key | |
server 172.16.1.92 { keys default-key; }; | |
//允许test-project view区域使用default-key传输区域文件 | |
allow-transfer { key default-key; }; | |
recursion yes; | |
zone "." IN { | |
type hint; | |
file "named.ca"; | |
}; | |
zone "example.com" { | |
type master; | |
file "default/example.com.zone"; | |
}; | |
}; | |
//包含其他文件 | |
#include "/etc/named.rfc1912.zones"; | |
include "/etc/named.root.key"; |
# 7.4.3 Slave DNS 配置
Slave DNS named.conf 配置(172.16.1.92)
[root@dns-slave ~]# cat /etc/named.conf | |
// | |
// named.conf | |
// | |
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS | |
// server as a caching only nameserver (as a localhost DNS resolver only). | |
// | |
// See /usr/share/doc/bind*/sample/ for example named configuration files. | |
// | |
// See the BIND Administrator's Reference Manual (ARM) for details about the | |
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html | |
options { | |
listen-on port 53 { any; }; | |
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"; | |
recursing-file "/var/named/data/named.recursing"; | |
secroots-file "/var/named/data/named.secroots"; | |
allow-query { any; }; | |
masterfile-format text; | |
/* | |
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion. | |
- If you are building a RECURSIVE (caching) DNS server, you need to enable | |
recursion. | |
- If your recursive DNS server has a public IP address, you MUST enable access | |
control to limit queries to your legitimate users. Failing to do so will | |
cause your server to become part of large scale DNS amplification | |
attacks. Implementing BCP38 within your network would greatly | |
reduce such attack surface | |
*/ | |
recursion yes; | |
dnssec-enable yes; | |
dnssec-validation yes; | |
/* Path to ISC DLV key */ | |
bindkeys-file "/etc/named.root.key"; | |
managed-keys-directory "/var/named/dynamic"; | |
pid-file "/run/named/named.pid"; | |
session-keyfile "/run/named/session.key"; | |
}; | |
logging { | |
channel default_debug { | |
file "data/named.run"; | |
severity dynamic; | |
}; | |
}; | |
//模拟测试业务地址段 | |
acl "test" { | |
172.16.1.10; | |
}; | |
//模拟生产业务地址段 | |
acl "prod" { | |
172.16.1.200; | |
}; | |
//TSIG-KEY | |
key "default-key" { | |
algorithm hmac-md5; | |
secret "MGMtJqmFgFdGU1yh7/FzBQ=="; | |
}; | |
key "test-key" { | |
algorithm hmac-md5; | |
secret "0huRl0JD1goOvb6/BupIKw=="; | |
}; | |
key "prod-key" { | |
algorithm hmac-md5; | |
secret "1q8T/d2fNp4Y4sLETWZPBA=="; | |
}; | |
//测试业务view | |
view "test-project" { | |
//须取消两台DNS主机通过地址匹配,使其通过TSIG-KEY匹配,如果不取消会出现拒绝访问 | |
match-clients { key test-key; !172.16.1.91;!172.16.1.92; "test"; }; | |
//Slave节点与Master节点通讯使用key-test | |
server 172.16.1.91 { keys test-key; }; | |
recursion yes; | |
zone "." IN { | |
type hint; | |
file "named.ca"; | |
}; | |
zone "example.com" { | |
type slave; | |
file "test/example.com.zone"; | |
masters { 172.16.1.91; }; | |
}; | |
}; | |
//生产业务view | |
view "prod-project" { | |
//须取消两台DNS主机通过地址匹配,使其通过TSIG-KEY匹配,如果不取消会出现拒绝访问 | |
match-clients { key prod-key; !172.16.1.91;!172.16.1.92; "prod"; }; | |
//Slave节点与Master节点通讯使用prod-key | |
server 172.16.1.91 { keys prod-key; }; | |
recursion yes; | |
zone "." IN { | |
type hint; | |
file "named.ca"; | |
}; | |
zone "example.com" { | |
type slave; | |
file "prod/example.com.zone"; | |
masters { 172.16.1.91; }; | |
}; | |
}; | |
//默认的view | |
view "default" { | |
//须取消两台DNS主机通过地址匹配,使其通过TSIG-KEY匹配,如果不取消会出现拒绝访问 | |
match-clients { key default-key; !172.16.1.91;!172.16.1.92; any; }; | |
//Slave节点与Master节点通讯使用default-key | |
server 172.16.1.91 { keys default-key; }; | |
recursion yes; | |
zone "." IN { | |
type hint; | |
file "named.ca"; | |
}; | |
zone "example.com" { | |
type slave; | |
file "default/example.com.zone"; | |
masters { 172.16.1.91; }; | |
}; | |
}; | |
#include "/etc/named.rfc1912.zones"; | |
include "/etc/named.root.key"; |
# 7.4.4 验证结果
#1. 新建目录并修改权限 | |
[root@dns-slave ~]# mkdir /var/named/test | |
[root@dns-slave ~]# mkdir /var/named/prod | |
[root@dns-slave ~]# mkdir /var/named/default | |
[root@dns-slave ~]# chown named.named /var/named/test | |
[root@dns-slave ~]# chown named.named /var/named/prod/ | |
[root@dns-slave ~]# chown named.named /var/named/default/ | |
#2. 修改 master 所有区域配置文件序列号并重启 master 和 slave | |
[root@dns-master ~]# systemctl restart named | |
[root@dns-slave ~]# systemctl restart named | |
#3. 检查区域配置文件是否同步 | |
[root@dns-slave ~]# ll /var/named/test/example.com.zone /var/named/default/example.com.zone | |
-rw-r--r-- 1 named named 337 Sep 21 19:27 /var/named/default/example.com.zone | |
-rw-r--r-- 1 named named 337 Sep 21 19:27 /var/named/prod/example.com.zone | |
-rw-r--r-- 1 named named 337 Sep 21 19:27 /var/named/test/example.com.zone | |
#4.172.16.1.10 解析结果 | |
[root@client ~]# dig www.example.com @172.16.1.91 +short | |
1.1.1.1 | |
[root@client ~]# dig www.example.com @172.16.1.92 +short | |
1.1.1.1 | |
#5.172.16.1.200 解析结果 | |
[root@route ~]# dig www.example.com @172.16.1.91 +short | |
2.2.2.2 | |
[root@route ~]# dig www.example.com @172.16.1.92 +short | |
2.2.2.2 | |
#6.172.16.1.7 解析结果 | |
[root@web01 ~]# dig www.example.com @172.16.1.91 +short | |
2.2.2.2 | |
[root@web01 ~]# dig www.example.com @172.16.1.92 +short | |
2.2.2.2 |
修改 master 区域配置文件检查 slave 是否同步成功
[root@dns-master ~]# cat /var/named/default/example.com.zone | |
$TTL 600 ; DNS失效时间,单位秒; | |
example.com. IN SOA ns.example.com. xuy.nf-leasing.com. ( | |
; 区域名称 IN SOA dns.hmallleasing.com. 管理员邮箱 | |
; 区域名称可以使用过@表示,@表示当前域 | |
2025092059 ; 序列号(serial number) 十进制,不能超过10位,通常使用日期时间戳,例如2018121601 | |
10800 ; 刷新时间(refresh time) 即每隔多久到主服务器检查一次 | |
900 ; 重试时间(retry time) 即刷新不成功多久后重试,应该小于refresh time | |
604800 ; 过期时间(expire time) 当辅助DNS无法联系主DNS时,辅助DNS在多长时间内认为其缓存是有效的。 | |
86400 ; 权威应答的ttl(netgative answer ttl) ;缓存DNS服务器可以缓存记录多长时间 | |
) | |
; 给客户端返回NS记录,example.com. 域名由哪几台权威服务器提供解析 | |
example.com. IN NS ns1.example.com. | |
; A记录,配置权威域名的真实IP地址; | |
ns1.example.com. IN A 172.16.1.91 | |
; 真正的域名解析 | |
www.example.com. IN A 2.2.2.2 | |
bbs.example.com. IN A 8.8.8.8 | |
[root@dns-slave ~]# cat /var/named/default/example.com.zone | |
$ORIGIN . | |
$TTL 600 ; 10 minutes | |
example.com IN SOA ns.example.com. xuy.nf-leasing.com. ( | |
2025092059 ; serial | |
10800 ; refresh (3 hours) | |
900 ; retry (15 minutes) | |
604800 ; expire (1 week) | |
86400 ; minimum (1 day) | |
) | |
NS ns1.example.com. | |
$ORIGIN example.com. | |
bbs A 8.8.8.8 | |
ns1 A 172.16.1.91 | |
www A 2.2.2.2 | |
[root@web01 ~]# dig bbs.example.com @172.16.1.92 +short | |
8.8.8.8 |
