DNS常识
DNS
DNS:Domain Name System 应用层协议
C/S,53/udp, 53/tcp
-
53/udp:用来给客户端解析用的
-
53/tcp:用来给从服务器同步的端口
BIND:Bekerley Internat Name Domain
ISC (www.isc.org)
本地名称解析配置文件:hosts
- linux上 /etc/hosts
- windows上
%WINDIR%/system32/drivers/etc/hosts
- 93.46.8.89 www.google.com
前置知识
在CentOS7中,无法像传统一样直接修改/etc/resolv.conf
来修改DNS
因为只要重启NetworkManager服务,就会重置DNS
想要能跟传统一样修改DNS,需要给NetworkManager添加一个设置
修改/etc/NetworkManager/NetworkManager.conf
文件
[main]
#plugins=ifcfg-rh,ibft
dns=none #添加这一样
重启NetworkManager服务
systemctl restart NetworkManager
DNS解析顺序
一次完整的查询请求经过的流程:
Client -->hosts文件 -->DNS Service Local Cache --> DNS Server(recursion) --> Server Cache --> iteration(迭代) --> 根--> 顶级域名DNS-->二级域名DNS...
记录类型
区域解析库:由众多RR组成:
- 资源记录:Resource Record, RR
- 记录类型:
rr_type
: A, AAAA, PTR, SOA, NS, CNAME, MX
- SOA: Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个 SOA记录,必须位于解析库的第一条记录
- A: internet Address,作用,FQDN --> IP 域名解析为ipv4地址 正向解析
- AAAA: FQDN --> IPv6 域名解析为ipv6地址 正向解析
- PTR: PoinTeR,IP --> FQDN IP地址解析为域名 反向解析
- 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) 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值 进行定义;此仅表示通过多个不同的名字可以找到同一个主机
SOA记录
起始授权机构,SOA(Start Of Authority):
该记录表明DNS名称服务器是DNS域中的数据表的信息来源,该服务器是主机名字的管理者,创建新区域时,该资源记录自动创建,且是DNS数据库文件中的第一条记录。
- name: 当前区域的名字,例如
magedu.com.
- value: 有多部分组成
- 当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字;
- 当前区域管理员的邮箱地址;但地址中不能使用
@
符号,一般用.
替换 例如:邮箱admin@magedu.com
需要写成admin.magedu.com.
- 主从服务区域传输相关定义以及否定的答案的统一的TTL
书写记录相关注意事项
名称如果是完整名称,必须以
.
结尾,否则会自动添加域名后缀例如:域名
magedu.com
的子域名admin.magedu.com
,在书写的时候,要么写成admin
要么加上完整名称admin.magedu.com.
,以.
结尾如果是本管理域名本身的记录,可以用
@
代替字段都是可以从上一条继承
五个值中的第一个序列号需要在每次更新后手动增加,方便数据库间的数据同步
例如:
magedu.com. 86400 IN SOA ns.magedu.com. nsadmin.magedu.com.(邮箱) (
2015042201 ;序列号 类似版本号,当我们更新了数据,需要手动的调大序列号,方便dns服务器间的数据同步
2H ;刷新时间 从服务器拉取数据时间
10M ;重试时间 从服务器拉取失败后的重试时间间隔
1W ;过期时间 当超过过期时间还是无法同步数据,将判定为从服务器数据失效
1D ;错误或者不存在的记录的缓存时间
)
#也可以省略写法
$TTL 86400 #这里统一写了TTL 下方的所有记录都可以省略TTL
@ IN SOA ns.magedu.com. nsadmin.magedu.com.(邮箱) ( #这里使用了IN,下方的其他记录就可以继承上条记录的IN,省略不写IN
#由于当前数据库本来就是给magedu.com使用的,所以,这里的magedu.com.可以使用@代替
#这里写的ns.magedu.com. 在下面一定要将ns子域名指向本机
2015042201 ;序列号
2H ;刷新时间
10M ;重试时间
1W ;过期时间
1D ;否定答案的TTL值
)
NS记录
NS记录称为域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析。
假设
baidu.com
区域有两个DNS服务器负责解析;
ns1.baidu.com
是主服务器,ns2.baidu.com
是辅助服务器,ns1.baidu.com
的ip是202.99.16.1
,ns2.baidu.com
的ip是202.99.16.2
。那么我们应该创建两条NS记录,当然,NS记录依赖A记录的解析,我们首先应该为
ns1.baidu.com
和ns2.baidu.com
创建两条A记录注:ns记录说明,在这个区域里,有多少个服务器承担解析的任务
name: 当前区域的名字
value: 当前区域的某DNS服务器的名字,例如ns.magedu.com.
注意:一个区域可以有多个NS记录
例如: magedu.com. IN NS ns1.magedu.com.
magedu.com. IN NS ns2.magedu.com.
注意: (1) 相邻的两个资源记录的name相同时,后续的可省略
(2) 对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有 一个A记录
A记录
A(Address)记录是用来指定主机名(或域名)对应的IP地址记录。
用户可以将该域名下的网站服务器指向到自己的web server上,同时也可以设置域名的子域名。
简单来讲,A记录就是指定域名对应的IP地址。
如我们添加一条A记录将www的主机指向IP192.168.1.1,那么当你访问www主机时就会解析到192.168.1.1这个IP上。
name: 某主机的FQDN,例如:www.magedu.com.
value: 主机名对应主机的IP地址
例如:
www.magedu.com. IN A 1.1.1.1
www.magedu.com. IN A 2.2.2.2
mx1.magedu.com. IN A 3.3.3.3
mx2.magedu.com. IN A 4.4.4.4
$GENERATE 1-254 HOST$ IN A 1.2.3.$
#解析结果
#HOST1------》1.2.3.1
#HOST2------》1.2.3.2
#HOST3------》1.2.3.3
# .........
# .........
#HOST254------》1.2.3.254
*.magedu.com. IN A 5.5.5.5
magedu.com. IN A 6.6.6.6
CNAME记录
通常称别名解析,是主机名到主机名的映射。
当需要将域名指向另一个域名,再由另一个域名提供 IP 地址,就需要添加 CNAME 记录,最常用到 CNAME的场景包括做CDN、企业邮箱、全局流量管理等。
与A记录
不同的是,CNAME别名记录设置的值不是一个固定的IP,而是主机的别名地址。
别名解析可以提供更大的灵活性,便于统一管理。
比如,当主机因某种因素的影响需要更换IP时,如果域名做了CNAME记录,就可以同时更新别名的解析指向,不需要进行新的解析操作。
例如
www 1D IN CNAM w1
w1 A 6.6.6.6
w1 A 7.7.7.7
就可以将www这个域名解析成两个IP,用来做负载轮询
DNS中的服务器类型
递归服务器
当客户端发起上网请求时,在查询了本机各种缓存之后没有获得相应的解析记录,就会向本地域名服务器发起查询请求。
本地域名服务器会先查询自己的本地缓存,如果有结果直接返给客户端,如果没有结果就会代替客户端向根域名服务器、顶级域名服务器、二级域名服务器等一级一级递归查询下去,最终找到域名对应的权威服务器取得结果并返回给客户端,同时将记录保存到本地缓存中。
当客户端在TTL值内再次发起查询请求,本地域名服务器会直接将该结果发给客户端,而无需再次发起全球查询。
在整个DNS查询过程中,客户端除了在一开始向本地域名服务器发起请求外,其余时间都是由本地域名服务器代替进行递归查询。
这里的本地域名服务器就是递归DNS服务器,它大多数在运营商端,负责则网络接入终端的DNS查询。通俗讲,就是电脑或手机上配置的那种DNS服务器IP。
权威服务器
对于一个特定的域名,必须将域名交由某个DNS服务器进行解析,才能将域名指向对应的IP地址,才能让客户通过域名访问对应的站点。
这个负责最终解析域名的服务器就是权威服务器。
权威服务器与递归服务器不同,它不负责帮助客户端进行递归查询返回解析记录,它本身的用途就是对于域名进行解析设置操作。
每个特定的域名,权威DNS服务器可能并不相同。这种权威DNS服务器只对自己所拥有的域名进行域名解析,对于自己不负责域名则无法进行解析。
比如递归DNS去taobao.com的权威DNS服务器查询baidu.com的域名肯定会查询失败。
一些大型的公司,对于权威DNS服务器可能会采用自建的方式。
而对于一般的公司,大部分会将域名托管给比较知名的权威DNS服务商。
因此递归解析服务器是运营商搭建,帮助所属网络用户去响应的权威DNS服务器查询解析结果。
而权威解析服务器一般是企业自建或域名服务商建设,给购买域名的企业和个人使用,方便其对域名进行解析管理。
通过dig命令查看是否是从权威服务器上获取的
用dig命令,返回的结果中,flags中有aa,就表示是从权威服务器获取的,否则就是递归服务器
本文来自博客园,作者:厚礼蝎,转载请注明原文链接:https://www.cnblogs.com/guangdelw/p/17300855.html