关于dns服务工作的原理,和配置的细节理解。

dns服务器相关

1,dns原理,也就是迭代,和递归查询。将域名解析为ip的过程。

  一次完整的查询请求经过的流程: 

  Client -->hosts文件 -->DNS Service Local Cache -->
  DNS Server (recursion) --> Server Cache --> iteration(迭代) --> 根
  --> 顶级域名DNS-->二级域名DNS…

2,bind搭建步骤
安装相关的3个包。
vim named.conf 将查询改为any
vim named.rfc.conf 之类的文档,添加一个区。
touch 区文件 ,cp -p named.localhost

# 需要修改的配置文件
主配置文件:/etc/named.conf            定义bind服务程序运行相关的参数
区域配置文件:/etc/named.rfc1912.zones     用于定义域名和IP地址对应关系的所在路径
数据配置文件目录:/var/named/           用于定义域名和IP地址真实对应关系的数据配置文件

  

 

3,SOA 记录理解。
任何DNS系统返回第一个域名记录就是SOA(Start of Authority),在域名配置中,SOA记录格式如下:
@ IN SOA nameserver.place.dom. postmaster.place.dom. (
1 ; serial number
3600 ; refresh [1h]
600 ; retry [10m]
86400 ; expire [1d]
3600 ) ; min TTL [1h]

使用“dig”时的返回格式为:
nameserver.place.dom. 7200 IN SOA ns1.he.net. postmaster.place.dom. 1 3600 600 68400 3600

其中的每个部分解释如下:

  

nameserver.place.dom 表示该域中主dns服务的fqdn,后面加点表示绝对名称。
postmaster.place.dom 表示该域中的管理员的电子邮件地址。
@表示该域名称的替代符,以上的@表示 place.dom.。

serial number(序列号):是域名记录的版本,每更改一次域名的任何DNS记录,
版本号就会自动加一,这时secondary dns就会知道DNS记录发生更改,以便重新同步。
refresh(刷新时间):告诉secondary dns多久应该查询primary dns,
看看DNS记录是否有更新。每次查询时,secondary dns会向primary dns请求SOA记录。
如果记录中的serial number跟secondary dns已有的序列号不一样,
则会向primary dns请求传送域名的当前的DNS记录。
retry(重试时间):如果想primary dns请求传送域名当前的DNS记录失败后,
间隔重试时间后再次重试请求。一般来说,retry小于refresh。
expire(过期时间):在过期时间之前,secondary dns会继续请求传送DNS记录,
并且在此时间里,secondary dns会根据已有的记录应答相关的DNS查询。
如果到了过期时间后,secondary dns会停止应答该域名的DNS查询。
min TTL(最小TTL):域名所有记录的最小生存时间值。当用户DNS查询到记录后,
将存在缓存中,直到至少过了这个时间才将缓存刷新重新查询。
有的DNS服务器还会有Negative caching TTL,就是当用户DNS查询到无此域名记录(NXDOMAIN)时,
将把这个“没有此域名的记录”的声明保存在缓存中的时间。

 

4,NS记录的理解。

refer to : https://www.i7dom.cn/206/2019/25/dns-forwarders.html

https://cloud.tencent.com/developer/article/1618781?from=15425


NS记录
  (1)NS记录是域名DNS服务器里面的一种记录类型,
    可以针对每个域名或子域名来设定他的NS记录,
    当设定后,相当于把他的解析权交给了对应的DNS。

    所以,作用就是指定当前域中的dns服务器,可以有多个,但是master是要写在SOA记录里的。

  (2)NS记录的用途:CDN或负载均衡时使用。

  (3)NS记录最主要的作用就是授权,授权自己的域的解析服务器,并且能够向下授权,
    授权给不同的子域。迭代查询的过程应该就是不停的查询区域文件中的NS记录,和

    对应的NS主机ip地址。


    NS Name Server 即DNS的NS记录 是用来做授权的
    向下授权 用来指定该域名由哪个DNS服务器来进行解析
  举例说明:

每个域的名称服务器都是通过其上级名称服务器在解析库进行授权

格式:[zone]  TTL  IN NS  [FQDN主机名称]

说明: NS记录和MX记录,在其正向解析文件中必有一条A记录与之对应

  • 根域授权tld(顶级域)
    .com    IN    NS    ns1.com
    .com    IN    NS    ns2.com
    
    ns1.com.    IN    A    2.2.2.1
    ns2.com.    IN    A    2.2.2.2
  • baidu.com. 在 com. 的名称服务器上添加资源解析记录
    baidu.com.    IN    NS    ns1.baidu.com
    baidu.com.    IN    NS    ns2.baidu.com
    baidu.com.    IN    NS    ns3.baidu.com
    
    ns1.baidu.com.    IN    A    3.3.3.1
    ns2.baidu.com.    IN    A    3.3.3.2
    ns3.baidu.com.    IN    A    3.3.3.3
    
    
    #这里的 ns1.baidu.com 是在baidu.com. 域中自定义的名称服务器,可以有多个,就和上面 com. 域中的 ns1.com. 一样,都可以自定义的。
    #ns1.com 可以用dig查询到,说明ns1.com 就是 com. 域中的一台dns 服务器。ns1.baidu.com 也是如此。
    
    # 相邻行的资源记录name相同时,后面行的可省略,name就是第一列的值;
    # 注意. 号,有可能缺少. 号导致报错

     


