DNS服务和Bind,bind编译安装,CDN介绍
1、DNS服务:
DNS:Domain Name service 应用层协议
BIND:Bekerley Internat Name Domain
ISC :www.isc.org
C/S架构的协议,所以由socket工作
udp/53 tcp/53
默认使用的udp
本地名称解析配置文件:hosts
/etc/hosts
%WINDIR%/system32/driver/etc/hosts
93.46.8.89 www.google.com
2、DNS域名
根域
一级域名:Top Level Domain:tld
com, edu, mil, gov, net, org, int, arpa
三类:组织域,国家域(.cn, .ca, .hk, .tw), 反向域
二级域
三级域
最多127级域名
ICANN:互联网名称与数字地址分配机构,负责在全球范围内对互联网通用顶级域名(gTLD)以及国家和地区顶级域名(ccTLD)系统的管理,以及根服务器系统的管理
3、DNS域名结构:
4、DNS解析:
DNS查询类型:递归查询,迭代查询
递归:查询者发出一次请求,就能得到结果 ----client
迭代:查询请求发出多次,才能得到结果 ----DNS server
名称服务器:域内负责解析本地内的名称的主机
根服务器:13组服务器。
解析类型:
FQDN --> IP
IP --> FQDN
注意:正反向解析是两个不同的名称空间,是两颗不同的解析树,但也可以用同一服务器器
一次完整的查询请求经过的流程:
Client ---> hosts文件
---> DNS Service Local Cache
--->DNS Server (recursion,递归)
---> Server Cache
----> iteration(迭代)
---> 根
---> 顶级域名DNS
---> 二级域名DNS。。。
解析答案:
肯定答案
否定答案:请求的条目不存在等原因导致无法返回结果
权威答案:
非权威答案 :比如缓存提供的结果,非本域提供的结果
5、DNS服务器类型
DNS服务器的类型:
主DNS服务器
从DNS服务器
缓存DNS 服务器(转发器)
主DNS服务器:管理和维护所负责解析的域内解析库的服务器。由管理员维护的
从DNS 服务器:从主服务器或从服务器“复制”(区域传输) 解析库副本
序列号:解析库版本号,主服务器解析库变化时,其序列递增
刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔。
过期时长:从服务器联系不到主服务器时,多久停止服务
通知 机制: 主服务器解析库发生变化时,会主动通知从服务器。yu
如果第一台没相应,才会找第二台,如果第一台解析不到,不会找第二台
6、区域传输:
区域传输:
完全传输:传送整个解析库
增量传输:传递解析库变化的那部分内容
Domain:Fully Qualified Domain Name
正向和反向个需要一个解析库
正向:FQDN ----> IP
反向:IP ---> FQDN
负责本地域名的正向和反响解析库
域:
正向区域
反响区域
7、资源记录:
区域解析库:由众多的RR组成
资源记录: Resource Record , RR
记录类型:A ,AAAA,PTR,SOA,NS,CNAME,MX
SOA:start of authority:起始授权记录,一个区域解析库有且只有一个SOA记录,必须位于解析库的第一条记录
A:internet Address 作用FQDN -->IP
AAAA:FQDN--->IPv6
PTR: PoinTeR, IP--->FQDN
NS: name server 专用于标明当前区域的DNS 服务器
CNAME:Canonical name 别名记录
MX:mail exchanger 邮件交换器
资源记录定义的格式:
语法:name[ TTL ] IN rr-type value
注意:
- TTL 可以从全局继承
- @ 可用于引用当前区域的名字
- 同一个名字可以通过多条记录定义多个不同的值,此时DNS服务器会以轮询方式响应
- 同一个值也可能有多个不同的定义名字,通过多个不同的名字指向同一个值进行定义,此仅表示通过多个不同名字可以找到同一个主机
- IN:internet
SOA记录:
name: 当前区域的名字,例如 linux.com.
value: 由多部分组成
- 当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字
- 当前区域管理员的邮箱地址,但地址中不能使用@符号,一般用. 替换, admin.linux.com.
- 主从服务区域传输相关定义以及否定的答案的同一的TTL
例如:
linux.com. 86400 IN SOA ns.linux.com. nsadmin.linux.com. (
2019032801; 序列号
2H;刷新时间
10M;重试时间
1W;过期时间
1D;否定答案的TTL 值
)
NS记录:
name: 当前区域的名字
value:当前区域的某DNS服务器的名字,例如:ns.linux.com.
注意:一个区域可以有多个NS 记录
例如:
linux.com. IN NS ns1.linux.com.
linux.com. IN NS ns2.linux.com.
注意:
- 相邻的两个资源记录的name相同时,后续的可省略
- 对NS记录而言,任何一个NS记录后面的服务器名字,都应该再后续有一个A记录
MX记录:
name: 当前区域的名字
value:当前区域的某邮件服务器(smtp服务器)的主机名
一个区域内,MX记录可有多个,但是每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级,数字越小优先级越高
例如:
linux.com. IN MX 10 mx1.linux.com.
IN MX 20 mx2.linux.com.
注意: 对MX记录,任何一个MX记录后面的服务器名字,都应该有一个A记录
A记录:
name: 某主机的FQDN,例如:www.linux.com.
value: 主机名对那个主机的IP 地址
例如:
轮询解析:
www.linux.com. IN A 1.1.1.1
www.linux.com. IN A 1.1.1.2
通过不同的名字,找到同一个主机:
mx1.linux.com IN A 1.1.1.3
mx2.linux.com IN A 1.1.1.3
注意:
避免用户写错名称给错误答案,可通过泛域名解析进行解析至某特定地址。
*.linux.com. IN A 1.1.1.4
正确,就按照正确的解析
linux.com. IN A 1.1.1.5
AAAA记录
value:IPv6
PTR:
name:IP,有特定格式,把IP地址反过来写,1.2.3.4,要写坐4。3.2.1
而特定后缀:in-addr.arpa.
所以完整写法: 4.3.2.1.in-addr.arpa.
value:FQDN
例如:
4.3.2.1.in-addr.arpa. IN PTR www.linux.com.
如1.2.3为网络地址,可简写:
4 IN PTR www.linux.com.
注意:网络地址及后缀可以省略,主机地址依然需要反着写
CNAME:
name: 别名的FQDN
value:真正名字的FQDN
例如:
www.linux.com. IN CNAME web.linux.com
8、子域授权
子域授权:每个域的名称服务器,都是通过其上级名称服务器再解析库进行授权
类似根域授权tld:根解析库,授权.com的域名服务器
.com. IN NS ns1.com.
.com. IN NS ns2.com.
ns1.com. IN A 2.2.2.1
ns2.com. IN A 2.2.2.2
linux.com. 在 .com的名称服务器上,解析库中添加资源记录
linux.com. IN NS ns1.linux.com.
linux.com. IN NS ns2.linux.com.
linux.com. IN NS ns3.linux.com.
ns1.linux.com. IN A 3.3.3.1
ns2.linux.com. IN A 3.3.3.2
ns3.linux.com. IN A 3.3.3.3
glue record: 粘合记录,父域授权子域的记录
9、互联网域名
域名注册:
代理商:万网,新网,godaddy
注册完成以后,想自己用专用服务来解析(也就是说,自己有两台服务器,且IP 可以外网访问)
1、对方提供的管理后台,把NS记录指向的服务器名称,和A 记录指向的服务器地址
10、BIND的安装:
dns服务:程序包名 bind, 程序名named
程序包:
bind-libs 相关库
bind-utils 客户端,测试工具
bind:服务器
bind-chroot: /var/named/chroot
yum info bind-chroot
bind服务器:
服务脚本和名称:/etc/rc.d/init.d/named /usr/lib/systemd/system/named.service
主配置文件: /etc/named.conf /etc/name.rcf1912.zones 辅助区域配置文件, /etc/rdnc.key
解析库文件:/var/named/ZONE_NAME.ZONE
注意:
- 一台物理服务器可同时为多个区域提供解析
- 必须要有根区域文件,/var/named/named.ca
- 应该有两个(如果包括IPv6,应该更多) 实现localhost和本地回环地址的解析库
/var/named/named.localhost
/var/named/named.loopback
rndc: remote name domain controller,也是一个服务
默认与bind安装在同一主机,且只能通过127.0.0.1连接named进程
提供辅助性的管理功能;953/tcp
配置文件:
主配置文件:/etc/named.conf
全局配置: options{};
日志系统配置: logging{};
区域定义:本机能够为哪些zone进行解析,就要定义哪些zone
zone “ZONE-NAME" IN {}
注意:任何服务程序如果期望其能够通过网络被其他主机访问,至少应该监听在一个能与外部主机通信的IP 地址上
缓存名称服务器的配置:
首先,一个名称服务器,必须要有13个根服务器,以及两个localhost 和本地会换地址解析库
其次,需要能够与外部通信,所以监听外部地址即可,listen-on port 53 { 192.168.0.3;127.0.0.1; };
dnssec:建议关闭,设为no,dns解析要加签名,避免dns记录为污染
allow-query { any; };
主DNS服务器:
主DNS名称服务器:
1: 在主配置文件中定义区域, 也可以写到人rfc1912辅助配置文件
zone ”ZONE_NAME" IN {
type {master | slave| hint | forward} ; // hint:根
file "ZONE_NAME.zone";
};
2: 定义区域解析库文件:
出现的内容
宏定义
资源记录
directory "/var/named"; 此目录下创建ZONE_NAME.zone文件 ,工作目录
@ IN NS ns1.linux.com.
注意:后面的 .linux.com. 可以省去,默认会自动加上,ns1 后面不能有 点
可以明确指明要补的内容,因为默认只补区域名
$ORIGIN linux.com.
[root@localhost named]# named-checkconf 检查配置文件 [root@localhost named]# named-checkzone 'linux.com' /var/named/linux.com.zone zone linux.com/IN: loaded serial 2019032901 OK 检查区域文件
注意文件的权限
[root@localhost named]# ps aux | grep named named 8016 0.0 3.2 259388 59960 ? Ssl 00:07 0:00 /usr/sbin/named -u named -c /etc/named.conf root 8029 0.0 0.2 151580 5188 pts/0 S+ 00:23 0:00 vim /etc/named.conf root 8040 0.0 0.0 112724 988 pts/1 S+ 00:46 0:00 grep --color=auto named [root@localhost named]# [root@localhost named]# ls -al /etc/named.conf -rw-r----- 1 root named 1784 3月 30 00:07 /etc/named.conf [root@localhost named]# [root@localhost named]# [root@localhost named]# [root@localhost named]# ls -al /var/named/ 总用量 24 drwxrwx--T 5 root named 149 3月 30 00:42 . drwxr-xr-x. 21 root root 4096 3月 29 23:19 .. drwxrwx--- 2 named named 23 3月 29 23:58 data drwxrwx--- 2 named named 31 3月 30 00:03 dynamic -rw-r--r-- 1 root root 307 3月 30 00:42 linux.com.zone named进程是named用户,所以区域文件也得有权限读,所以要改
但是最好改属组 -rw-r----- 1 root named 2281 5月 22 2017 named.ca -rw-r----- 1 root named 152 12月 15 2009 named.empty -rw-r----- 1 root named 152 6月 21 2007 named.localhost -rw-r----- 1 root named 168 12月 15 2009 named.loopback drwxrwx--- 2 named named 6 10月 31 08:29 slaves [root@localhost named]#
----->
[root@localhost named]# ls -al linux.com.zone -rw-r--r-- 1 root named 307 3月 30 00:42 linux.com.zone
rndc
[root@localhost named]# rndc status version: 9.9.4-RedHat-9.9.4-72.el7 <id:8f9657aa> CPUs found: 4 worker threads: 4 UDP listeners per interface: 4 number of zones: 101 debug level: 0 xfers running: 0 xfers deferred: 0 soa queries in progress: 0 query logging is OFF recursive clients: 0/0/1000 tcp clients: 0/100 server is up and running
service named reload: 重载配置文件 或者rndc reload
/var/named/linux.con.zone
[root@localhost ~]# vim /var/named/linux.com.zone $TTL 1D @ IN SOA ns1.linux.com. admin.linux.com. ( 2019032901 1H 5M 7D 1D ) IN NS ns1.linux.com. IN NS ns2.linux.com. IN MX 10 mx1 IN MX 20 mx2 ns1 IN A 192.168.112.111 ns2 IN A 192.168.112.112 mx1 IN A 192.168.112.113 mx2 IN A 192.168.112.114 www IN A 192.168.112.111 www IN A 192.168.112.112 ftp IN CNAME www
dig 测试:
[root@localhost etc]# dig -t A www.linux.com @192.168.112.111 ; <<>> DiG 9.9.4-RedHat-9.9.4-72.el7 <<>> -t A www.linux.com @192.168.112.111 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37790 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 3
aa:表示权威答案
;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.linux.com. IN A ;; ANSWER SECTION: www.linux.com. 86400 IN A 192.168.112.111 这条才是真正解析的结果,多次执行dig,会发现轮询解析 www.linux.com. 86400 IN A 192.168.112.112 ;; AUTHORITY SECTION: linux.com. 86400 IN NS ns1.linux.com. linux.com. 86400 IN NS ns2.linux.com. ;; ADDITIONAL SECTION: ns1.linux.com. 86400 IN A 192.168.112.111 ns2.linux.com. 86400 IN A 192.168.112.112 ;; Query time: 1 msec ;; SERVER: 192.168.112.111#53(192.168.112.111) ;; WHEN: 六 3月 30 01:06:38 CST 2019 ;; MSG SIZE rcvd: 142
11、测试工具:
dig [-t type] name [@SERVER] [query options]
@ 这项省去,就是通过 /etc/resolv.conf 里的nameserver 进行解析
dig只用于测试dns系统,不会查询hosts文件进行解析
查询选项:
+[no ] trace :跟踪解析过程,dig + trace linux.com
+[no] recurse: 进行递归解析
测试反向解析:
dig -x IP= dig -t reverseip.in-addr.arpa
模拟区域传送:
dig -t axfr ZONE_NAME @SERVER
dig -t axfr linux.com @10.1.1.1
dig -t axfr 10.1.11.in-addr.arpa @172.16.1.1
dig -t NS . @114.114.114.114
host:测试命令:
host [-t type] name [SERVER]
host –t NS magedu.com 172.16.0.1
host –t soa magedu.com
host –t mx magedu.com
host –t axfr magedu.com
host 1.2.3.4
nslookup命令: nslookup [-option] [name | -] [server]
交互式模式: nslookup>
>server IP: 指明使用哪个DNS server进行查询
>set q=RR_TYPE: 指明查询的资源记录类型
>NAME: 要查询的名称
[root@localhost etc]# nslookup > server 192.168.112.111 Default server: 192.168.112.111 Address: 192.168.112.111#53 > set q=A > www.linux.com Server: 192.168.112.111 Address: 192.168.112.111#53 Name: www.linux.com Address: 192.168.112.111 Name: www.linux.com Address: 192.168.112.112 >
12、反向区域:
区域名称:网络地址的反写.in-addr.arpa.
192.168.112. ----> 112.168.192.in-addr.arpa.
- 定义区域
zone "ZONE_NAME" IN {
type {master | slave | forward|
file "网络地址.zone"
}
2、区域解析库文件:不需要A,MX . AAAA记录,以PTR为主
[root@localhost ~]# cat /var/named/192.168.112.zone $TTL 86400 $ORIGIN 112.168.192.in-addr.arpa. @ IN SOA ns1.linux.com admin.linux.com ( 2019032901 1H 5M 7D 1D) IN NS ns1.linux.com. IN NS ns2.linux.com. 111 IN PTR ns1.linux.com. 111 IN PTR www.linux.com. 112 IN PTR ns2.linux.com. 112 IN PTR www.linux.com. 113 IN PTR mx1.linux.com. 114 IN PTR mx2.linux.com.
13、主从同步:
从服务器:
- 应该为一台独立的名称服务器
- 主服务器的区域解析库文件中必须有一条NS 记录指向从服务器
- 从服务器只需要定义区域 (/etc/named.rfc1912.zones),而无需提供解析文件,解析库文件应该放于/vr/named/slaves/目录中
- 主服务器得允许从服务器做区域传送 ,默认是允许的,最好做限制,只能从服务器
从: 执行dig -t axfr linux.com @192.168.112.111
- 主从服务器时间应该同步,可以ntp进行
- bind程序的版本应该保持一致,否则从高,主低
- 定义区域
zone "linux.com" IN { type slave; masters { 192.168.112.111; }; file "slaves/linux.com.zone"; };
rndc命令 rndc:
rndc --> rndc服务器端 (953/tcp)
rndc COMMAND
COMMAND:
reload: 重载主配置文件和区域解析库文件
reload zonename: 重载区域解析库文件
retransfer zonename: 手动启动区域传送,而不管序列号是否增加
notify zonename: 重新对区域传送发通知
reconfig: 重载主配置文件
querylog: 开启或关闭查询日志文件/var/log/message
trace: 递增debug一个级别
trace LEVEL: 指定使用的级别
notrace:将调试级别设置为 0
flush:清空DNS服务器的所有缓存记录
14、子域授权
子域授权:分布式数据库的手段
正向解析区域的子域方法:
定义一个子区域:定义在父域下方,直接写
ops.magedu.com. IN NS ns1.ops.magedu.com.
ops.magedu.com. IN NS ns2.ops.magedu.com.
ns1.ops.magedu.com. IN A 1.1.1.1
ns2.ops.magedu.com. IN A 1.1.1.2
15、定义转发服务器:
注意:被转发的服务器需要能够为请求者做递归,否则,转发请求不允许进行
1、全部转发:凡是对非本机所负责解析的区域的请求,都转发给指定的服务器
options {
forward { first | only } 转发模式:first:请求转发到父域,如果没有,自己转发到根去找, only,父域找不到,就不找了
fowarders
};
2、区域转发:仅转发对特定的区域的请求至某服务器
zone “linux.com" IN {
type forward;
forward {first | only };
forwarders { 192.1.1.1; };
};
注意:因为rpm包安装的bind,默认是开启dnssec的,所以必须改为no,注释掉也是没有的
步骤:
- s1,创建为父域,并写子域
- s2,跟s1 一样的配置,配置子域
- s2在 /etc/named.conf中的options中开启全部转发,
- 或者 s2 /etc/named.rfc1912.zones 中创建区域转发
16、bind中基础的安全相关的配置。
acl:把一个或多个主机归并为一个集合,并通过一个统一 的名称调用
acl acl_name {
ip;
net/prelen;
};
例如:
acl mynet { 这个名字写道要控制的zone中。
192.168.0.0/16;
}
bind有四个内置的acl:
none:没有一个主机
any:任意主机
local:本机
localnet:本机的ip和掩码计算所得的网络地址
注意:只能先定义,后使用,因此,其一般定义在配置文件中options的前面。
访问控制的参数指令:写道zone和 options中
allow-query {} 允许查询的主机,白名单
allow-transfer {} 允许区域传送的主机,白名单
allow-recursion {} 允许递归的主机,本地网络内的主机递归。,一般定义在全局options中
allow-update {} 允许更新区域数据库中的数据。针对dhcp
17、bind view
试图:
一个bind服务器可定义多个view,每个view中可定义多个zone,
多个view中可定义相同的zone,每一个view用来匹配一组客户端。
多个view内可能需要对同一个区域进行解析,但使用不同的区域解析库文件
view VIEW-NAME {
match-clients { } ;
}
注意:
用在options中的选项,都可以用在view中
一旦启用了view,所有的zone都定义在view中。
仅在匹配到允许递归请求的客户所在view中定义根区域
客户端请求到达时,是自上而下检查每个view所服务的客户端列表,匹配到,就不会往下了
18、CDN
CDN:内容分发网络,让地区的同一路线访问当地的同一路线的网络,且比BGP机房要便宜很多。。CDN使用单线的机房,根据用户的路线以及位置,为用户选择靠近用户位置以及相同运营商路线。
CDN加速的特点:
- 本地cache 加速提高了企业站点,尤其大量图片和静态页面的站点的访问速度
- 镜像服务消除了不同运营商之间互联的瓶颈,实现了跨运营商的网络加速
- 远程加速远程访问用户根据DNS负载均衡技术智能选择CACHE服务
- 宽带优化自动生成服务器的远程镜像cache服务器
- CDN可以认为是分布式的web缓存
[root@ns1 ~]# curl -I www.163.com HTTP/1.1 200 OK Date: Sat, 30 Mar 2019 06:58:32 GMT Expires: Sat, 30 Mar 2019 06:59:23 GMT Server: nginx Content-Type: text/html; charset=GBK Transfer-Encoding: chunked Vary: Accept-Encoding,User-Agent,Accept Cache-Control: max-age=80 X-Via: 1.1 PSjszjsx4tl83:1 (Cdn Cache Server V2.0), 1.1 fang35:0 (Cdn Cache Server V2.0) Connection: keep-alive
CDN的价值:
-
- 省钱
- 提升用户体验
- 可以阻挡大部分的流浪攻击
19、使用CDN的基本要求:
要加速的业务数据应该存在独立的域名,动态和静态混在一起就不能加速。
加速前:
加速后:如果加速后没有找到,就去源站,并把数据缓存到某地,同时把数据返回给用户
20、bind的编译安装:
编译安装bind 下载bind: isc.org:
bind-9.10
bind-9.11
bind-10
编译安装bind
tar xvf bind-9.11.0a3.tar.gz
cd bind-9.11.0a3/
groupadd -r -g 53 named
useradd -r -u 53 -g 53 named
./configure --prefix=/usr/local/bind9 --sysconfdir=/etc/named/ --withoutopenssl --disable-ipv6 --disable-chroot --enable-threads
make make install 环境变量:
• vim /etc/profile.d/named.sh
export PATH=/usr/local/bind9/bin: /usr/local/bind9/sbin/:$PATH
库和头文件
• vim /etc/ld.so.conf.d/named.conf /usr/local/bind9/lib
• ldconfig –v • ls -sv /usr/local/bind9/include /usr/include/named
man帮助
• vim /etc/man.config | /etc/man_db.conf MANPATH /usr/local/bind9/share/man
• man named.conf vim /etc/named/named.conf
options { directory "/var/named/" }; zone "." IN { type hint; file "named.ca"; }; zone "localhost" IN { type master; file “named.localhost"; allow-update {none;}; }; zone “1.0.0.127.in-addr.arpa" IN { type master; file "named.loopback"; allow-update {none;}; }; 区域数据库 • mkdir /var/named • named-checkconf • dig +norec @a.root-servers.net > /var/named/named.ca • vim /var/named/named.localhost $TTL 1d @ IN SOA localhost. admin.localhost. ( 2016061801 1h 5m 7d 1d) IN NS localhost. localhost. IN A 127.0.0.1
vim /var/named/named.loopback $TTL 1d @ IN SOA localhost. admin.localhost. ( 2016061801 1h 5m 7d 1d) NS @ A 127.0.0.1 PTR localhost. 设置权限 • chmod 640 /var/named/* • chmod 640 /etc/named/named.conf • chgrp -R named /var/named/ • chgrp named /etc/named/named.conf 启动服务和测试 • man named • named -u named -f -g -d 3 前端级别3方式运行 • named -u named 后台运行 • killall named • ss -tuln • tail /var/log/message • named -u named 支持rndc
• rndc reload
观察错误提示 • rndc-confgen -r /dev/urandom > /etc/named/rndc.conf
生成key • tail /etc/named/rndc.conf >> /etc/named/named.conf
• killall -SIGHUP named
• rndc status 压力测试 /root/bind-xxx/contrib/scripts
编译压力测试工具
• cd /root/bind-xxx/contrib/queryperf
• ./configure
• make • cp queryperf /usr/local/bind9/bin • queryperf -h 压力测试 • vim test.txt www.magedu.com A magedu.com NS magedu.com MX pop3.magedu.com A web.magedu.com A • queryperf -d test.txt -s 127.0.0.1 打开日志功能 • rndc querylog • rndc status • queryperf -d test.txt -s 127.0.0.1 • wc -l /var/log/message 52 #dig A example.com ; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> A example.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30523 ... SERVFAIL:The nameserver encountered a problem while processing the query. • 可使用dig +trace排错,可能是网络和防火墙导致 NXDOMAIN:The queried name does not exist in the zone. • 可能是CNAME对应的A记录不存在导致 REFUSED:The nameserver refused the client's DNS request due to policy restrictions. • 可能是DNS策略导致 DNS排错 53 NOERROR不代表没有问题,也可以是过时的记录 查看是否为权威记录,flags:aa标记判断 被删除的记录仍能返回结果,可能是因为*记录存在 如:*.example.com. IN A 172.25.254.254 注意“.”的使用 避免CNAME指向CNAME记录,可能产生回环 test.example.com. IN CNAME lab.example.com. lab.example.com. IN CNAME test.example.com. 正确配置PTR记录,许多服务依赖PTR,如sshd,MTA 正确配置轮询round-robin记录