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: 有多部分组成
    1. 当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字;
    2. 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换 例如:邮箱admin@magedu.com需要写成 admin.magedu.com.
    3. 主从服务区域传输相关定义以及否定的答案的统一的TTL

书写记录相关注意事项

  1. 名称如果是完整名称,必须以.结尾,否则会自动添加域名后缀

    例如:域名magedu.com的子域名admin.magedu.com,在书写的时候,要么写成admin 要么加上完整名称admin.magedu.com.,以.结尾

  2. 如果是本管理域名本身的记录,可以用@代替

  3. 字段都是可以从上一条继承

  4. 五个值中的第一个序列号需要在每次更新后手动增加,方便数据库间的数据同步

例如:

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.1ns2.baidu.com的ip是202.99.16.2

那么我们应该创建两条NS记录,当然,NS记录依赖A记录的解析,我们首先应该为ns1.baidu.comns2.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,就表示是从权威服务器获取的,否则就是递归服务器

posted @ 2023-04-09 19:17  厚礼蝎  阅读(63)  评论(0编辑  收藏  举报