DNS之一---DNS服务及BIND服务,并实现DNS正向与反向解析
今天我们来介绍一下DNS服务,在大家的印象中DNS可能只是将域名解析为IP地址,可能其他的暂时还不太了解,希望本篇内容能帮助大家。
1、什么是DNS?
DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,使用的是UDP协议的53号端口,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作。DNS就是这样的一位“翻译官”,它的基本工作原理可用下图来表示。
2、DNS服务基本概念
在介绍DNS服务器工作原理之前我们先来了解几个DNS相关的概念:
1、FQDN:Full Qualified Domain Name,完全限定域名,即每个域在全球网络都是唯一的;另外值得提到的一点是域并不是指诸如www.google.com这样的域名,而google.com才是域;
2、域的分类
(1)根域 :世界有13个ip地址管理,有10个在美国,1个在日本,2个在欧洲,荷兰,瑞典
(2)顶级域:顶级域(Top Level Domain,简称TLD)分为三类
1> 通用顶级域:诸如 .com(商业机构) .org(非营利性组织) .net(网络服务机构)等
2> 国家顶级域:诸如 .cn(中国) .uk(英国) .us(美国) .jp(小日本)
3> 反向域(基础建设顶级域):.arpa,即从IP到FQDN的反向解析
223.5.5.5 阿里DNS地址 223.6.6.6 阿里DNS地址 8.8.8.8 谷歌提供的DNS地址 8.8.4.4 谷歌提供的DNS地址 1.1.1.1 澳大利亚DNS地址 119.29.29.29 腾讯DNS地址
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号端口。
3、DNS解析原理
(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服务器之间的交互查询就是迭代查询。
4、DNS和bind安装及功能介绍
安装bind软件:yum install bind bind-utils -y
启动bind服务: systemctl start named(centos7启动)
service named start (centos6启动)
# /etc/named.conf 主配置文件 服务器主要运行参数 # /etc/named.rfc1912.zones 区域文件,主要指定要解析哪个域名 # /var/named/xxx.xx 数据文件,用来正向和反向的解析
配置文件
主配置文件:
- 全局配置:options {};
- 日志子系统配置:logging {};
- 区域定义:本机能够为哪些zone进行解析,就要定义哪些
- zone zone "ZONE_NAME" IN {};
注意:任何服务程序如果期望其能够通过网络被其它主机访问,至少应该监听 在一个能与外部主机通信的IP地址上
缓存名称服务器的配置:
- 监听外部地址即可
- dnssec: 建议关闭dnssec,设为no
# dnssec-enable no; # 涉及安全问题 # dnssec-validation no; # 涉及安全问题
5、资源记录
区域解析库:由众多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验证等
6、资源记录定义的格式:
语法:name [TTL] IN rr_type value 注意: (1) TTL可从全局继承 (2) @可用于引用当前区域的名字 (3) 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询 方式响应 (4) 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值 进行定义;此仅表示通过多个不同的名字可以找到同一个主机
7、SOA记录
起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录。
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值 )
SOA记录含义
- $TTL(主标题定义,下面可以省略TTL格式) 1D(默认一天)
- SOA(当前区域名称)
- @(代表管理的域名)
- dns1(主DNS域名名称,可以自定义名称,会自动补全域名,必须用A记录解析成IP,对应本机的IP地址)
- 0 ; serial (数据库版本号,要将数据递增,才会生效下面的数据)
- 1D ; refresh (刷新间隔)
- 1H ; retry (重试时间间隔)
- 1W ; expire (过期时长)
- 3H ) ; minimum (缓存时长)
- NS dns1 (可以继承前面的内容)
- dns1 A 192.168.34.101 (必须将上面的dns1主服务器名称需要定义解析成IP地址)
- admin.baidu.com.(管理员的邮箱地址)
$TTL 1D @(例如:baidu.com) IN(internet) SOA dns1 admin.baidu.com. ( 0 ; serial (数据库版本号,要将数据递增,才会生效下面的数据) 1D ; refresh (刷新间隔) 1H ; retry (重试时间间隔) 1W ; expire (过期时长) 3H ) ; minimum (缓存时长) NS dns1 (可以继承前面的内容) dns1 A 192.168.34.101 (必须将上面的dns1主服务器名称需要定义解析成IP地址)
8、NS记录
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记录
9、MX记录
name: 当前区域的名字 value: 当前区域的某邮件服务器(smtp服务器)的主机名 一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级;数字越小优先级越高 例如: baidu.com. IN MX 10 mx1.baidu.com. IN MX 20 mx2.baidu.com.
注意:对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有
一个A记录
10、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
注意:避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址,比如:@, * 两个关键写法。
11、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.baidu.com. 如1.2.3为网络地址,可简写成: 4 IN PTR www.baidu.com.
12、AAAA记录
name: FQDN value: IPv6
13、CNAME(别名记录)
name: 别名的FQDN value: 真正名字的FQDN 例如: www.baidu.com. IN CNAME websrv.baidu.com.
注意:网络地址及后缀可省略;主机地址依然需要反着写。
14、测试命令及rndc命令:
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 服务器的所有缓存记录
主从服务器数据同步方式的方式:
- 推:push,主服务发生变化,从服务器随之变化
- 拉: pull
15、验证linux的DNS服务具有缓存功能:
首先:我们拿一台linux主机A作为DNS服务端,另一台linux主机B作为客户端:
看一下主机A的当前网络配置:
[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
16、实现正向解析DNS服务器
简单架构:
A主机:192.168.7.102 (客户端)
B主机:192.168.7.101 (http服务器)
C主机:192.168.7.100 (DNS服务器)
1、在C主机上配置DNS服务器
在主配置文件中定义区域:
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. ( # 其中dns1为自定义名称,可以为其他字符,会自动补全想要解析的域名,admin.baidu.com.是管理员邮箱,最后一个点很关键,不加上,就会自动又补全一个域名,一定要加上 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS dns1 # NS与上面的自定义名称一致 dns1 A 192.168.34.100 # 与上面的NS中dns1对应,目的是为了解析为本地DNS服务器的IP地址,dns1为二级域名,全称为dns1.baidu.net webs A 192.168.7.101 # 目的是为了将域名解析为http服务器的IP地址;webs为二级域名,全称为webs.baidu.net www CNAME webs # 对webs启用别名记录 aaa A 6.6.6.6 # 解析不同IP主机的域名, app A 8.8.8.8 ccc 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值。
2、检查配置错误
检测配置文件内容是否有误:
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
3、在http服务器上安装http服务,并创建访问页面
# yum install httpd -y # echo welcome to shanghai > /var/www/html/index.html # systemctl start httpd
4、在A主机客户端上的DNS地址指向DNS服务器
[root@centos6~]#vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
PROTOBOOT=static
IPADDR=192.168.7.102
GATEWAY=192.168.7.2
ONBOOT=yes
DNS1=192.168.7.100 # 将DNS服务器地址指向客户端DNS地址上
5、在客户端A主机上验证效果
1、以域名的形式访问http服务器,访问的结果都是同一个结果
[root@node3 ~]# curl www.baidu.com welcome to shanghai [root@node3 ~]# curl webs.baidu.com welcome to shanghai
在主机A上验证当前6.6.6.6的解析结果来自于主机C(192.168.34.100),结果如下:
2、dig www.baidu.com host www.baidu.com nslokup www.baidu.com都可以查询
[root@centos6named]#dig www.baidu.net ; <<>> 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 # 域名解析为IP地址的结果 ;; 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.7.100#53(192.168.7.100) # 显示DNS服务器的IP地址 ;; 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.7.100#53(192.168.7.100) ;; 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
17、实现反向解析DNS服务器
修改当前配置文件: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