5,fqdn是什么意思?
FQDN:(Fully Qualified Domain Name)全限定域名:同时带有主机名和域名的名称。(通过符号“.”)
例如:主机名是bigserver,域名是mycompany.com,那么FQDN就是bigserver.mycompany.com。

6,配置反向解析时的文件名形式不固定。

7,鸟哥关于合法的dns授权理解。
就是NS记录的内容,授予权利这个网域的dns主机。合法的授权必须向上层申请。
举个例子来说:我想要自己的领域名称的名字,所以我可以去外面的 ISP 申请注册一个合法的名
字来架设我的 DNS !从此之后,别人就可以经过我的 DNS 正解查询得到我的主机 IP。但是如果
要由 IP 反查回 hostname 的话,我就『一定必需要』请管理我主机所在网域的上层的 DNS 管理
员来设定才行ㄋㄟ!这也是目前比较麻烦的地方,因为正解您可以自行设定, 但是反解则必需要
请上层的管理员设定!如果是向 ISP 申请的 IP ,那就得向 ISP 申请反解名称改换,这个部分
通常很麻烦~

8,使用直接域名解析和泛解析的记录添加示例。
直接域名解析需要再添加一条记录。在www 那条记录下面最好,因为一般都是web服务直接解析。
feng.cn IN A 192.168.0.5 或者
. IN A 192.168.0.5

泛解析就前面加一个*号,表示全部。
*.feng.cn IN A 192.168.0.5
* IN A 192.168.0.5

9,高速缓存dns 只需要安装了 caching-nameserver 软件包即可。设置缓存服务时,
通常设置域名转发器。

10,如何测试正反解是否成功?
正解和反解都是向区文件里添加记录。用dig 测试 正解。dig -x 测试反解,看看query和answer
是否正确。

11,dns系统里面的ip都可跨网段,不必都需要在相同网段里。

12,dns的主从配置,添加slave。
主配置文件中加个 allow-transfer { 192.168.1.77; };
从配置文件中加上 masters { 192.168.1.88; };

13,配置dns主从同步后不成功。查看日志后,/var/log/message 中报错
dumping master file: tmp-1rYIymo1zo: open: permission denied
解决:chown named /var/named

 

14,关于域中的管理员邮箱地址和MX记录的区别。
SOA中的 第一行配置中括号前为dns域中的管理员邮箱地址。
MX记录指的是指定用来交换或者转发邮件信息的服务器。

15,dns正解的原理容易明白,但是dns反解的原理尚待清晰理解。
总之,正反解格式不同,但是又相近。

16,域名,主机名,用户名,三者必须区分开来。
以linux系统为例,[root@tao-ffy-v4-mail ~]#
上述root 为用户名,@后名接的是就是域中的主机名,这个区域的域名没有显示出来。

一般邮箱的账号格式都是   “用户名@域名“”

17,服务器上的 /etc/resolv.conf 里的域名和dns系统的关系?

可以说关系不大,该文件只是设置将要使用的名称服务器地址。如果需要解析内网中的域名的话,才需要修改这里的dns值。

这里设置的 是 dns 解析过程中的 local dns server,本机和它递归,它与其他dns server 进行迭代。

 

18,dig 命令 使用

dig domain  #正向解析

dig -x ip  #反向解析

dig @nsserver-ip  domain  # 使用@符号指定本地dns服务器地址,就无需修改 /etc/resolv.conf 文件

dig doman +trace   #显示解析的过程

 

19,dns 是用的tcp 还是 udp 传输数据的?

域名解析时使用UDP协议:
客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。不用经过三次握手,这样DNS服务器负载更低,响应更快。理论上说,客户端也可以指定向DNS服务器查询时用TCP,但事实上,很多DNS服务器进行配置的时候,仅支持UDP查询包。

DNS区域传输的时候使用TCP协议:
辅域名服务器会定时(一般3小时)向主域名服务器进行查询以便了解数据是否有变动。如有变动,会执行一次区域传送,进行数据同步。区域传送使用TCP而不是UDP,因为数据同步传送的数据量比一个请求应答的数据量要多得多。

posted @ 2019-01-15 16:27  风风羊  阅读(1400)  评论(0编辑  收藏  举报