RHCE(九)DNS服务

概念

域名系统DNS(Domain Name System)是因特网使用的命名系统,域名(domain name)。这里,“域”(domain)是名字空间中一个可被管理的划分。DNS作用很简单,就是对ip通过域名进行访问

因特网的域名结构

域名只是逻辑概念,并不代表计算机所在的物理地点。分为三大类:

  1. 国家顶级域名
  2. 通用顶级域名
  3. 基础结构域名——arpa用于反向域名解析

因特网在命名时采用层次树状结构命名

服务器主要用来管理互联网的主目录,全世界只有13台,这13台根服务器可以指挥Firefox或互联网 Explorer这样的Web浏览器和电子邮件程序控制互联网通信。换句话说——攻击整个因特网最有力、最直接,也是最致命的方法恐怕就是攻击根域名服务器了。

根服务器的作用:负责全球互联网域名的体系和Ip地址的管理,根域记录所有顶级(一级)域名服务器的信息。

DNS的发展

1、hosts文件——需要不停的添加域名(手工添加)
2、周期性任务——在指定时间自动去写(自动添加)
3、server——东西太多(性能hold不住)
4、分布式数据库——全球各地分放

域名解析的方式

DNS服务器解析域名的两种方式:
递归——计算机只发起一次请求
迭代——计算机发起多次请求

DNS域名解析的过程

解析方式:客户端发出的查询都是递归查询,DNS服务器向外发出的一般都是迭代查询
在这里插入图片描述

  1. 在浏览器中输入www. google .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域的服务器收到请求后,如果自己无法解析,它就会找一个管理google .com的DNS服务器地址给本地DNS服务器。
    当本地DNS服务器收到这个地址后,就会找google.com域服务器,重复上面的动作,进行查询,直至找到www. google.com主机。
  6. 如果用的是转发模式,本地DNS服务 器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把请求转至上上级,以此循环。找到最后把结果返回给本地DNS服务器,由此DNS服务器再
    返回给客户机。

过程比较繁琐,但逻辑性强,容易理解,DNS解析过程也是HR经常会问到的问题!

上文提到的权威和非权威是根据解析答案是否由直接负责的DNS服务器返回:
①权威答案:由直接负责的DNS服务器返回的答案。
②非权威答案:不是由直接负责的DNS服务器返回的答案。这种情况下一般是由其他DNS服务器直接返回缓存的解析结果。

DNS 服务器类型

主DNS服务器:数据修改 (接受用户请求返回数据) master
辅助dns服务器: 定期请求数据同步 slave
缓存dns服务器: 只缓存dns数据 hint
转发器:缓存服务器去掉缓存功能 forward

bind

DNS协议的一种开源实现——bind,当今互联网上的通信几乎都必须借助于DNS服务器来解析主机名,得到通信对方的IP地址,而在DNS服务器上最常用的软件就是bind,提供dns服务的套件叫bind但执行服务名称的是named。

bind相关的程序包:
1 bind:提供dns server程序,以及几个常用的测试工具。
2 bind-utils:bind客户端程序集,例如提供dig, nslookup等工具。
3 bind-libs:提供bind和bind-utils包中的程序共同用到的库文件。
4 bind-chroot:选装,让bind程序(named进程)运行于jail进程之下。

yum install bind -y 安装bind软件
rpm -ql bind 查看bind的相关配置文件

	/etc/named.conf  	   主配置文件
	/etc/rndc.conf:        相关配置文件
	/var/named/zidingyi.zone	区域数据文件,需要手动创建
	/usr/sbin/named-checkconf	配置检查脚本工具
	/usr/sbin/named-checkzone	区域配置检查工具
	/var/named/named.ca  全球十三个根服务器的相关信息

注意:
1)一台DNS服务器可同时为多个区域提供解析。
2)DNS服务器必须要有根区域解析库文件:named.ca.
3)DNS服务器还应该有两个区域解析库文件:localhost和127.0.0.1的正反向解析库,这两个文件分别如下:

 ①正向解析库文件:/var/named/named.localhost
 ②反向解析库文件:/var/named/named.loopback

4)DNS在53端口上监听请求并提供响应的服务。出于性能的考虑,DNS查询请求用UDP协议交互并且每个请求的大小小于512字节,但是如果返回的请求大小大于512字节,交互双方会协商使用TCP协议。

配置文件详解

查看主配置文件/var/named.conf

[root@www ~]# vim /var/named.conf 

options {
	#定义监听端口,如果所有地址都监听,则只写端口
        listen-on port 53 { 127.0.0.1; };                   
        listen-on-v6 port 53 { ::1; };
		 #定义数据文件目录
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";   
        statistics-file "/var/named/data/named_stats.txt";     统计档案、文件
        memstatistics-file "/var/named/data/named_mem_stats.txt";分配统计目录
        allow-query     { localhost; };   #只允许本地主机进行查询
        recursion yes;       #允许递归
	#allow-recursion { 192.168.0.0/16; }      ;指定可以递归的范围
logging { //指定日志记录分类和他们的目标位置

};
Zone{  定义区域,一个zone定义一个区域
	type hint;
};

type区域类型,有以下下几种:

  • 主区域:主DNS,master
  • 从区域:从DNS,slave
  • 缓存区域:hint,在找不到相关信息的时候去从根查找,标识根的地址
  • 转发区域:forward,转发到指定区域,而不是指向根

查看named.localhost文件

[root@www ~]# cat /var/named/named.localhost 
 	$TTL 1D
 	@   IN SOA  @ rname.invalid. (
 	                    0   ; serial	序列号
 	                    1D  ; refresh	检查时间
 	                    1H  ; retry		重试时间
 	                    1W  ; expire		缓存时长
 	                    3H )   ; minimum	过期时间
 	     	NS  @
 	@ 		A   127.0.0.1    关键就是这一条记录 

每一条资源记录默认向上一条资源记录去匹配参数

解释:
资源记录包含的元素:

owner-name      TTL      class       type      date
主机名     资源记录生存时间 INTERNET      A    记录存储数据(主机ip)

TTL值:当外部DNS服务器对你的DNS这个域进行查询时,这个记录会放置在对方的DNS服务器几秒钟

@:对SOA所解析的区域可以用@符号来代替

类型:

  • SOA(起始授权记录) 记录提供有关dns区域工作方式的信息——具体负责哪个区域的解析
  • NS 将自己的域名映射到DNS 将域名最终映射到哪一台主机(标记 dns服务器)
  • A (ipv4地址记录) 资源记录将主机名映射到ipv4地址。
  • CNAME (规范名称)记录域别名
  • MX 邮件交换记录
  • PTR指针记录 将IPV4 IPV6地址映射到主机名 (用于反向DNS)
  • AAAA (IPV6 地址记录) 将主机名映射到ipv6地址。

五种定义的信息
serial number: 序列号 定义当前使用的数据序列号,遵循“年+月+日+编号” ·,主和从的更新依据
refresh: 定义检查间隔时间 (上次和这次变化的时间)
retry: 重试时间 < 检查时间>
expire: 过期时间 缓存放多久过期
negative answer ttl: 否定答案的缓存时长 (没有指定生存期的数据可以保存在数据中的时间及TTL值)
时间单位:M(分钟)、H(小时)、D(天)、W(周),默认单位是秒

发布了95 篇原创文章 · 获赞 94 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43624033/article/details/105404770