今天我们来介绍一下DNS服务,在大家的印象中DNS可能只是将域名解析为IP地址,可能其他的暂时还不太了解,希望本篇内容能帮助大家。
DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,使用的是UDP协议的53号端口,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作。DNS就是这样的一位“翻译官”,它的基本工作原理可用下图来表示。
在介绍DNS服务器工作原理之前我们先来了解几个DNS相关的概念:
1、FQDN:Full Qualified Domain Name,完全限定域名,即每个域在全球网络都是唯一的;另外值得提到的一点是域并不是指诸如www.google.com这样的域名,而google.com才是域;
2、域的分类
(1)根域 :世界有13个ip地址管理,有10个在美国,1个在日本,3个在欧洲,荷兰,瑞典
(2)顶级域:顶级域(Top Level Domain,简称TLD)分为三类
1> 通用顶级域:诸如 .com(商业机构) .org(非营利性组织) .net(网络服务机构)等
2> 国家顶级域:诸如 .cn(中国) .uk(英国) .us(美国) .jp(小日本)
3> 反向域(基础建设顶级域):.arpa,即从IP到FQDN的反向解析
3、DNS服务器查询的类型:
(1)递归查询:
递归查询是最常见的查询方式,域名服务器将代替提出请求的客户机(下级DNS服务器)进行域名查询,若域名服务器不能直接回答,则域名服务器会在域各树中的各分支的上下进行递归查询,最终将返回查询结果给客户机,在域名服务器查询期间,客户机将完全处于等待状态。
当收到DNS工作站的查询请求后,DNS服务器在自己的缓存或区域数据库中查找,如找到则返回结果,如找不到,返回错误结果。即DNS服务器只会向DNS工作站返回两种信息:要么是在该DNS服务器上查找到的结果,要么是查询失败。该DNS工作站自行向该DNS服务器询问。“递归”的意思是有来有往,并且来、往的次数是一致的。
一般由DNS工作站提出的查询请求便属于递归查询。
由于递归查询是两者之间的,所以通常查询起来高效快捷,能最快应答成功或失败的解析,然而无法成功解析所有域名。一般发生在客户端与服务器间,也特殊情况是dns服务器与dns服务器之间。同时与迭代查询相对.
(2)迭代查询:
迭代查询又称重指引,当服务器使用迭代查询时能使其他服务器返回一个最佳的查询点提示或主机地址,若此最佳的查询点中包含需要查询的主机地址,则返回主机地址信息,若此时服务器不能够直接查询到主机地址,则是按照提示的指引依次查询,直到服务器给出的提示中包含所需要查询的主机地址为止,一般每次指引都会更靠近根服务器(向上),查寻到根域名服务器后,则会再次根据提示向下查找。B访问C、D、E、F、G,
都是迭代查询,首先B 访问C,得到了提示访问D的提示信息后,开始访问D,D又返回给B提示信息,告诉B应该访问E,依次类推。
4、DNS名称解析方式:
(1)正向解析:即将FQDN转化为IP。
(2)反向解析:即将IP转化为FQDN。
每台 DNS 服务器都负责管理一个有限范围(一个或几个域)内的主机域名和 IP 地址的对应关系,这些特定的 DNS 域或 IP 地址段称为“zone”(区域)。
5、DNS服务器类型:
(1)主DNS服务器:负责解析至少一个域。
(2)辅助(从)DNS服务器:负责解析至少一个,是主DNS服务器的辅助。
(3)缓存DNS服务器:不负责解析域,只是缓存域名解析结果。
6、DNS返回的结果类型:
(1)肯定答案:查询的域存在,会被缓存下来。
(2)否定答案:不存在查询的域名,因此不存在与其查询的域名对应的IP;会被缓存下来。
(3)权威答案:所查询的域名的结果是由负责解析这个域的DNS服务器所返回的答案。
(4)非权威答案:在缓存中查询的结果。
7、DNS的监听端口:tcp的53号端口,udp的53号端口。
(1)当用户在浏览器中输入www.qq.com域名访问该网站时,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
(2)如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
(3)如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
(4)如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
(5)如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www.qq.com主机。
(6)如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。
提示:从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间的交互查询就是迭代查询。
/etc/named.conf 主配置文件 服务器主要运行参数 /etc/named.rfc1912.zones 区域文件,主要指定要解析哪个域名 /var/named/xxx.xx 数据文件,用来正向和反向的解析
区域解析库:由众多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,邮件交换器
?TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如:
SPF(反垃圾邮件)记录,https验证等
示例:_dnsauth TXT 2012011200000051qgs69bwoh4h6nht4n1h0lr038x
语法:name [TTL] IN rr_type value ?注意: ?(1) TTL可从全局继承 ?(2) @可用于引用当前区域的名字 ?(3) 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询 方式响应 ?(4) 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值 进行定义;此仅表示通过多个不同的名字可以找到同一个主机
? name: 当前区域的名字,例如“baidu.com.” ? value: 有多部分组成 ? (1) 当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字; ? (2) 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换 例如:admin.baidu.com ? (3) 主从服务区域传输相关定义以及否定的答案的统一的TTL ? 例如: baidu.com. 86400 IN SOA ns.baidu.com. nsadmin.baidu.com. ( 2015042201 ;序列号 2H ;刷新时间 10M ;重试时间 1W ;过期时间 1D ;否定答案的TTL值 )
name: 当前区域的名字 ?value: 当前区域的某DNS服务器的名字,例如ns.baidu.com. ?注意:一个区域可以有多个NS记录 例如: baidu.com. IN NS ns1.baidu.com. baidu.com. IN NS ns2.baidu.com.
注意:
(1) 相邻的两个资源记录的name相同时,后续的可省略
(2) 对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有
一个A记录
name: 当前区域的名字 value: 当前区域的某邮件服务器(smtp服务器)的主机名 一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级;数字越小优先级越高 例如: baidu.com. IN MX 10 mx1.baidu.com. IN MX 20 mx2.baidu.com.
?注意:对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有
一个A记录
name: 某主机的FQDN,例如www.baidu.com. ?value: 主机名对应主机的IP地址 ?例如: www.baidu.com. IN A 1.1.1.1 www.baidu.com. IN A 2.2.2.2 mx1.baidu.com. IN A 3.3.3.3 mx2.baidu.com. IN A 4.4.4.4 $GENERATE 1-254 HOST$ A 1.2.3.$ *.baidu.com. IN A 5.5.5.5 baidu.com. IN A 6.6.6.6
注意:避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址,比如:@, * 两个关键写法。
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.baidu.com. 如1.2.3为网络地址,可简写成: 4 IN PTR www.baidu.com.
name: FQDN value: IPv6
name: 别名的FQDN value: 真正名字的FQDN ?例如: www.baidu.com. IN CNAME websrv.baidu.com.
注意:网络地址及后缀可省略;主机地址依然需要反着写。
1、dig
dig [-t type] name [@SERVER] [query options]
dig 只用于测试dns 系统,不会查询hosts 文件进行解析
查询选项:
+[no]trace程 :跟踪解析过程 : dig +trace baidu.com
+[no]reurse :进行递归解析
测试反向解析:dig -x IP = dig -t ptr reverseip.in-addr.arpa
模拟区域传送:
dig -t axfr ZONE_NAME @SERVER 抓区域数据库,可以被allow-transfer { 192.168.30.106;}; 防止
dig -t axfr baidu.com @10.10.10.11
dig -t axfr 100.1.10.in-addr.arpa @172.16.1.1
dig -t NS . @114.114.114.114 测试邮件记录
dig -t NS . @a.root-servers.net 查根的服务器,13个
2、host,查询没有dig详细
host [-t type] name [SERVER]
host -t NS baidu.com 172.16.0.1
host -t soa baidu.com
host -t mx baidu.com
host -t axfr baidu.com
host 1.2.3.4
3、nslookup: (windows和linux都有这个命令)
命令: nslookup [-option] [name | -] [server]
交互式模式:
nslookup>
server IP: 指明使用哪个DNS server 进行查询
set q=RR_TYPE: 指明查询的资源记录类型
NAME: 要查询的名称
4、rndc命令
rndc:
rndc --> rndc (953/tcp)
rndc COMMAND
COMMAND:
reload: 重载主配置文件和区域解析库文件
reload zonename: 重载区域解析库文件
retransfer zonename: 手动启动 区域传送, 而不管序列号是否增加
notify zonename: 重新对区域传送发通知,当主从同步过程发生意外时,
例:rndc notify baidu.com
reconfig: 重载主配置文件
querylog: 开启或关闭查询日志文件/var/log/message(默认不启用日志),排错的时候才开启,要不访问一条加一条记录,量太大了;关闭,执行同样的命令
tail -f /var/log/messages 动态查询日志
trace: 递增debug 一个级别
trace LEVEL: 指定使用的级别,日志级别,日志的详细程度
notrace:为将调试级别设置为 0
flush :清空DNS 服务器的所有缓存记录
14、验证linux的DNS服务具有缓存功能:
首先:我们拿一台linux主机A作为DNS服务端,另一台linux主机B作为客户端:
看一下主机A的当前网络配置:
安装bind软件:yum install bind -y
启动bind服务: systemctl start named(centos7启动)
service named start (centos6启动)
[root@ansiblenetwork-scripts]#vim ifcfg-ens33 DEVICE=ens33 BOOTPROTO=static IPADDR=192.168.34.101 PREFIX=24 GATEWAY=192.168.34.2 ONBOOT=yes DNS1=127.0.0.1
然后在主机A上ping网址,如ping www.baidu.com,此时可以看到能ping通:
[root@ansiblenetwork-scripts]#ping www.baidu.com PING www.a.shifen.com (112.80.248.75) 56(84) bytes of data. 64 bytes from 112.80.248.75 (112.80.248.75): icmp_seq=1 ttl=128 time=1003 ms 64 bytes from 112.80.248.75 (112.80.248.75): icmp_seq=2 ttl=128 time=16.8 ms 64 bytes from 112.80.248.75 (112.80.248.75): icmp_seq=3 ttl=128 time=14.6 ms 64 bytes from 112.80.248.75 (112.80.248.75): icmp_seq=4 ttl=128 time=19.7 ms 64 bytes from 112.80.248.75 (112.80.248.75): icmp_seq=5 ttl=128 time=17.6 ms ^C --- www.a.shifen.com ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 8649ms rtt min/avg/max/mdev = 14.634/214.418/1003.120/394.354 ms, pipe 2
修改配置文件:
注释掉第一个,是因为他默认是监听在本地端口上,这样是不能提供服务的。
可以改成把IP改成localhost,或是你指定的某个IP。注释后默认监听在所有本地端口上。
注释掉第二个,是因为它里面写了localhost,指明了只能被本机所使用查询功能,
注释后默认所有IP都可以使用,也可以把localhost改成any。
vim /etc/named.conf
[root@ansible~]#vim /etc/named.conf options { listen-on port 53 { localhost; }; 本地端口进行连接 allow-query { any; }; 改为any,是允许所有人进行连接此计算机
将主机B的DNS地址写成主机A的IP地址,即192.168.34.101当做主机B的DNS,指向主机A:
[root@centos6~]#vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
PROTOBOOT=static
IPADDR=192.168.34.105
GATEWAY=192.168.34.2
ONBOOT=yes
DNS1=192.168.34.101
此时将主机A的连接外网的一个网卡down掉,然后在主机B上ping www.baidu.com,此时可以ping通:
[root@ansible~]#ifconfig ens37 down 将A主机的外网网卡去掉 [root@centos6~]#ping www.baidu.com 此时还是可以通过192.168.34.101主机可以ping到外网 PING www.a.shifen.com (112.80.248.76) 56(84) bytes of data. 64 bytes from 112.80.248.76: icmp_seq=1 ttl=128 time=20.2 ms 64 bytes from 112.80.248.76: icmp_seq=2 ttl=128 time=15.0 ms 64 bytes from 112.80.248.76: icmp_seq=3 ttl=128 time=39.5 ms 64 bytes from 112.80.248.76: icmp_seq=4 ttl=128 time=17.2 ms ^C --- www.a.shifen.com ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3419ms rtt min/avg/max/mdev = 15.076/23.020/39.545/9.713 ms [root@centos6~]#dig www.baidu.com 也可以查询到当前的执行结果 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.baidu.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15097 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 5, ADDITIONAL: 5 ;; QUESTION SECTION: ;www.baidu.com. IN A ;; ANSWER SECTION: www.baidu.com. 361 IN CNAME www.a.shifen.com. www.a.shifen.com. 110 IN A 112.80.248.75 www.a.shifen.com. 110 IN A 112.80.248.76 ;; AUTHORITY SECTION: a.shifen.com. 362 IN NS ns1.a.shifen.com. a.shifen.com. 362 IN NS ns3.a.shifen.com. a.shifen.com. 362 IN NS ns4.a.shifen.com. a.shifen.com. 362 IN NS ns2.a.shifen.com. a.shifen.com. 362 IN NS ns5.a.shifen.com. ;; ADDITIONAL SECTION: ns5.a.shifen.com. 362 IN A 180.76.76.95 ns2.a.shifen.com. 362 IN A 220.181.33.32 ns3.a.shifen.com. 362 IN A 112.80.255.253 ns4.a.shifen.com. 362 IN A 14.215.177.229 ns1.a.shifen.com. 362 IN A 61.135.165.224 ;; Query time: 4 msec ;; SERVER: 192.168.34.101#53(192.168.34.101) 连接通的IP地址来自于192.168.34.101 ;; WHEN: Wed Nov 6 20:46:45 2019 ;; MSG SIZE rcvd: 260
在主配置文件中定义区域:
type类型有 主:从:根:转发。
file指区域解析库文件的文件名,默认放在/var/named/目录下,修改当前配置文件:
vim /etc/named.rfc1912.zones
[root@ansiblenamed]#vim /etc/named.rfc1912.zones
zone "baidu.com" { 将文件内容写入当前文件中
type master;
file "baidu.com.zone";
};
将 /var/named/目录下的默认配置文件复制一份,并修改区域数据解析库文件:
注意:named.localhost的属性,尤其是属组,一定要是named所属组。
[root@ansiblenamed]#cd /var/named [root@ansiblenamed]#cp -p named.localhost baidu.com.zone
修改里边的区域数据解析库内容:
[root@ansiblenamed]#vim baidu.com.zone $TTL 1D @ IN SOA dns1 admin.baidu.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS dns1 dns1 A 192.168.34.101 www CNAME webs webs A 6.6.6.6 webs A 8.8.8.8 webs A 7.7.7.7 @ MX 10 mailser1 @ MX 20 mailser2 mailser1 A 11.9.9.9 mailser2 A 9.9.9.9 @ A 8.8.8.8 此写法可以省略前面的www写法 * A 8.8.8.8 此写法避免用户只知道域名,www前面的输入错误也能打开页面。 $GENERATE 1-200 server$ A 192.168.34.$ 将一个服务生成最大200条记录
注意:以上的SOA记录里面小括号里面的那五行分别指的是 序列号;刷新时间;重试时间;
过期时间;否定答案时间的TLL值。
检测配置文件内容是否有误:
named-checkzone baidu.com /var/named/baidu.com.zone
rncd reload 重新加载服务。
[root@ansiblenamed]#named-checkzone baidu.com /var/named/baidu.com.zone zone baidu.com/IN: loaded serial 0 OK [root@ansiblenamed]#rndc reload 让此配置文件生效,或者直接重启named也可以,systemctl restart named server reload successful
主机B此时的DNS配置信息还是主机A的IP地址:
[root@centos6~]#vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
PROTOBOOT=static
IPADDR=192.168.34.105
GATEWAY=192.168.34.2
ONBOOT=yes
DNS1=192.168.34.101
在主机B上验证当前6.6.6.6的解析结果来自于主机A(192.168.34.101),结果如下:
1、dig www.baidu.com host www.baidu.com nslokup www.baidu.com 都可以查询
[root@centos6named]#dig www.baidu.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.baidu.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17575 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; QUESTION SECTION: ;www.baidu.com. IN A ;; ANSWER SECTION: www.baidu.com. 86400 IN A 6.6.6.6 ;; AUTHORITY SECTION: baidu.com. 86400 IN NS baidu.com. ;; ADDITIONAL SECTION: baidu.com. 86400 IN A 127.0.0.1 baidu.com. 86400 IN AAAA ::1 ;; Query time: 4 msec ;; SERVER: 192.168.34.101#53(192.168.34.101) ;; WHEN: Wed Nov 6 21:05:59 2019 ;; MSG SIZE rcvd: 105
此时可以看到当前的7.7.7.7解析结果也是来自于192.168.34.101:
dig blog.baidu.com host blog.baidu.com nslokup blog.baidu.com
[root@centos6named]#dig blog.baidu.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> blog.baidu.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46754 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; QUESTION SECTION: ;blog.baidu.com. IN A ;; ANSWER SECTION: blog.baidu.com. 86400 IN A 7.7.7.7 ;; AUTHORITY SECTION: baidu.com. 86400 IN NS baidu.com. ;; ADDITIONAL SECTION: baidu.com. 86400 IN A 127.0.0.1 baidu.com. 86400 IN AAAA ::1 ;; Query time: 1 msec ;; SERVER: 192.168.34.101#53(192.168.34.101) ;; WHEN: Wed Nov 6 21:06:57 2019 ;; MSG SIZE rcvd: 106
不输入www验证解析内容:
[root@ansiblenamed]#dig baidu.com
; <<>> DiG 9.9.4-RedHat-9.9.4-72.el7 <<>> baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28766
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;baidu.com. IN A
;; ANSWER SECTION:
baidu.com. 86400 IN A 8.8.8.8
;; AUTHORITY SECTION:
baidu.com. 86400 IN NS dns1.baidu.com.
;; ADDITIONAL SECTION:
dns1.baidu.com. 86400 IN A 192.168.34.101
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Nov 06 23:39:16 CST 2019
;; MSG SIZE rcvd: 89
用户输入错误解析文件信息:
[root@ansiblenamed]#dig adsds.baidu.com
; <<>> DiG 9.9.4-RedHat-9.9.4-72.el7 <<>> adsds.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34813
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;adsds.baidu.com. IN A
;; ANSWER SECTION:
adsds.baidu.com. 86400 IN A 8.8.8.8
;; AUTHORITY SECTION:
baidu.com. 86400 IN NS dns1.baidu.com.
;; ADDITIONAL SECTION:
dns1.baidu.com. 86400 IN A 192.168.34.101
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Nov 06 23:40:39 CST 2019
;; MSG SIZE rcvd: 95
解析当前的A记录:
[root@ansiblenamed]#dig www.baidu.com
; <<>> DiG 9.9.4-RedHat-9.9.4-72.el7 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20270
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 86400 IN CNAME webs.baidu.com.
webs.baidu.com. 86400 IN A 7.7.7.7
webs.baidu.com. 86400 IN A 8.8.8.8
webs.baidu.com. 86400 IN A 6.6.6.6
;; AUTHORITY SECTION:
baidu.com. 86400 IN NS dns1.baidu.com.
;; ADDITIONAL SECTION:
dns1.baidu.com. 86400 IN A 192.168.34.101
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Nov 06 22:03:38 CST 2019
;; MSG SIZE rcvd: 144
查询域中的MX记录:
[root@ansiblenamed]#dig -t mx baidu.com ; <<>> DiG 9.9.4-RedHat-9.9.4-72.el7 <<>> -t mx baidu.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62611 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 4 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;baidu.com. IN MX ;; ANSWER SECTION: baidu.com. 86400 IN MX 10 mailser1.baidu.com. baidu.com. 86400 IN MX 20 mailser2.baidu.com. ;; AUTHORITY SECTION: baidu.com. 86400 IN NS dns1.baidu.com. ;; ADDITIONAL SECTION: mailser1.baidu.com. 86400 IN A 11.9.9.9 mailser2.baidu.com. 86400 IN A 9.9.9.9 dns1.baidu.com. 86400 IN A 192.168.34.101 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Wed Nov 06 22:04:16 CST 2019 ;; MSG SIZE rcvd: 155
验证当前生成最大200条记录的信息内容:
[root@centos6named]#dig server20.baidu.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> server20.baidu.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5853 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;server20.baidu.com. IN A ;; ANSWER SECTION: server20.baidu.com. 86400 IN A 192.168.34.20 ;; AUTHORITY SECTION: baidu.com. 86400 IN NS dns1.baidu.com. ;; ADDITIONAL SECTION: dns1.baidu.com. 86400 IN A 192.168.34.101 ;; Query time: 3 msec ;; SERVER: 192.168.34.101#53(192.168.34.101) ;; WHEN: Wed Nov 6 23:47:27 2019 ;; MSG SIZE rcvd: 87 [root@centos6named]#dig server10.baidu.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> server10.baidu.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61484 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;server10.baidu.com. IN A ;; ANSWER SECTION: server10.baidu.com. 86400 IN A 192.168.34.10 ;; AUTHORITY SECTION: baidu.com. 86400 IN NS dns1.baidu.com. ;; ADDITIONAL SECTION: dns1.baidu.com. 86400 IN A 192.168.34.101 ;; Query time: 2 msec ;; SERVER: 192.168.34.101#53(192.168.34.101) ;; WHEN: Wed Nov 6 23:47:33 2019 ;; MSG SIZE rcvd: 87
查询邮件服务器:
dig -t mx easthome.com 查找一个域的邮件服务器。
[root@ansiblenamed]#dig -t mx easthome.com ; <<>> DiG 9.9.4-RedHat-9.9.4-72.el7 <<>> -t mx easthome.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50719 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 19 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;easthome.com. IN MX ;; ANSWER SECTION: easthome.com. 1200 IN MX 1 mail.easthome.com. ;; AUTHORITY SECTION: easthome.com. 172749 IN NS dns20.hichina.com. easthome.com. 172749 IN NS dns19.hichina.com. ;; ADDITIONAL SECTION: dns19.hichina.com. 172749 IN A 140.205.41.17 dns19.hichina.com. 172749 IN A 140.205.41.27 dns19.hichina.com. 172749 IN A 140.205.81.17 dns19.hichina.com. 172749 IN A 140.205.81.27 dns19.hichina.com. 172749 IN A 106.11.141.117 dns19.hichina.com. 172749 IN A 106.11.141.127 dns19.hichina.com. 172749 IN A 106.11.211.57 dns19.hichina.com. 172749 IN A 106.11.211.67 dns19.hichina.com. 172749 IN AAAA 2400:3200:2000:38::1 dns20.hichina.com. 172749 IN A 140.205.81.18 dns20.hichina.com. 172749 IN A 140.205.81.28 dns20.hichina.com. 172749 IN A 106.11.141.118 dns20.hichina.com. 172749 IN A 106.11.141.128 dns20.hichina.com. 172749 IN A 106.11.211.58 dns20.hichina.com. 172749 IN A 106.11.211.68 dns20.hichina.com. 172749 IN A 140.205.41.18 dns20.hichina.com. 172749 IN A 140.205.41.28 dns20.hichina.com. 172749 IN AAAA 2400:3200:2000:39::1 ;; Query time: 274 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Wed Nov 06 22:10:52 CST 2019 ;; MSG SIZE rcvd: 422
修改当前配置文件:vim /etc/named.rfc1912.zones
[root@ansiblenamed]#vim /etc/named.rfc1912.zones zone "34.168.192.in-addr.arpa"IN { type master; file "192.168.34.zone"; };
修改反向区域解析库文件:
[root@ansiblenamed]#vim 192.168.34.zone $TTL 1D @ IN SOA dnsserver admin.baidu.com. ( 20191110 3H 10M 1D 1H ) NS dnsserver dnsserver A 192.168.34.101 7 PTR dnsserver.baidu.com. 100 PTR www.baidu.com 200 PTR blog.baidu.com
将配置文件生效:
[root@ansiblenamed]#rndc reload
检查区域库文件反向解析结果:
[root@centos6named]#dig -x 192.168.34.100 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> -x 192.168.34.100 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33971 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;100.34.168.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 100.34.168.192.in-addr.arpa. 86400 IN PTR www.baidu.com.34.168.192.in-addr.arpa. ;; AUTHORITY SECTION: 34.168.192.in-addr.arpa. 86400 IN NS dnsserver.34.168.192.in-addr.arpa. ;; ADDITIONAL SECTION: dnsserver.34.168.192.in-addr.arpa. 86400 IN A 192.168.34.101 ;; Query time: 4 msec ;; SERVER: 192.168.34.101#53(192.168.34.101) ;; WHEN: Wed Nov 6 22:38:10 2019 ;; MSG SIZE rcvd: 113 [root@centos6named]#dig -x 192.168.34.200 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> -x 192.168.34.200 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41455 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;200.34.168.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 200.34.168.192.in-addr.arpa. 86400 IN PTR blog.baidu.com.34.168.192.in-addr.arpa. ;; AUTHORITY SECTION: 34.168.192.in-addr.arpa. 86400 IN NS dnsserver.34.168.192.in-addr.arpa. ;; ADDITIONAL SECTION: dnsserver.34.168.192.in-addr.arpa. 86400 IN A 192.168.34.101 ;; Query time: 1 msec ;; SERVER: 192.168.34.101#53(192.168.34.101) ;; WHEN: Wed Nov 6 22:38:18 2019 ;; MSG SIZE rcvd: 114 [root@centos6named]#dig -x 192.168.34.7 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> -x 192.168.34.7 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35113 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;7.34.168.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 7.34.168.192.in-addr.arpa. 86400 IN PTR dnsserver.baidu.com. ;; AUTHORITY SECTION: 34.168.192.in-addr.arpa. 86400 IN NS dnsserver.34.168.192.in-addr.arpa. ;; ADDITIONAL SECTION: dnsserver.34.168.192.in-addr.arpa. 86400 IN A 192.168.34.101 ;; Query time: 1 msec ;; SERVER: 192.168.34.101#53(192.168.34.101) ;; WHEN: Wed Nov 6 22:38:22 2019 ;; MSG SIZE rcvd: 116
主从复制:
1、应该为一台独立的名称服务器;
2、主服务器的区域解析库文件中必须有一条NS记录是指向从服务器;
3、从服务器只需要定义区域,而无须提供解析库文件;解析库文件应该放置于/var/named/slaves/目录中;
4、主服务器得允许从服务器作区域传送;
5、主从服务器时间应该同步,可通过ntp进行;
6、bind程序的应该保持一致;否则,应该从高,主低;
实验前准备:
主服务器:A (IP地址为192.168.34.101)
从服务器:B (IP地址为192.168.34.103)
客户端:C (IP地址为192.168.34.105)
配置主服务器相关文件:
(1)在主服务器A中配置文件信息:vim /etc/named.conf
修改完之后并重新启动DNS服务:rndc reload
options { listen-on port 53 { localhost; }; 将此行写成localhost或者注释掉(//),不写的话会,默认只能本机访问 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; }; 写成any或者注释掉(//)都可以 allow-transfer { 192.168.34.103; }; 将从服务器的IP地址写入,默认只能103地址作为当前主服务器的备用服务器,即:从服务器,不然任何主机都可以做为从服务器访问主服务器,抓取重要信息
(2)修改主服务器A区域库文件的内容:
vim /var/named/baidu.com.zone
[root@ansiblenamed]#vim /var/named/baidu.com.zone $TTL 1D @ IN SOA dns1 admin.baidu.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS dns1 NS dns2 #主要是修改了这部分内容,给从服务器添加一个NS标记 dns1 A 192.168.34.101 # 主服务器IP地址 dns2 A 192.168.34.103 # 将从服务器的IP地址写入 www CNAME webs webs A 6.6.6.6 webs A 8.8.8.8 webs A 7.7.7.7 @ MX 10 mailser1 @ MX 20 mailser2 mailser1 A 11.9.9.9 mailser2 A 9.9.9.9 @ A 8.8.8.8 * A 8.8.8.8 $GENERATE 1-200 server$ A 192.168.34.$
配置从服务器的文件:
(1)在从服务器B上安装DNS:yum install bind
在配置文件中修改/etc/named.conf相关配置文件
[root@centos7_1 ~]# vim /etc/named.conf options { // listen-on port 53 { 127.0.0.1; }; #将此行注释掉 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 { localhost; }; 将此行注释掉 allow-transfer { none;}; 此行必需写入,不写会不安全,而且其他任何主机都可以作为从服务器进行访问,抓取IP地址
注意:将第一行的listen-on port 53端口注释掉,或者写成localhost,不然只能为本机服务,allow-query那行业注释掉。
(2)将从服务器B的/etc/named.rfc1912.zones配置文件加以修改
[root@centos7_1 ~]# vim /etc/named.rfc1912.zones
zone "baidu.com" { # 域名要与主服务器的域名一致
type slave; # 类型为“奴隶的意思”
masters {192.168.34.101;}; #将主服务器的IP地址写入
file "slaves/baidu.com.zone.slave"; # 将从服务器的数据放到slaves路径内
};
(3)重新加载主服务器A的DNS服务:
[root@ansiblenamed]#rndc reload server reload successful
(4)查询当前从服务器B的同步的数据文件,此时我们可以看到/var/named/slaves目录下已经同步了主服务器的数据内容:
[root@centos7_1 ~]# ls /var/named/slaves baidu.com.zone.slave
配置客户端:
(5)下来我在客户端C配置两个DNS地址,将主从服务器的IP地址都关联起来:
[root@centos6network-scripts]#vim ifcfg-eth0 DEVICE=eth0 PROTOBOOT=static IPADDR=192.168.34.105 GATEWAY=192.168.34.2 ONBOOT=yes DNS1=192.168.34.101 # 主服务器的DNS IP地址 DNS2=192.168.34.103 # 从服务器的DNS IP地址
(6)在客户端C查看当前配置好的DNS服务地址
[root@centos6network-scripts]#cat /etc/resolv.conf 查看当前的配置DNS信息 # Generated by NetworkManager search 10.localdomain nameserver 192.168.34.101 nameserver 192.168.34.103
(7)我们在客户端C用dig命令查看当前的baidu.com 网址,查看当前DNS解析IP地址是来自哪个服务器:
[root@centos6network-scripts]#dig www.baidu.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24163
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 86400 IN CNAME webs.baidu.com.
webs.baidu.com. 86400 IN A 6.6.6.6
webs.baidu.com. 86400 IN A 8.8.8.8
webs.baidu.com. 86400 IN A 7.7.7.7
;; AUTHORITY SECTION:
baidu.com. 86400 IN NS dns1.baidu.com.
baidu.com. 86400 IN NS dns2.baidu.com.
;; ADDITIONAL SECTION:
dns1.baidu.com. 86400 IN A 192.168.34.101
dns2.baidu.com. 86400 IN A 192.168.34.103
;; Query time: 6 msec
;; SERVER: 192.168.34.101#53(192.168.34.101) #此时可以看到解析的IP地址来自于主服务器
;; WHEN: Thu Nov 7 09:38:55 2019
;; MSG SIZE rcvd: 168
(8)我们将主服务器A的网卡down掉(ifconfig ens33 down),然后在客户端C查看当前内容:
[root@centos6network-scripts]#dig www.baidu.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54362
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 86400 IN CNAME webs.baidu.com.
webs.baidu.com. 86400 IN A 8.8.8.8
webs.baidu.com. 86400 IN A 7.7.7.7
webs.baidu.com. 86400 IN A 6.6.6.6
;; AUTHORITY SECTION:
baidu.com. 86400 IN NS dns1.baidu.com.
baidu.com. 86400 IN NS dns2.baidu.com.
;; ADDITIONAL SECTION:
dns1.baidu.com. 86400 IN A 192.168.34.101
dns2.baidu.com. 86400 IN A 192.168.34.103
;; Query time: 12 msec
;; SERVER: 192.168.34.103#53(192.168.34.103) #此时,我们看到的是从服务器的IP地址,访问网站是通过从服务器访问。
;; WHEN: Thu Nov 7 10:24:16 2019
;; MSG SIZE rcvd: 168
(9)此时,我们来验证当前的服务器同步情况,修改主服务器区域库文件内容:/var/named/baidu.com.zone
[root@ansible~]#vim /var/named/baidu.com.zone
$TTL 1D
@ IN SOA dns1 admin.baidu.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns1
NS dns2
dns1 A 192.168.34.101
dns2 A 192.168.34.103
www CNAME webs
webs A 6.6.6.6
webs A 8.8.8.8
webs A 7.7.7.7
@ MX 10 mailser1 #删除此条配置
@ MX 20 mailser2 #删除此条配置
mailser1 A 11.9.9.9
mailser2 A 9.9.9.9
@ A 8.8.8.8
* A 8.8.8.8
$GENERATE 1-200 server$ A 192.168.34.$
(10)删除之后,将DNS服务重启:rndc reload
[root@ansible~]#rndc reload server reload successful
(11)然后我们在客户端C上dig查询同步信息,此时,我们分别在主从服务器上都可以看到MX的配置记录,这是为什么呢?这是因为我们修改后同步不同步,不是只修改配置文件,而是要修改上面的序列号(serial),才会生效,请看第12步:
[root@centos6network-scripts]#dig -t mx baidu.com @192.168.34.101
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> -t mx baidu.com @192.168.34.101
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50791
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;baidu.com. IN MX
;; AUTHORITY SECTION:
baidu.com. 10800 IN SOA dns1.baidu.com. admin.baidu.com. 0 86400 3600 604800 10800
;; Query time: 7 msec
;; SERVER: 192.168.34.101#53(192.168.34.101)
;; WHEN: Thu Nov 7 10:33:31 2019
;; MSG SIZE rcvd: 74
[root@centos6network-scripts]#dig -t mx baidu.com @192.168.34.103
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> -t mx baidu.com @192.168.34.103
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48437
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 4
;; QUESTION SECTION:
;baidu.com. IN MX
;; ANSWER SECTION:
baidu.com. 86400 IN MX 10 mailser1.baidu.com.
baidu.com. 86400 IN MX 20 mailser2.baidu.com.
;; AUTHORITY SECTION:
baidu.com. 86400 IN NS dns1.baidu.com.
baidu.com. 86400 IN NS dns2.baidu.com.
;; ADDITIONAL SECTION:
mailser1.baidu.com. 86400 IN A 11.9.9.9
mailser2.baidu.com. 86400 IN A 9.9.9.9
dns1.baidu.com. 86400 IN A 192.168.34.101
dns2.baidu.com. 86400 IN A 192.168.34.103
;; Query time: 10 msec
;; SERVER: 192.168.34.103#53(192.168.34.103)
;; WHEN: Thu Nov 7 10:33:34 2019
;; MSG SIZE rcvd: 179
(12)将序列号(serial)修改为1,改完之后重新加载DNS服务,rndc reload:
[root@ansible~]#vim /var/named/baidu.com.zone $TTL 1D @ IN SOA dns1 admin.baidu.com. ( 1 ; serial #此处的0已经改为1 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS dns1 NS dns2 dns1 A 192.168.34.101 dns2 A 192.168.34.103 www CNAME webs 此处也做了修改 webs A 66.66.66.66 此处也做了修改 mailser1 A 11.9.9.9 mailser2 A 9.9.9.9 @ A 8.8.8.8 * A 8.8.8.8 $GENERATE 1-200 server$ A 192.168.34.$
(13)修改完配置后,重启DNS服务,并在客户端进行dig验证,此时的IP地址已经同步,并且没有了MX配置文件的记录:
[root@ansible~]#rndc reload 重启DNS服务 server reload successful [root@centos6network-scripts]#dig www.baidu.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.baidu.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22540 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2 ;; QUESTION SECTION: ;www.baidu.com. IN A ;; ANSWER SECTION: www.baidu.com. 86400 IN CNAME webs.baidu.com. webs.baidu.com. 86400 IN A 66.66.66.66 此时已经同步为新的IP地址 ;; AUTHORITY SECTION: baidu.com. 86400 IN NS dns2.baidu.com. baidu.com. 86400 IN NS dns1.baidu.com. ;; ADDITIONAL SECTION: dns1.baidu.com. 86400 IN A 192.168.34.101 dns2.baidu.com. 86400 IN A 192.168.34.103 ;; Query time: 1 msec ;; SERVER: 192.168.34.101#53(192.168.34.101) ;; WHEN: Thu Nov 7 10:41:43 2019 ;; MSG SIZE rcvd: 136
将从服务器B的/var/named/slaves/目录下的文件删掉:
[root@centos7_1 slaves]# rm -rf /var/named/slaves/baidu.com.zone.slave 删除slaves目录下的文件 [root@centos7_1 slaves]# systemctl restart named 重启DNS服务 [root@centos7_1 slaves]# ls 还可以复制主服务器的文件 baidu.com.zone.slave [root@ansible~]#iptables -A INPUT -p tcp --dport 53 -j REJECT 将目标tcp的53端口拒绝。 [root@centos7_1 slaves]# systemctl restart named 重启服务 [root@centos7_1 slaves]# ls 此时不能复制主服务器的文件
在客户端C上dig可以查询到当前的53信息内容,此时的内容是来自于UDP的53端口
[root@centos6network-scripts]#dig www.baidu.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3449
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 86400 IN CNAME webs.baidu.com.
webs.baidu.com. 86400 IN A 66.66.66.66
;; AUTHORITY SECTION:
baidu.com. 86400 IN NS dns1.baidu.com.
baidu.com. 86400 IN NS dns2.baidu.com.
;; ADDITIONAL SECTION:
dns1.baidu.com. 86400 IN A 192.168.34.101
dns2.baidu.com. 86400 IN A 192.168.34.103
;; Query time: 10 msec
;; SERVER: 192.168.34.101#53(192.168.34.101)
;; WHEN: Thu Nov 7 11:14:25 2019
;; MSG SIZE rcvd: 136
总结:TCP 的53端口影响了主从复制、UDP的53端口是供查询
(1)创建子域,在主服务器A(主域)上将beijing.baidu.com域写入到/etc/named.rfc1912.zones配置文件内:
[root@ansiblenamed]#vim /etc/named.rfc1912.zones
zone "baidu.com" {
type master;
file "baidu.com.zone";
};
zone "beijing.baidu.com" {
type master;
file "beijing.baidu.com.zone";
};
创建一个beijing.baidu.com区域库文件,配置完之后启动DNS,systemctl start named:
[root@ansible~]#cd /var/named
[root@ansiblenamed]#ls
192.168.34.zone beijing.baidu.com.zone dynamic named.empty named.loopback
baidu.com.zone data named.ca named.localhost slaves
[root@ansiblenamed]#vim beijing.baidu.com.zone
$TTL 1D
@ IN SOA dns1 admin (
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns1
dns1 A 192.168.34.101 当前的IP地址指向顶级域的IP地址
www CNAME webs
webs A 88.88.88.88
(2)在客户端C上dig查询配置好后的子域信息:
[root@centos6network-scripts]#dig www.baidu.com 查看主服务器的baidu.com域 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.baidu.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41274 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2 ;; QUESTION SECTION: ;www.baidu.com. IN A ;; ANSWER SECTION: www.baidu.com. 86400 IN CNAME webs.baidu.com. webs.baidu.com. 86400 IN A 66.66.66.66 ;; AUTHORITY SECTION: baidu.com. 86400 IN NS dns2.baidu.com. baidu.com. 86400 IN NS dns1.baidu.com. ;; ADDITIONAL SECTION: dns1.baidu.com. 86400 IN A 192.168.34.101 dns2.baidu.com. 86400 IN A 192.168.34.103 ;; Query time: 0 msec ;; SERVER: 192.168.34.103#53(192.168.34.103) ;; WHEN: Thu Nov 7 11:57:45 2019 ;; MSG SIZE rcvd: 136 [root@centos6network-scripts]#dig www.beijing.baidu.com 查看当前的子域内容 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.beijing.baidu.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59333 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;www.beijing.baidu.com. IN A ;; ANSWER SECTION: www.beijing.baidu.com. 86400 IN CNAME webs.beijing.baidu.com. webs.beijing.baidu.com. 86400 IN A 88.88.88.88 ;; AUTHORITY SECTION: beijing.baidu.com. 86400 IN NS dns1.beijing.baidu.com. ;; ADDITIONAL SECTION: dns1.beijing.baidu.com. 86400 IN A 192.168.34.101 ;; Query time: 4 msec ;; SERVER: 192.168.34.101#53(192.168.34.101) ;; WHEN: Thu Nov 7 11:57:54 2019 ;; MSG SIZE rcvd: 109
(1)将主服务器A的配置文件/var/named/baidu.com.zone进行修改,添加一个shenzhen域:
[root@ansiblenamed]#vim /var/named/baidu.com.zone $TTL 1D @ IN SOA dns1 admin.baidu.com. ( 1 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS dns1 NS dns2 shenzhen NS dns3 dns1 A 192.168.34.101 dns2 A 192.168.34.103 dhs3 A 192.168.34.102 www CNAME webs webs A 66.66.66.66
(2)重启主服务器A的DNS服务:
[root@ansiblenamed]#rndc reload server reload successful
注意:检查配置文件是否书写错误
named-checkconf 查看配置文件是否有误 named-checkzone baidu.com /var/named/baidu.com.zone 检查域文件是否有误
(3)在服务器D(子域上)上安装DNS服务,并DNS配置相关文件,
yum install bind [root@centos102 ~]# vim /etc/named.conf options { // listen-on port 53 { 127.0.0.1; }; 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 { localhost; };
(4)修改服务器D(子域)的/etc/named.rfc1912.zones配置文件:
[root@centos102 ~]# vim /etc/named.rfc1912.zones
zone "shenzhen.baidu.com" {
type master;
file "shenzhen.baidu.com.zone";
};
(5)在服务器D(子域)上远程复制主服务器A的区域库文件,并将所属组属性进行修改:
[root@centos102 ~]# scp 192.168.34.103:/var/named/baidu.com.zone /var/named/shenzhen.baidu.com.zone [root@centos102 named]# ll total 32 drwxrwx--- 2 named named 4096 Mar 23 2017 data drwxrwx--- 2 named named 4096 Mar 23 2017 dynamic -rw-r----- 1 root named 3171 Jan 11 2016 named.ca -rw-r----- 1 root named 152 Dec 15 2009 named.empty -rw-r----- 1 root named 152 Jun 21 2007 named.localhost -rw-r----- 1 root named 168 Dec 15 2009 named.loopback -rw-r----- 1 root root 296 Nov 7 12:11 shenzhen.baidu.com.zone 此时的文件所属组属性有问题 drwxrwx--- 2 named named 4096 Mar 23 2017 slaves [root@centos102 named]# chgrp named shenzhen.baidu.com.zone 修改当前的shenzhen.baidu.com.zone所属组属性
(6)修改服务器D(子域)当前的shenzhen.baidu.com.zone配置文件:
[root@centos7-2 named]# vim shenzhen.baidu.com.zone $TTL 1D @ IN SOA dns1 admin ( 1 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS dns1 dns1 A 192.168.34.102 www CNAME webs webs A 7.7.7.7
注意:需要检查配置文件和域文件是否有误。
named-checkconf 查看配置文件是否有误 named-checkzone baidu.com /var/named/baidu.com.zone 检查域文件是否有误
(7)启动(子域)的DNS服务:
[root@centos7-2 named]# systemctl start named
(8)此时,我们的客户端C并没有配置执行shenzhen.baidu.com.zone子域的DNSIP地址,
在客户端执行dig查看当前的shenzhen.baidu.com.zone子域情况:
[root@centos6~]#cat /etc/resolv.conf 查看当前的DNS指向的IP地址
# Generated by NetworkManager
search 10.localdomain
nameserver 192.168.34.101
nameserver 192.168.34.103
[root@centos6~]#dig www.shenzhen.baidu.com 此时已经实现了迭代查询功能
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.shenzhen.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15796
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;www.shenzhen.baidu.com. IN A
;; ANSWER SECTION:
www.shenzhen.baidu.com. 86266 IN CNAME webs.shenzhen.baidu.com.
webs.shenzhen.baidu.com. 86266 IN A 7.7.7.7
;; AUTHORITY SECTION:
shenzhen.baidu.com. 86266 IN NS dns1.shenzhen.baidu.com.
;; ADDITIONAL SECTION:
dns1.shenzhen.baidu.com. 86266 IN A 192.168.34.102
;; Query time: 4 msec
;; SERVER: 192.168.34.101#53(192.168.34.101)
;; WHEN: Thu Nov 7 16:35:25 2019
;; MSG SIZE rcvd: 110
原理:要访问www.magedu.com网址,先在本地的缓存DNS服务器寻找,如果就可以访问,如果没有,根将DNS服务器的缓存放入到北京,将北京作为一个转发(作为期望的DNS转发服务器),上海和重庆直接指向北京寻找答案,节约了广域上的网络带宽。
only用法:客户端发起请求在A服务器上找,A服务器转发到B(103IP)的服务器上,B服务器返回最终的结果,如果B服务器没有不去询问根。
创建一个转发服务器B(192.168.34.103),将/etc/named.rfc1912.zones配置文件进行修改:
[root@centos7-1~]#vim /etc/named.rfc1912.zones zone "wang.com" { type master; file "wang.com.zone"; };
在/var/named/目录下创建一个wang.com.zone配置文件:
vim /var/named/www.wang.com.zone $TTL 1D @ IN SOA dns1 admin ( 1 1H 1M 1D 3H ) NS dns1 dns1 A 192.168.34.102 www A 6.6.6.6
注意将 wang.com.zone配置文件的所属组改为named,权限改为640
[root@centos7-1named]#ll total 32 -rw-r--r-- 1 root root 230 Nov 6 22:53 192.168.34.zone -rw-r----- 1 root named 296 Nov 7 15:35 baidu.com.zone drwxrwx--- 2 named named 23 Oct 31 2018 data drwxrwx--- 2 named named 31 Nov 7 16:21 dynamic -rw-r----- 1 root named 2281 May 22 2017 named.ca -rw-r----- 1 root named 152 Dec 15 2009 named.empty -rw-r----- 1 root named 152 Jun 21 2007 named.localhost -rw-r----- 1 root named 168 Dec 15 2009 named.loopback -rw-r----- 1 root named 198 Nov 7 15:59 shenzhen.baidu.com.zone drwxrwx--- 2 named named 6 Oct 31 2018 slaves -rw-r--r-- 1 root root 94 Nov 7 20:33 wang.com.zone [root@centos7-1named]#chgrp named wang.com.zone [root@centos7-1named]#chmod 640 wang.com.zone
配置完之后重新加载DNS服务:
dndc reload
在主服务器A上修改相应的配置文件,/etc/named.conf
[root@ansible~]#vim /etc/named.conf
options {
// listen-on port 53 { localhost; };
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; };
allow-transfer { 192.168.34.103; };
forward only ; 将转发服务器的IP地址写到主服务器上面,保证只转发此IP地址
forwarders {192.168.34.103;};
dnssec-enable no; 将此两个功能关掉
dnssec-validation no; 关掉此功能
配置完之后重新加载DNS服务:
rndc reload 重新加载DNS服务
最后在客户端C上验证转发功能:
[root@centos6~]#dig www.wang.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.wang.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41040
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;www.wang.com. IN A
;; ANSWER SECTION:
www.wang.com. 86063 IN A 6.6.6.6
;; AUTHORITY SECTION:
wang.com. 86063 IN NS dns1.wang.com.
;; ADDITIONAL SECTION:
dns1.wang.com. 86063 IN A 192.168.34.102
;; Query time: 2 msec
;; SERVER: 192.168.34.101#53(192.168.34.101)
;; WHEN: Thu Nov 7 20:54:11 2019
;; MSG SIZE rcvd: 81
查看当前没有配置的域名,此时客户端发起请求,A服务器上没有,就会转发到服务器B IP地址为103机器上,此时B服务器如果有网络,就会在网上寻找答案
[root@centos6~]#dig www.wange.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.wange.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28947
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.wange.com. IN A
;; ANSWER SECTION:
www.wange.com. 7200 IN A 93.90.145.101此时IP地址103在网上返回的答案
;; Query time: 2356 msec
;; SERVER: 192.168.34.101#53(192.168.34.101)
;; WHEN: Thu Nov 7 21:36:54 2019
;; MSG SIZE rcvd: 47
第二种方式服务器转发方式:
first用法:当客户端去访问服务器A时,此时A不知道结果会转发给B,B不知道结果,此时A会自己去询问根去反馈结果:
(1)在服务器A上写配置文件/etc/named.conf,将端口转发给服务器B(103IP地址)
[root@ansible~]#vim /etc/named.conf
options {
// listen-on port 53 { localhost; };
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; };
allow-transfer { 192.168.34.103; };
forward first ;
forwarders {192.168.34.103;};
重新加载A服务器的DNS服务:
rndc reload
(2)将服务器B的网络断掉,此时B无法访问网络。
(3)在客户端进行访问当前的一个未知的网址,A主机如果不知道,先会转发给B服务器,B服务器不知道结果,A服务器主动去网上寻找答案:
[root@centos6~]#dig www.wange.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.wange.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52394
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 5, ADDITIONAL: 10
;; QUESTION SECTION:
;www.wange.com. IN A
;; ANSWER SECTION:
www.wange.com. 7200 IN A 93.90.145.101
;; AUTHORITY SECTION:
wange.com. 172755 IN NS ns01.crystone.se.
wange.com. 172755 IN NS ns05.crystone.se.
wange.com. 172755 IN NS ns03.crystone.se.
wange.com. 172755 IN NS ns04.crystone.se.
wange.com. 172755 IN NS ns02.crystone.se.
;; ADDITIONAL SECTION:
ns01.crystone.se. 884 IN A 194.58.193.60
ns01.crystone.se. 884 IN AAAA 2a01:3f1:460::53
ns02.crystone.se. 86382 IN A 185.42.137.108
ns02.crystone.se. 884 IN AAAA 2a01:3f0:400::60
ns03.crystone.se. 884 IN A 194.58.193.124
ns03.crystone.se. 86382 IN AAAA 2a01:3f1:460:1::53
ns04.crystone.se. 884 IN A 185.42.137.126
ns04.crystone.se. 884 IN AAAA 2a01:3f0:400::190
ns05.crystone.se. 884 IN A 93.90.145.25
ns05.crystone.se. 884 IN AAAA 2a06:1003:1:1::5d5a:9119
;; Query time: 2247 msec
;; SERVER: 192.168.34.101#53(192.168.34.101)
;; WHEN: Thu Nov 7 21:50:10 2019
;; MSG SIZE rcvd: 373
我们来准备两台主机,A主机的有两个网卡,一个IP地址是192.168.34.101,第二个网卡地址是172.18.0.7:让其都能访问网络。
B主机上也有两个网卡,将IP地址分别设置为192.168.34.105h和172.18.0.6
在A主机上制作三个区域库文件,分别为北京、上海、深圳,复制过程中,注意保留属性
[root@ansiblenamed]#vim baidu.com.zone.bj $TTL 1D @ IN SOA dns1 admin.baidu.com. ( 1 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS dns1 NS dns2 shenzhen NS dns3 dns1 A 192.168.34.101 dns2 A 192.168.34.103 dns3 A 192.168.34.102 www CNAME webs webs A 6.6.6.6
复制过程中注意保留文件原有属性:
[root@ansiblenamed]#cp -p baidu.com.zone.bj baidu.com.zone.sh
制作上海数据库文件:
[root@ansiblenamed]#vim baidu.com.zone.sh $TTL 1D @ IN SOA dns1 admin.baidu.com. ( 1 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS dns1 NS dns2 shenzhen NS dns3 dns1 A 192.168.34.101 dns2 A 192.168.34.103 dns3 A 192.168.34.102 www CNAME webs webs A 7.7.7.7
制作深圳数据库文件:
[root@ansiblenamed]#cp -p baidu.com.zone.sh baidu.com.zone.sz [root@ansiblenamed]#vim baidu.com.zone.sz $TTL 1D @ IN SOA dns1 admin.baidu.com. ( 1 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS dns1 NS dns2 shenzhen NS dns3 dns1 A 192.168.34.101 dns2 A 192.168.34.103 dns3 A 192.168.34.102 www CNAME webs webs A 8.8.8.8
定义ACL
[root@ansiblenamed]#vim /etc/named.conf
acl beijingnet {
192.168.34.0/24; 北京访问网段
};
acl shanghainet {
172.18.0.0/16; 上海访问网段
};
acl shenzhennet {
any; 含义是剩余其他的网段都可以访问
};
启用view,关联ACL和zone:
方法一:直接调用配置文件/etc/named.rfc1912.zones,并将默认的zone配置文件写入此view配置内:
[root@ansiblenamed]#vim /etc/named.conf view view_beijing { math_clients {beijingnet;}; include "/etc/named.rfc1912.zones"; zone "." IN { type hint; file "named.ca"; };
在配置文件中将之前的规划baidu.com.zone.bj配置文件写入:
vim /etc/named/rfc1912.zones zone "baidu.com" { type master; file "baidu.com.zone.bj"; };
方法二:将默认的/etc/named.conf下面的zone配置文件写入到/etc/named.rfc1912.zones配置文件中,起到包含作用:
将zone的配置文件包含在include "/etc/named.rfc1912.zones"
下来,我们定义三个/etc/named.rfc1912.zones配置文件:
(1)将第一个定义好的配置文件复制一份,用来定义beijing和shenzhen的配置文件,复制时,注意属性:
cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.shanghai
cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.shenzhen
然后修改shanghai的配置文件:
[root@ansiblenamed]#vim /etc/named.rfc1912.zones.shanghai zone "baidu.com" { type master; file "baidu.com.zone.sh"; };
编写shenzhen的配置文件:
[root@ansiblenamed]#vim /etc/named.rfc1912.zones.shenzhen zone "baidu.com" { type master; file "baidu.com.zone.sz"; };
(2)我们接着来修改/etc/named.conf主配置文件内容:
[root@ansiblenamed]#vim /etc/named.conf view view_beijing { match-clients {beijingnet;}; include "/etc/named.rfc1912.zones"; }; view view_shanghai { match-clients {shanghainet;}; include "/etc/named.rfc1912.zones.shanghai"; }; view view_shenzhen { match-clients {shenzhennet;}; include "/etc/named.rfc1912.zones.shenzhen"; };
(3)定义完之后就加载DNS服务器:
[root@ansiblenamed]#rndc reload server reload successful
(4)开始验证不同网址对应的不同区域:
192.168.34.0/24网段是北京区域
127.18.0.0/16是上海区域
其他地址是属于深圳区域
验证一:在主机B上dig,获取的的结果是6.6.6.6,返回的就是北京的IP地址信息
[root@centos6~]#dig www.baidu.com #在B主机上dig,此时B主机上的IP地址默认是192.168.34.105,是北京的网址
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26005
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 86400 IN CNAME webs.baidu.com.
webs.baidu.com. 86400 IN A 6.6.6.6
;; AUTHORITY SECTION:
baidu.com. 86400 IN NS dns1.baidu.com.
baidu.com. 86400 IN NS dns2.baidu.com.
;; ADDITIONAL SECTION:
dns1.baidu.com. 86400 IN A 192.168.34.101
dns2.baidu.com. 86400 IN A 192.168.34.103
;; Query time: 1 msec
;; SERVER: 192.168.34.101#53(192.168.34.101)
;; WHEN: Thu Nov 7 23:33:05 2019
;; MSG SIZE rcvd: 136
验证二:在主机B上dig www.baidu.com @172.18.0.7,输入对方的IP地址,会从本机去访问对方,从而获取当前的区域信息:
得知 7.7.7.7,返回上海区域信息
[root@centos6network-scripts]#dig www.baidu.com @172.18.0.7
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.baidu.com @172.18.0.7
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31631
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 86400 IN CNAME webs.baidu.com.
webs.baidu.com. 86400 IN A 7.7.7.7
;; AUTHORITY SECTION:
baidu.com. 86400 IN NS dns1.baidu.com.
baidu.com. 86400 IN NS dns2.baidu.com.
;; ADDITIONAL SECTION:
dns1.baidu.com. 86400 IN A 192.168.34.101
dns2.baidu.com. 86400 IN A 192.168.34.103
;; Query time: 3 msec
;; SERVER: 172.18.0.7#53(172.18.0.7)
;; WHEN: Thu Nov 7 23:41:20 2019
;; MSG SIZE rcvd: 136
验证三:
在配置相关数据的主机A上dig一个其他的IP地址,得到最终得到8.8.8.8的IP地址,返回的的是深圳的地址
[root@ansiblenetwork-scripts]#dig www.baidu.com @127.0.0.1 ; <<>> DiG 9.9.4-RedHat-9.9.4-72.el7 <<>> www.baidu.com @127.0.0.1 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22706 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 3 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.baidu.com. IN A ;; ANSWER SECTION: www.baidu.com. 86400 IN CNAME webs.baidu.com. webs.baidu.com. 86400 IN A 8.8.8.8 ;; AUTHORITY SECTION: baidu.com. 86400 IN NS dns2.baidu.com. baidu.com. 86400 IN NS dns1.baidu.com. ;; ADDITIONAL SECTION: dns1.baidu.com. 86400 IN A 192.168.34.101 dns2.baidu.com. 86400 IN A 192.168.34.103 ;; Query time: 2 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Thu Nov 07 23:46:12 CST 2019 ;; MSG SIZE rcvd: 147
原文:https://www.cnblogs.com/struggle-1216/p/11807009.html