在介绍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的反向解析
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号端口。
安装bind软件:yum install bind bind-utils -y
启动bind服务: systemctl start named(centos7启动)
service named start (centos6启动)
配置文件
主配置文件:
注意:任何服务程序如果期望其能够通过网络被其它主机访问,至少应该监听 在一个能与外部主机通信的IP地址上
缓存名称服务器的配置:
区域解析库:由众多RR组成:
资源记录:Resource Record, RR
记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX
起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录。
注意:
(1) 相邻的两个资源记录的name相同时,后续的可省略
(2) 对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有
一个A记录
注意:对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有
一个A记录
注意:避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址,比如:@, * 两个关键写法。
注意:网络地址及后缀可省略;主机地址依然需要反着写。
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
首先:我们拿一台linux主机A作为DNS服务端,另一台linux主机B作为客户端:
看一下主机A的当前网络配置:
然后在主机A上ping网址,如ping www.baidu.com,此时可以看到能ping通:
修改配置文件:
注释掉第一个,是因为他默认是监听在本地端口上,这样是不能提供服务的。
可以改成把IP改成localhost,或是你指定的某个IP。注释后默认监听在所有本地端口上。
注释掉第二个,是因为它里面写了localhost,指明了只能被本机所使用查询功能,
注释后默认所有IP都可以使用,也可以把localhost改成any。
vim /etc/named.conf
将主机B的DNS地址写成主机A的IP地址,即192.168.34.101当做主机B的DNS,指向主机A:
此时将主机A的连接外网的一个网卡down掉,然后在主机B上ping www.baidu.com,此时可以ping通:
A主机:192.168.7.102 (客户端)
B主机:192.168.7.101 (http服务器)
C主机:192.168.7.100 (DNS服务器)
在主配置文件中定义区域:
type类型有 主:从:根:转发。
file指区域解析库文件的文件名,默认放在/var/named/目录下,修改当前配置文件:
vim /etc/named.rfc1912.zones
将 /var/named/目录下的默认配置文件复制一份,并修改区域数据解析库文件:
注意:named.localhost的属性,尤其是属组,一定要是named所属组。
修改里边的区域数据解析库内容:
注意:以上的SOA记录里面小括号里面的那五行分别指的是 序列号;刷新时间;重试时间;
过期时间;否定答案时间的TLL值。
检测配置文件内容是否有误:
named-checkzone baidu.com /var/named/baidu.com.zone
rncd reload 重新加载服务。
1、以域名的形式访问http服务器,访问的结果都是同一个结果
在主机A上验证当前6.6.6.6的解析结果来自于主机C(192.168.34.100),结果如下:
2、dig www.baidu.com host www.baidu.com nslokup www.baidu.com都可以查询
此时可以看到当前的7.7.7.7解析结果也是来自于192.168.34.101:
dig blog.baidu.com host blog.baidu.com nslokup blog.baidu.com
不输入www验证解析内容:
用户输入错误解析文件信息:
解析当前的A记录:
查询域中的MX记录:
验证当前生成最大200条记录的信息内容:
查询邮件服务器:
dig -t mx easthome.com 查找一个域的邮件服务器。
修改当前配置文件:vim /etc/named.rfc1912.zones
修改反向区域解析库文件:
将配置文件生效:
检查区域库文件反向解析结果:
本文地址:http://lianchengexpo.xrbh.cn/quote/6229.html 迅博思语资讯 http://lianchengexpo.xrbh.cn/ , 查看更多