Linux运维之 DNS 域名解析服务

一、实验环境(rhel7.0版本)

主机环境:rhel7.0

各主机信息

主机名IP
server172.25.254.1
desktop172.25.254.2
物理机172.25.254.7

 

二、DNS 的介绍

 

1、DNS 的含义

 

DNS(Domain  Name  System)域名系统,能够提供域名与  IP 地址的解析服务

DNS 是一个分布式数据库,命名系统采用层次的逻辑的结构,如同一颗倒置的数,这个逻辑的属性结构称为域名空间,由于  DNS  话分了域名空间,所以各机构可以使用自己的域名空间创建  DNS  信息。

注意:DNS 域名空间中,树的最大深度不得超过 127 层,树中每个节点最长可以存储  63  个字符。

 

2、完整主机名:FQDN

 

完整主机名包括“主机名与域名”。下面通过几个例子来说明:

  1. 【.gov.tw】、【.edu.tw】、【.com.tw】——域名为【.tw】,主机名为【gov、edu、com】
  2. 【.ntu.edu.tw】、【.ksu.edu.tw】、【..ncku.edu.tw】——域名为【.edu.tw】,主机名为【ntu、ksu、ncku】
  3. 【www.ksu.edu.tw】——域名为【.ksu.edu.tw】,主机名为【www】

并不是以小数点(.)区分域名与主机名的,某些时刻,域名所管理的主机名会含有小数点。举例来说,主机名为 www.dic,而域名为  ksu.edu.tw,因此全名为  www.dic.ksu.edu.tw。

通常,FQDN 有严格的命名限制,长度不能超过  256  字节,只允许使用字符 a-z,0-9,A-Z  和件号(-),点号(.)只允许在域名标志之间或者 FQDN 的结尾使用。

 

3、域和域名

 

        DNS 树的每个节点代表一个域,通过这些节点,对整个域名空间进行划分,成为一个层次结构。域名空间的每个域的名字,通过域名进行表示。

        域名:通常由一个完全合格域名(FQDN)标识。FQDN  能准确表示出其相对于  DNS  域树根的位置,也就是节点到 DNS  树根的完整表述方式,从节点到树根采用反向书写,并将每个即点用“.”分隔对于  DNS  域 google  来说,其完全正式域名(FQDN)为  goolgle.com。例如,google 为 com 域的子域,其表示方法为 google.com,而  www 为 google  域中的子域,可以使用  www.google.com  表示。域名不区分大小写。

        由最顶层到下层,可以分成:根域、顶级域、二级域、子域。

  •  .(root/根域):全球有13个。
  • 3种类型的顶级域:
  1. 组织域:采用 3 个字符的代号,表示  DNS  域中所包含的组织的主要功能或活动。比如:com 为商业机构组织;edu  为教育机构组织;gov  为政府机构组织;mil  为军事机构组织;net 为网络机构组织;org  为非营利机构组织;int  为国际机构组织。
  2. 地址域:采用  2 个字符的国家或地区代号。如  cn  为中国;kr  为韩国;us 为美国。
  3. 反向域:这是个特殊域,名字为  in-addr.arpa,用于将 IP  地址映射到名字(反向查询)。

 

4、DNS  使用的   port  number

 

        DNS  使用的就是  53  这个 port。你可以到  Linux  下面的  /etc/services 这个文件看看。搜寻一下  domain  这个关键词,就可以查到 53  这个  port。

        通常  DNS  是以  UDP  这个较快的数据传输协议来查询的,但是万一没有办法查询到完整的信息时,就会再次以  TCP  这个协议来重新查询。所以启动  DNS  的 daemon (就是 named )时,会同时启动  TCP  及 UDP  的 port 53。所以,记得防火墙也要同时放行  TCP、UDP  port 53。

 

5、DNS 相关概念

 

(1)DNS 服务器

运行  DNS 服务器程序的计算机,存储 DNS 数据库信息。DNS  服务器会尝试解析客户机的查询请求。在解答查询时,如果 DNS  服务器能提供所请求的信息,就直接回应解析结果,如果该  DNS  服务器没有相应的域名信息,则为客户机提供另一个能帮准解析查询的服务器地址,如果以上两种方法均失败,则回应客户机没有所请求的信息或请求的信息不存在。

 

(2)DNS 缓存

DNS 服务器在解析客户机请求时,如果本地没有该  DNS 信息,则可以询问其他 DNS  服务器,当其他域名服务器返回查询结果时,该  DNS  服务器会将该结果记录在本地的缓存中,成为  DNS 缓存。当西一次客户机提交相同的请求时,DNS 服务器能够直接使用缓存的 DNS  信息进行解析。

 

(3)DNS 查询方式

方式一:递归查询

        递归查询是一种  DNS 服务器的查询模式,在该模式下  DNS  服务器接收到客户机请求,必须使用一个准确的查询结果恢复客户机。如果 DNS  服务器本地没有存储查询 DNS  信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。

方式二:迭代查询

        DNS  服务器另外一中查询方式为迭代查询,当客户机发送查询请求时,DNS  服务器并不直接回复查询结果,二是告诉客户机另一台 DNS 服务器地址,客户机再向这台 DNS  服务器提交请求,依次循环之道返回查询的结果为止。

 

6、DNS 资源记录

 

1、SOA  资源记录

        每个区再区的开始处都包含了一个起始授权记录,简称  SOA  记录。

       SOA  定义了域的全局参数,进行整个域的管理设置。一个区域文件只允许存在唯一的  SOA 记录。

2、NS 资源记录

        NS(Name  Server)记录是域名服务器记录,用来指定域名由哪个  DNS  服务器来进行解析。每个区在区根处至少包含一个  NS  记录。

3、A 资源记录

        地址(A)资源记录把  FQDN  映射到  IPv4  地址。因为有此记录,所以 DNS  服务器能解析  FQDN  域名对应的  IP 地址。

4、A 资源记录

        地址(A)资源记录把  FQDN  映射到  IPv6  地址。因为有此记录,所以 DNS  服务器能解析  FQDN  域名对应的  IP 地址。

5、PTR 资源记录

        相对于  A  资源记录,指针(PTR)记录把  IP  地址映射到 FQDN。用于反向查询,通过 IP 地址,找到域名。

6、CNAME 资源记录

        别名记录(CNAME)资源记录创建特定  FQDN  的别名。用户可以使用  CNAME  记录来隐藏用户网路的实现细节,使连接的客户机无法知道真正的域名。       

例:ping  百度时,解析到了百度的别名服务器。百度由各 cname=www.a.shifen.com  的别名

7、MX 资源记录

        邮件交换(MX)资源记录,为 DNS 域名指定邮件交换服务器。

        邮件交换服务器是为  DNS  域名处理或转发邮件的主机。处理邮件指把邮件投递到目的地或转交另一不同类型的邮件传送者。转发邮件指把邮件发送到最终目的服务器,用简单邮件传输协议  SMTP  把邮件发送给离最终目的地最近的邮件交换服务器,或使邮件经过一定时间的排队。

 

7、通过  DNS  查询主机名  IP 的流程

 

        首先,当你的浏览器的地址栏输入 http://www.baidu.com 时,计算机就会依据相关设置(在  Linux  下面就是利用  /etc/resolv.conf  这个文件)所提供的  DNS  的 IP 去进行连接查询了。由于目前最常见的  DNS  服务器是  114.114.114.114 这个  DNS,所以我们就以它为例。这个时候,114.114.114.114  的这台服务器会这样工作。 

(1)收到用户的查询要求,先看看本身有没有记录,若无则向 .(root)查询

        由于  DNS  是阶层式的架构,每台主机都会管理自己辖下的主机名解析。因为 114.114.114.114   并没有管理相应的权力,因此就无法直接回报给客户端。此时,114.114.114.114  就会向最顶层,也就是 .(root)的服务器查询相关  IP  信息。

 

(2)向最顶层的  .(root)查询

      114.114.114.114  会主动向  .(root)询问  www.baidu.com  在哪里,但是由于  .(root)只记录了 .com  的信息(因为只有  .com  向  .(root)的服务器注册而已),此时  .(root)会告知:“我是不知道这部主机的  IP,不过,你应该向  .com  去询问才对,我这里不管。我跟你说,.com  在哪里吧。”

 

(3)向第二层的 .com 服务器查询

       114.114.114.114  接着又到  .com  去查询,而该台及其管理的又仅有  bai.com等,经过比对后发现我们要的是  .baidu.com  的区域,所以这个时候,.com  又告诉  114.114.114.114  说:“你要去管理  .baidu.com  这个区域的主机哪里查询,我有它的  IP”。

 

(4)向第三层的 .baidu.com  服务器查询

        等到  114.114.114.114  找到.baidu.com  之后,OK!.baidu.com  说:“没错,这台主机名是我管理的,我跟你说它的 IP  是......”,所以此时  114.114.114  就能够查到  www.baidu.com  的  IP  了。

 

(5)记录缓存并回报用户

        查到了正确的  IP  后,114.114.114.114  的  DNS  机器总不会在下次有人查询  www.baidu.com  的时候再跑一次这样的流程吧,很远很累的,而且也很耗系统的资源与网络的带宽。所以,114.114.114.114  这个  DNS  会先记录一份查询的结果在自己的缓存当中,以方便响应下一次的相同要求。最后则将结果回报给  client  端。当然,那个记忆在  Cache  当中的数据,其实是有时间性的,当过了  DNS  设置记忆的时间(通常可能是  24 小时),那么该记录就会被释放。

 

8、正向解析、反向解析与 zone 的意义

 

        从上面的流程中,我们知道最重要的就是  .baidu.com 那台 DNS  服务器内的记录信息了。这些记录的东西我们可以称为数据库,而在数据库里面针对每个要解析的域(domain),就称为一个区域(zone)。

 

1、正向解析:

        正向解析是指域名到  IP  地址的解析过程。

2、反向解析:

       反向解析是从  IP  地址到域名的解析过程。反向解析的作用为服务器的身份验证。

        https://dns.aizhan.com

3、zone:

        不管是正向解析还是反向解析,每个域的记录就是一个区域。

 

(1)正向解析的设置权以及 DNS  的正向解析 Zone  记录的标志

        只要该域没有人使用,那么谁先抢到了,就能够使用了。

        那正向解析文件的  ZOne  里面主要记录了什么东西呢?因为正向解析的重点是由主机名查询到 IP,而且每台 DNS  服务器还是需要定义清楚,同时,可能还需要架设  Master/Slave  架构的 DNS 环境,因此,正向解析通常具有下面几种标志:

  1. SOA
  2. NS
  3. A

 

(2)方向解析的设置全以及 DNS  的反向解析 Zone 记录的标志

        若有反向解析的需求,就需要向你的直属上层  ISP  申请才行。

        那么反向解析的  Zone  主要记录的信息有哪些?

  1. SOA
  2. NS
  3. PTR

 

(3)每台 DNS  都需要的正向解析 Zone:hint

        我们知道一个正向解析或一个反向解析就可以称为一个 Zone  了。那么有没有哪个 Zone 是特别重要的呢?有的,那就是 .(root)——根域。当  DNS  服务器在自己的数据库找不到所需的信息时,一顶会找 .(root)。那 . 在哪里?所以就需要有记录  .  在哪里的记录 Zone  才行。这个记录  .  的 Zone 的类型,就被我们称为  hint  类型这几乎是每个  DNS  服务器都需要知道的  Zone。

 

9、DNS 的 Master/Slave  架构

 

(1)Matsr/Slave  的查询优先权

        不论是  Mater 还是 Slave  服务器,都必须可以同时提供  DNS  的服务才好。因为在 DNS  系统当中,域名的查询是“先进先出”的状态,我们不知道哪一台主机的数据会先被查询到。为了提供良好的  DNS 服务,每台 DNS  主机都要能正常工作才好,而且,每一台  DNS  服务器的数据库内容需要完全一致,否则就会造成客户端找到的 IP 是错误的。

 

(2)Master/Slave  数据的同步化过程

        请注意,Slave  是需要更新来自  Master  的数据,所以当然 Slave  在设置之初就需要存在 Mster  才行。基本上,不论 Master  还是 Slave 的数据库,都会有一个代表该数据库新旧的“序号”,这个序号数值的大小,是会影响是否要更新的操作的。至于更新的方式主要有两种:

  1. Mater  主动告知:例如在 Master  修改了数据库内容,并且加大数据库序号后,重新启动 DNS 服务,那 Master  会主动告知 Slave  来更新数据库,此时就能够实现数据同步。
  2. 由  Slave 主动提出要求:基本上,Slave  会定时向 Master  查看数据库的序号,当发现 Master  数据库的序号比 Slave  自己的序号还要大(代表比较新),那么 Slave 就会开始更新。如果序号补编,那么就判断数据库没有更动,因此不会进行同步更新。

        多久提出一次更新,如果该次更新时由于网络问题而没有查询到 Master  的序号(亦即更新失败),那隔多久会重新更新一次?这个与 SOA  的标志有关。

 

(3)Slave  的优点

1、容错能力

        配置从  DNS  服务器后,在该区的主 DNS  服务器崩溃的情况下,客户机仍能解析该区的名称。一般把区的主  DNS 服务器与区的从 DNS  服务器安装在不同的子网上,这样如果到一个子网的连接中断,DNS  客户机还能直接查询另一个子网上的 DNS 服务器。

2、减少广域链路的通信量

        如果某个区在远程有大量客户机,用户就可以在远程添加该区的从 DNS  服务器,并把远程的客户机配置成先查询这些服务器,这样就能放置远程客户机通过慢链路通信来进行  DNS 查询。

3、减轻 Master 的负载

       从  DNS 服务器能回答该区的查询,从而减少该区主 DNS 必须回答的查询数。

 

三、Client  端的设置

 

1、相关配置文件

 

  • /etc/hosts:这个是最早的 Hostname  对应  IP 的文件
  • /etc/resolv.conf:这个重要。就是 ISP  的 DNS  服务器 IP 记录处
  • /etc/nsswitch.conf:这个文件则是来决定先要使用  /etc/hosts  还是  /etc/resolv.conf  的设置

        一般而言,Linux  的默认主机名与  IP  的对应解析都以  /etc/hosts  为优先,为什么呢?可以看一下  /etc/nsswitch.conf,并找到  hosts 的项目:

[root@server ~]# vim /etc/nsswitch.conf 
hosts:      files dns

        上面那个  “files”  就是使用  /etc/hosts,而最后的 “dns”  则是使用  /etc/resolv.conf  的 DNS  服务器来进行搜寻。当然,你也可以将其条环过来,不过,毕竟  /etc/hosts  比较简单,所以将它摆在前面比较好。

        下面我们来看看  /etc/resolv.conf  文件中的内容:

[root@server ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 114.114.114.114

        DNS  服务器的  IP 可以设置多个,为什么要设置多个呢?因为当第一台(按照设置的顺序)DNS  宕机时,我们客户端可以使用第二台来进行查询,这优点向 DNS  备份功能。不过在网络正常使用的情况下,永远只有第一台 DNS  服务器会被用来查询,其他的设置值只是在第一台出问题时才会被使用。

        尽量不要设置超过  3  台一上的  DNS  IP  在 /etc/resolv.conf  中,如果是你的局域网出问题,会倒置无法连接到 DNS  服务器,那么你的主机还是会向每台 DNS  服务器发出连接要求,每次来年接都有 timeout  时间的等待,会导致浪费非常多的时间。

 

问:我的主机使用 DHCP 取得  IP,很奇怪的,当我修改过 /etc/resolv.conf  之后,隔不多久这个文件又会恢复成原来的样子,这是什么原因?该如何处理?

答:因为使用 DHCP  时,系统会主动使用  DHCP  服务器来的数据进行系统配置文件的修订。因此,你必须告知系统,不要使用 DHCP 此话来的服务器设置值。此时,你需要在 /etc/sysconfig/network-scripts/ifcfg-eth0  等相关文件内,增加一行 “PEERDNS=no”,然后重新启动网络即可。此外,如果你有启动 Redhat 6.x  的 NetworkManager  服务,有时候也可能会产生一些奇特的现象,所以还是建议关掉它。

 

2、DNS  的正向解析、反向解析查询命令:host、nslookup、dig

 

(1)host

 

host [-a] FQDN [server]
host -l domain [server]
选项与参数:
-a:代表列出该主机所有的相关信息,包括 IP、TTL 与排错信息等
-l:若后面接的那个 domain 设置允许 allow-transfer 时,则列出该 domain 所管理的所有主机名对应数据
server:这个参数可有可无,当想要利用非 /etc/resolv.conf 内的 DNS 主机来查询主机名与 IP 的对应时,就可以利用这个参数了。

 

【1】、案例一:使用默认值来查出 www.baidu.com  的  IP

 

【2】、案例二:查出 www.baidu.com 的所有重要参数

 

【3】、强制以  8.8.8.8  这台 DNS  主机来查询

 

【4】、找出 baidu.com  域的所有信息

怎么会无法响应呢?这样的响应是因为管理  baidu.com  区域的 DNS 并不许我们的区域查询,毕竟我们不是 baidu.com 的系统管理员,当然没有权限可以读取整个  baidu.com  的区域设置了。这个  “host -l” 是用在自己的  DNS 服务器上。

 

(2)nslookup

 

nslookup [FQDN] [server]
nslookup
选项与参数:
1、可以直接在 nslookup 加上待查询的主机名或者是 IP,[server]可有可无;
2、如果在 nslookup 后面没有任何主机名或 IP,那将进入 nslookup 的查询功能
   在 nslookup 的查询功能当中,可以输入其他参数来进行特殊查询,例如:
   set type=any:列出所由的信息正向解析方面配置文件
   set type=mx:列出与 mx 相关的信息

 

【1】、直接查询  www.baidu.com  的 IP 信息

nslookup  可单传地将 Hostname  与  IP  对应列出,不过,还是会将查询地  DNS 主机的 IP  列出来。如果想要知道更多详细地参数,那可以直接进入 nslookup 这个软件的操作界面中,如下范例:

 

(3)dig

 

dig [options] FQDN/域名/IP [@server]
选项与参数:
@server:如果不以 /etc/resolv.conf 的设置来作为 DNS 查询,可在此填入其他的 IP
options:相关的参数很多,主要有 +trace、-t type 与 -x 三者最擦痕嗯用
  +trace:就是从 . (根域服务器)开始追踪
  -t type:查询的数据主要有 MX、NS、SOA 等类型
  -x:查询反向解析信息,非常重要的项目。

 

【1】、使用默认值查询 www.baidu.com

[root@server ~]# dig www.baidu.com

; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62546
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:        
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:    <==提出的问题的部分
;www.baidu.com.			IN	A

;; ANSWER SECTION:      <==主要的回答阶段
www.baidu.com.		571	IN	CNAME	www.a.shifen.com.
www.a.shifen.com.	126	IN	A	220.181.38.150
www.a.shifen.com.	126	IN	A	220.181.38.149

;; Query time: 24 msec
;; SERVER: 114.114.114.114#53(114.114.114.114)
;; WHEN: Wed Jun 26 21:34:55 CST 2019
;; MSG SIZE  rcvd: 101

在这个范例当中,我们可以看到整个显示出的信息包括有几个部分:

  • QUESTION : 显示所要查询的内容,因为我们是查询  www.baidu.com  的  IP,所以这里显示 A 记录
  • ANSWER:依据刚刚的  QUESTION  去查询所得到的结果,答案就是回答 IP  和别名

另外,那个 571、126、126  是允许查询者能够保留这笔记录多久的意义(缓存)。

 

【2】、查询  www.baidu.com  的 SOA  相关信息

 

【3】、查询   220.181.38.149 的反向解析信息结果

反向解析的查询目标竟然从 220.181.38.149  变成了 149.38.181.220.in-addr.arpa.  这个摸样。这个在后面讲解反向解析时,会有相应的介绍。

 

3、查询域管理者相关信息:whois

 

 

whois domainname <== 注意,是 domainname而不是 hostname

 

[root@server ~]# whois baidu.com
# 这是一堆 whois 服务器提供的信息告知,下面是实际注册的数据
   Domain Name: BAIDU.COM
   Registry Domain ID: 11181110_DOMAIN_COM-VRSN
   Registrar WHOIS Server: whois.markmonitor.com
   Registrar URL: http://www.markmonitor.com
   Updated Date: 2019-05-09T04:30:46Z
   Creation Date: 1999-10-11T11:05:17Z
   Registry Expiry Date: 2026-10-11T11:05:17Z
   Registrar: MarkMonitor Inc.
   Registrar IANA ID: 292
   Registrar Abuse Contact Email: abusecomplaints@markmonitor.com
   Registrar Abuse Contact Phone: +1.2083895740
...(省略)...——下面则是一堆网络方式。

为了保护用户的隐私权,所以,目前这个 whois  所查询到的信息已经不见得完全正确了。

 

四、DNS 服务端所需软件与文件结构

 

1、所需软件

 

这个软件名称就是  bind,使用  yum  安装即可。

 

2、文件结构

 

安装完毕之后,使用【rpm  -ql  bind】来看看这个软件提供了哪些文件。基本上,比较重要的配置文件如下:

  • /etc/named.conf:这就是我们的主配置文件。每个正向解析、反向解析都需要一个数据库文件,而文件名则是由  /etc/named.conf 所设置。
  • /etc/sysconfig/named:是否启动  chroot 及额外的参数,就由这个文件控制
  • /var/named:数据库文件默认放置在这个目录
  • /var/run/named:named  这支程序执行时默认放置  pid-file 在此目录内

 

五、单纯的  cache-only DNS  服务器与  forwarding  功能

 

1、单纯的  cache-only DNS  服务器的作用

 

当某一个访问请求解析过一个域名以后,该解析记录就放在缓存中,以后在有同样的解析请求,就直接从缓存中提供结果,加快了访问者的应答速度。

 

2、什么是  cache-only 与  forwarding  DNS  服务器

 

        有个只需要  .  这个zone  file  的简单 DNS  服务器,我们称这种没有自己公开的  DNS 数据库的服务器为 cache-only (唯高速缓存)DNS Server。顾名思义,这个  DNS  Server  只有缓存搜寻结果的功能,也就是说,它本身并没有主机名与 IP  正相解析、反向解析的配置文件,完全是由对外的查询来提供它的数据源。

        那如果连 .  都不想要呢?那就是指定上一层  DNS 服务器作为 forwarding (转发目标),将原本自己要往 . 查询的任务,丢给上层  DNS  服务器去处理即可。

        cache-only  的 DNS  并不存在数据库(其实还是存在 .  这个 root 域的  zone  file),因此不论谁来查询数据,这台 DNS  一律从自己的缓存及 .  找起,整个流程根我们之前讲过的【通过  DNS  查询主机名  IP 的流程】相同。那如果具有 forwarding  功能呢?那即使你的  DNS  具有 .  这个 zone file,这台 DNS  还是会将查询权委托上层 DNS  查询的。

 

3、cache-only 与  forwarding  DNS  服务器的配置

 

(1)前期准备

 

两台虚拟机:server虚拟机——172.25.254.1和desktop虚拟机——172.25.254.2

一个真机(用来实现虚拟机的连外网功能,因为要向114.114.114.1.14询问信息,必须能够连外网)

将server虚拟机作为服务端,desktop虚拟机作为客户端

 

【1】、配置真机和两台虚拟机,使得  server 这台虚拟机能够连外网

 

【2】、在服务端(server虚拟机)安装dns服务软件(bind)

yum  install  bind  -y(-y表示:不用与系统进行交互式访问,直接安装

 

【3】、开启dns服务软件相应的服务(named)

systemctl  start  named(第一次开启过程中,可能会由于加密字符不够(cat  /dev/random),服务开启一直在等待。此时的处理办法是:重新打开一个终端,在此终端上,敲键盘。)

端口中怎么会  port  953  且针对本机来监听呢?其实那是 named 的远程控制功能,称为远程名称解析服务控制功能(RNDC)。默认情况下,仅有本机可以针对  RNDC  来控制。

 

开启named服务之后,会自动生成/etc/rndc.key文件

 

【4】、关闭防火墙

systemctl  stop  firewalld

 

(2)配置服务

 

服务端——172.25.254.1:

 

【1】、编辑配置文件/etc/named.conf

 

将11行的ip改为any(该处控制的是named侦听的ipv4的地址)

如果此处不改,客户端在访问时会出现下面的错误

这是因为named侦听的ipv4的地址是127.0.0.1

 

将17行的localhost改为any(该处控制的是哪些客户端可以向DNS服务器询问信息)

如果此处不改,客户端在访问时会出现下面的错误

 

在18行添加forwarders  { 114.114.114.114; };

如果此处不改,客户端在访问时会出现下面的错误

 

19行的内容必须为 yes(使用默认值)

 

将33行的yes改为no(no表示不进行安全检测)

如果此处不改,客户端在访问时会出现下面的错误

 

【2】、因为修改的是配置文件,所以要重启服务

 

修改后的配置文件中的内容如下,现对其进行解释:

 [root@server ~]# vim /etc/named.conf 
  1 //
  2 // named.conf
  3 //
  4 // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
  5 // server as a caching only nameserver (as a localhost DNS resolver only).
  6 //
  7 // See /usr/share/doc/bind*/sample/ for example named configuration files.
  8 //
  9 
 10 options {
 11     listen-on port 53 { any; };
 12     listen-on-v6 port 53 { ::1; };
 13     directory   "/var/named";
 14     dump-file   "/var/named/data/cache_dump.db";
 15     statistics-file "/var/named/data/named_stats.txt";
 16     memstatistics-file "/var/named/data/named_mem_stats.txt";
 17     allow-query     { any; };
 18     forwarders { 114.114.114.114; };
 19 
 20     /* 
 21      - If you are building an AUTHORITATIVE DNS server, do NOT enable recursi    on.
22      - If you are building a RECURSIVE (caching) DNS server, you need to enab    le 
 23        recursion. 
 24      - If your recursive DNS server has a public IP address, you MUST enable     access 
 25        control to limit queries to your legitimate users. Failing to do so wi    ll
 26        cause your server to become part of large scale DNS amplification 
 27        attacks. Implementing BCP38 within your network would greatly
 28        reduce such attack surface 
 29     */
 30     recursion yes;
 31 
 32     dnssec-enable yes;
 33     dnssec-validation no;
 34     dnssec-lookaside auto;
 35 
 36     /* Path to ISC DLV key */
 37     bindkeys-file "/etc/named.iscdlv.key";
 38 
 39     managed-keys-directory "/var/named/dynamic";
 40 
 41     pid-file "/run/named/named.pid";
 42     session-keyfile "/run/named/session.key";
 43 };
 44 
 45 logging {
 46         channel default_debug {
 47                 file "data/named.run";
 48                 severity dynamic;
 49         };
 50 };
 51 
 52 zone "." IN {
 53     type hint;
 54     file "named.ca";
 55 };
 56 
 57 include "/etc/named.rfc1912.zones";
 58 include "/etc/named.root.key";

  • Listen-on  port  53 { any ;};

         监听在这台主机系统上面的哪个网络接口。默认是监听在  localhost,亦即只有本机可以对 DNS  服务进行查询,那当然是不合理的。所以这里要将大括号内的数据改写成  any。注意,可以监听多个接口,因此  any  后面需要加上分号才算结束。另外,这个项目如果忘记写也没有关系,因为默认是对整个主机系统的所由接口进行监听的。

  • directory   "/var/named";

        意思是说,如果此文件下面有规范到正向解析、反向解析的  zone  file  文件,该文件名默认应该存储在哪个目录下面。默认是放在 /var/named  下面。

  • dump-file 、statistics-file 、memstatistics-file

       与  named  这个服务有关的许多统计信息,如果想要输出称为文件的话,默认的文件名就如上所述。这三个设置值写不写应该都是没有关系的。

  • allow-query {any};

        这个是针对客户端的设置,表示到底谁可以对我的  DNS  服务提出查询请求的意思。原本的文件内容默认是针对 localhost  开放,我们这里改成对所有的用户开放(当然防火墙也必须放行才行)。不过,默认 DNS 就是对所由用户放行,所以这个设置值也可以不用写。

  • forwarders {  114.114.114.114;  };

        设置上层 DNS  的地址。

 

客户端——172.25.254.2:

 

vim  /etc/resolv.conf

添加要访问的DNS服务主机的ip——服务端的 ip(172.25.254.1)

 

在客户端测试——172.25.254.2:

 

第一次dig  www.baidu.com                       、查询百度的ip信息

 

第二次dig  www.baidu.com                       查询百度的ip信息

 

六、DNS 服务器的详细配置

 

1、正向解析文件记录的数据(Resource  Record,RR)

 

[root@server ~]# dig www.baidu.com
...(前面省略)...
;; QUESTION SECTION:
;www.baidu.com.			IN	A

;; ANSWER SECTION:
www.baidu.com.		655	IN	CNAME	www.a.shifen.com.
www.a.shifen.com.	281	IN	A	220.181.38.150
www.a.shifen.com.	281	IN	A	220.181.38.149

;; AUTHORITY SECTION:
.			261960	IN	NS	c.root-servers.net.
.			261960	IN	NS	j.root-servers.net.
...(后面省略)...

在答案的输出阶段,主要查询得到的是  A  的标志;在认证阶段,则是提供  .  的 NS  服务器为那一台的意思。格式很类似,只是  A  后面接  IP,而 NS 后面接主机名而已。我们可以将整个输出的格式建华成为下面的说明:

[domain]          [ttl]           IN            [RR type]         [RR data]
[待查数据]      [暂存时间(秒)]      IN            [资源类型]         [资源内容]

上面的格式表中,关键词  IN  是固定的,而 RR  type  与 RR data  则是互相关联性的,例如刚刚提到的  A  就是 接 IP 而不是主机名。此外,在 domain  的部分,若可能的话,请尽量使用  FQDN,亦即是主机名结尾加上一个小数点(.)就被称为  FWDN。例如刚刚  dig  www.baidu.com  的输出结果中,在答案阶段时,查找的主机名会变成  www.baidu.com.。注意看最后面有个小数点。

至于  ttl  就是 time  to  live  的缩写,意思就是当这笔记录被其他 DNS  服务器查询到后,这个记录会在对方  DNS  服务器的缓存中,保持多少秒钟的意思。

有与 ttl  可由特定的参数来统一管理,因此在 RR  的记录格式中,通常这个 ttl  的字段时可以省略的。我们将正向解析文件的 RR  记录格式汇整如下:

[domain]       IN         [RR type]        [RR data]
主机名.         IN           A              ipv4 的 IP 地址
主机名.         IN          AAAA            ipv6 的 IP 地址
域名.           IN          NS              管理这个域名的服务器的主机名称
域名.           IN          SOA             管理这个域名的七个重要参数
域名.           IN          MX              顺序数字,接收邮件的服务器的主机名字/IP
主机名.         IN          CNAME           主机别名

 

2、SOA:查询管理域名的服务器管理信息

 

如果有多台 DNS 服务器管理同一个域名,那么最好使用  Master/Slave  的方式来进行管理,既然要这样管理,那就需要声明被管理的  zone file  是如何进行传输的,此时就需要  SOA (Start  Of  Authority)的标志了。

SOA 会涉及到七个参数:

  1. Master  DNS  服务器主机名:这个区域主要是哪台  DNS  作为 Master  的意思。
  2. 管理员的 E-mail:发生问题可以随时练习这个管理员。要注意的是,由于  @  在数据库文件中是有特别意义的,例如 abuse@mail.ksu.tw  就会改写成  abuse.mail.ksu.tw。
  3. 序号(Serial):这个序号代表的是这个数据库文件的新旧,序号越大表示越新。当 Slave  要判断是否主动下载新的数据库时,就以序号是否比 Slave 上的还要新来判断,若是则下载,若不是则不下载。所以当你修改了数据库内容时,记得需要将这个数值放大才行。为了方便用户记忆,通常序号都会使用日期格式“YYYMMDDNU”来记忆。例如 2010080369  代表  2010年 08月03 当天的第  69  次更新的。不过,序号不可大于  2  的 32 次方,亦即必须小于  4 294 967 296  才行。
  4. 更新频率(Refresh):那么什么时候 Slave  会去向  Master  要求数据更新的判断?就是这个数值定义的。
  5. 失败重新尝试时间(Retry):如果由于某些因素倒置 Slave  无法对 Master  实现连接,那么在多长时间内,Slave  会尝试重新连接到 Master。
  6. 失效时间(Expire):如果一直尝试失败,持续连接到达这个设置值时限,那么 Slave  将不再继续尝试连接,并且尝试删除这份下载的  zone  file  信息。
  7. 缓存时间(TTL):这个数据库 zone  file  中,每笔  RR 记录都没有写道 TTL  缓存时间的话,那么就以这个 SOA  的设置值为主。

条件限制:

  1. Serial 不超过 2  的32  次方
  2. Refresh +  Retry  <  Expire
  3. Expire  >=  Retry  *  10
  4. Expire  >= 7 Days

 

3、反向解析文件记录的数据  RR

 

正向解析主机名的追踪方式:越右边出现的名称代表域越大。以www.baidu.com来说,.(root) >  .com  > .baidu 。

但是 IP 则不一样,以  172.25.254.1  为例,当然是 172  >  25  >  254  > 1,左边的域最大。与默认的  DNS  从有变往左边查询不一样,那怎么办?为了解决这个问题,所以反向解析的  Zone  就必须要 将 IP 反过来写,而在结尾时加上  .in-addr.arpa.  的结尾字样即可。

 

PTR  就是方向解析,即是查询 IP  所对应的主机名。PTR 后面接的自然就是主机名。

反解重要的地方就是:后面的主机名尽量使用完整的  FQDN,亦即加上小数点(.)。为什么呢?举 100.114.120.in-addr.arpa.  为例,如果你只是填写主机名,并没有填写域名,那么当别人追踪你的主机名时,你的主机名会变成  www.100.114.120.in-addr.arpa.  的怪模样。

 

4、主配置文件  /etc/named.conf  的设置

 

  • options:规范 DNS  服务器的权限(可否查询、forward 与否等)。
  • zone:设置出 Zone (domain  name)以及 zone  file  的所在(包含 master/slave/hint)
  • 其他:设置 DNS  本机管理接口及其相关的密钥文件(key  file)

 

                                   Zone  的设置值及其说明
设置值说明
type该 Zone  的类型,主要的类型有针对 .  的hint,以及自己手动修改数据库文件的 Master,也可自动更新数据库的 Slave
file就是 zone  file  的文件
反解 zone主要就是 in-addr.arpa

为何文件名都是 named  开头呢?这只是个习惯而已,你也可以根据自己的习惯来定义文件名。经过上面的说明,我们会知道,zone  file  文件名都是通过  named.conf  这个配置文件来规范的。

 

七、dns本地正向解析(通过域名,找到对应的ip地址)

 

正向解析数据库文件的设置

字符意义
一定从行首开始所有设置数据一定要从行首开始,前面不可有空格符。若有空格符,代表延续上一个 domain 的意思。非常重要
@这个符号代表  Zone 的意思。例如写在 named.centos.vbird 中,@代表  centos.vbird.,如果写在 named.192.168.100  文件中,则 @ 代表 100.168.192.in-addr.arpa.  的意思。
.

这个点(.)很重要,因为它代表一个完整主机名(FQDN)而不是仅有 hostname  而已。举例来说,在 named.centos.vbird 当中写 www.centos.vbird  则代表 FQDN 为www.centos.virb.@ ==> www.centos.vbird.centos.vbird.。因此当然要写成 www.centos.vbird. 才对。

;代表批注符号。似乎 #  也是批注,两个符号都能使用。

 

1、前期准备

将上一个实验的18行删掉(/etc/named.conf)

 

2、正向解析配置

 

服务端——172.25.254.1:

 

(1)编辑配置文件  /etc/named.rfc1912.zones,在25-30行增加如下内容(复制粘贴19-23行的内容,然后修改即可)

 

(2)编辑/var/named/xin.com.zone文件(复制/var/named下的named.localhost为xin.com.zone,然后在/var/named/xin.com.zone里面进行修改即可。需要注意的是:在复制时:必须加-p参数(表示复制权限)

(@表示要维护的域-----xin.com;SOA表示授权起始;尤其注意里面加.的地方,加.表示不补全维护的域如果不写点系统会自动补齐在配置域文件中新加的域名,所以要么只写“dns”,要么写“dns.xin.com.”)

 

(3)因为修改的是配置文件,所以要重启服务

systemctl  restart  named(如果重启失败,看/var/log/messages日志,查看配置文件的哪个地方有错误)

 

客户端——172.25.254.2:

 

(1)编辑 /etc/resolv.conf  文件

 

(2)测试

dig  www.xin.com                        询问www的ip信息

只能测试答案库xin.com.zone中有的内容,否则会出现如下的错误

 

如何实现域名转换的功能呢?

 

服务端——172.25.254.1:

 

(1)重新编辑/var/named/xin.com.zone

将要实现域名转换功能的域名修改如下

实现的是www.xin.com的域名转换

 

(2)因为修改的是配置文件,所以要重启服务

systemctl  restart  named

 

客户端——172.25.254.2:

 

测试:

dig  ww.xin.com

等待1~2s后,再次测试dig www.xin.com会发现两个ip位置会调换;

 

如何实现MX邮件服务器的配置?

 

基本命令及其含义

【1】、mail                                 查看root用户的邮件

【2】、mail  -u  student             查看student用户被退回的邮件

【3】、mailq                               查看当前用户(root用户)邮件队列中的内容

【4】、mail  xin@xin.com         给  xin.com  域中的  xin  这个用户发送邮件

 

MX邮件服务器的配置

 

(1)编辑/var/named/xin.com.zone文件,在文件的最后一行加入相应的内容

vim  /var/named/xin.com.zone

注意要加.

注意:其中10表示优先级,可以任意给一个数字。

 

(2)因为编辑的是配置文件,所以要重启服务

systemctl  restart  named

 

(3)发送邮件

mail  xin@xin.com

其中第一行:subject表示主题;第二行:表示邮件的内容;内容写完之后,按"."结束。

 

(4)MX邮件服务器是否配置成功

dig  -t  mx  xin.com

能够解析成功,表示MX邮件服务器已经设置成功

 

(5)查看邮件是否发送成功

172.25.254.103:25端口连接被拒绝,表明邮件没有发送成功,这是因为,该域(xin.com)不存在且该 ip 对应的用户不存在。

但是MX邮件服务器已经设置成功

 

八、dns本地反向解析(通过ip地址,找到对应的域名)

 

服务端——172.25.254.1:

 

1、编辑文件/etc/named.rfc1912.zones

vim /etc/named.rfc1912.zones

在文件的最后添加如下的内容(复制粘贴43-47行的内容,然后修改即可)

 

2、编辑文件/var/named/172.25.254.ptr(复制/opbvar/named下的named.loack为172.25.254.ptr,然后在/var/named/172.25.254.ptr里面进行修改即可。需要注意的是:在复制时:必须加-p参数(表示复制权限))

 

3、因为修改的是配置文件,所以要重启网络

systemctl  restart  named

 

客户端——172.25.254.2:

 

1、编辑 /etc/resolv.conf  文件

 

2、测试:

dig  -x  172.25.254.111

只能测试答案库xin.com.zone中有的内容,否则会出现如下的错误

 

九、dns本地双线解析

 

依不同接口给予不同的DNS主机名:view功能的应用
现在服务器有两个IP,一个是172.25.254.1/24,另一个是1.1.1.1/24。当我们从服务器解析一个域名时,得到的是对内的172.25.254.1,当客户机解析同一个域名是,仍然得到对内的172.25.254.1,而不是1.1.1.1,因此会为客户带来诸多不便,所以我们配置一个双线解析的DNS。当只要不是内网来源的客户端,得到的是对外网段的IP。
因此当我们解析域名时,不同来源的主机会得到不同的结果,所以,我们就需要创建两份域。 

 

1、前期准备

 

(1)给服务端(server虚拟机)配置两个ip:172.25.254.1/24 、1.1.1.1/24

 

(2)给客户端(desktop虚拟机)配置ip:1.1.1.2/24,并将该虚拟机的dns设为1.1.1.1

 

(3)给真机配置ip:172.25.254.7/24,并将该真机的dns设为172.25.254.1

 

2、服务端——172.25.254.1/1.1.1.1:

 

(1)编辑文件/etc/named.conf,在该文件中,加入下面的内容

vim  /etc/named.conf

将52-57行注释掉

添加下面的内容(man  5  named.conf,在其中查找match关键字)

添加两个view,一个是内网(localnet)是172.25.254.0/24网段,引导到.zones文件,另一个就是外网(internet)任何网段都可以访问,引导到.inter文件。

 

(2)编辑文件/etc/named.rfc1912.inter,在该文件中,加入下面的内容(复制/etc/named.rfc1912.zones为/etc/named.rfc1912.inter,然后在/etc/named.rfc1912.inter里面进行修改即可。需要注意的是:在复制时:必须加-p参数(表示复制权限))

将27行的xin.com.zone改为xin.com.inter,修改结果如下

 

(3)编辑文件/var/named/xin.com.inter,在该文件中,加入下面的内容(复制/var/named/xin.com.zone为/var/named/xin.com.inter,然后在/var/named/xin.com.inter里面进行修改即可。需要注意的是:在复制时:必须加-p参数(表示复制权限))

将其中所有的172.25.254改为1.1.1(利用vim的查找替换方法:   :%s/172.25.254/1.1.1/g)

 

(4)因为修改的是配置文件,所以要重启服务

systemctl  restart  named

 

3、客户端——172.25.254.2:

 

测试:

在desktop虚拟机上(外网),dig  music.xin.com,解析到1.1.1网段

在真机上(内网),dig  music.xin.com,解析到172.25.254网段

 

十、主从(同级)dns

 

主从服务器的架构:主服务器含有域名的数据文件(zone),这个配置文件就是设置正向解析或者反向解析的“数据库”,包含各种记录。所以他本身就具有提供查询INTERNET查询所需要的数据。

假设主DNS服务器down掉了,那么它负责解析的域,主机名,IP都会失效;即使主DNS服务器没有down掉,所有的dns服务,都由该主dns服务器提供,那么该dns服务器的压力会非常大。所以就有了从服务器存在的理由。

master(主dns服务器):172.25.254.1(server虚拟机)

slave(从dns服务器):172.25.254.2(desktop虚拟机)

 

1、主dns服务器配置——172.25.254.1

 

配置dns为本机的ip

 

2、从dns服务器配置——172.25.254.2

 

(1)安装dns服务软件(bind)

yum  install  bind  -y

 

(2)编辑/etc/named.conf文件

将第11行的ip改为any

将17行的localhost改为any

将32行的yes改为no

 

(3)编辑/etc/named.rfc1912.zones文件(在25-30行增加如下内容(复制粘贴19-23行的内容,然后修改即可))

重启服务(systemctl  restart  named),cd /var/named/slaves ,在slaves目录中出现从服务器区域数据文件。(该文件是自动生成的)

因为该文件的类型是data,所以看不了文件的内容

 

(4)配置dns为本机的ip

 

3、测试:

 

在主dns服务器:dig  music.xin.com

在从dns服务器:dig  music.xin.com

两台dns服务器看到的结果是一样的。

 

但是存在一个问题:当主dns服务器中的内容(/var/named/xin.com.zone)发生改变时,如何让从dns服务器也随之发生变化?

 

1、方法一:删除从dns服务器中的/var/named/slaves/xin.com.zone;然后重启服务,会生成已经更新的xin.com.zone文件

 

主dns服务器——172.25.254.1

 

(1)改变主dns服务器的内容(/var/named/xin.com.zone)

将第13行的172.25.254.102改为172.25.254.202

 

(2)因为修改的是配置文件,所以要重启服务

systemctl  restart  named

 

从dns服务器——172.25.254.2

 

删除从dns服务器中的/var/named/slaves/xin.com.zone;然后重启服务,会生成已经更新的xin.com.zone文件

 

测试:

 

在主dns服务器:dig  music.xin.com

在从dns服务器:dig  music.xin.com

可以看到从dns服务器,随着主dns服务器的改变而改变

 

2、方法二:

当主dns服务器内容发生改变时(vim  /var/named/xin.com.zone),同时修改/var/named/xin.com.zone文件中servial前面的值(该值是随便给的,最长为10位),并且编辑文件/etc/named.rfc1912.zones。

 

主dns服务器——172.25.254.1

 

(1)vim  /etc/named.rfc1921.zones

在29,30行添加如下内容

允许转移{从dns服务器ip}

并且通知{从dns服务器ip}

 

(2)改变主dns服务器的内容(/var/named/xin.com.zone)

将第14行的172.25.254.202改为172.25.154.222

将第3行的0改为1(最长为10位数),只有当这个号码更改时,主服务器才会通知从服务器更新。

 

(3)因为修改的是配置文件,所以要重启服务

systemctl  restart  named

 

测试:

 

在主dns服务器:dig  music.xin.com

在从dns服务器:dig  music.xin.com

可以看到从dns服务器,随着主dns服务器的改变而改变

需要注意的是:主dns和从dns的防火墙,都必须关闭。

 

十一、从dns服务器远程管理主dns服务器的dns记录(更新)

 

在进行实验之前,先备份/var/named/xin.com.zone文件到/mnt目录(为后续别的实验做准备)

 

主dns服务器——172.25.254.1

 

1、编辑 /etc/resolv.conf  文件

 

2、编辑文件/etc/named.rfc1912.zones,在xin.com域名的结构体设置允许更新主机的IP,并且重启服务。

将28行的none改为从dns服务器的IP

 

3、查看当前selinux的状态,

如果是enforcing,那么查看named服务的功能getsebool  -a  |  grep  named

如果named_write_master_zone,是off,设置SElinnux防火墙
setsebool -P named_write_master_zones on

 

4、设置目录权限
既然需要其他主机更改主服务器上的数据,所以就要设置/var/named/目录的权限。这个目录的所有组是named
chmod g+w /var/named,或者chmod 770 /var/named

 

从dns服务器——172.25.254.2

 

1、编辑 /etc/resolv.conf  文件

 

测试

 

如果主dns服务器不进行4的操作(设置目录权限),从dns服务器在测试时就会出现下面的错误

下面是加了权限之后的效果图,没有出现报错信息,更新成功

此时,在从dns服务器,dig www.xin.com,会出现NXDOMAIN

此时,在主dns服务器,dig www.xin.com,会出现NXDOMAIN


并且在主dns服务器,重启服务之后,就会看到更新之后的/var/xin.com.zone文件

重启服务之前,/var/named/xin.com.zone文件没有更新(但是更新已经生效,只是文件还没有得到修改)

更新成功之后,会在主dns服务器的/var/named目录中生成xin.com.zone.jnl文件

重启服务之后,/var/named/xin.com.zone文件已经更新

 

十二、基于key的加密更新

 

上述的从dns服务器远程管理主dns服务器的dns记录(更新),存在一个问题,被授权的服务器可以随意更改数据
因此,我们可以配置一个加密文件,只有被授权的服务器拥有密钥时,才能允许修改主服务器数据。
编辑/etc/named.rfc1912.zones文件,在xin.com域名设置
允许密钥连接。

 

主dns服务器——172.25.254.1

 

1、前期准备

 

在做这个实验之前,执行以下操作,再开始新的实验:

(1)

rm  -rf   /var/named/xin.com.zone

rm  -rf  /var/named/xin.com.zone.jnl

cp  -p   /mnt/xin.com.zone  /var/named

 

(2)编辑 /etc/resolv.conf  文件

 

2、配置过程

 

(1)生成密钥,名字叫xinkey(名字任意)

dnssec-keygen -a [算法] -b [密码长度] -n [类型] 名称
选项与参数:
-a:后面接的[算法]为演算方式的意思,主要有 RSAMD5、RSA、DSA、DH 与 HMAC-MD5 等。建议你可以使用常见的 HMAC-MD5 来演算密码
-b:密码长度为多少?通常给予 512 位的 HMAC-MD5
-n:后面接的则是客户端能够更新的类型,主要有下器面两种(建议给 HOST 即可)
    ZONE:客户端可以更新任何标志及整个 ZONE
    HOST:客户端仅可以针对他的主机名来更新

cd  /mnt

dnssec-keygen  -a  HMAC-MD5  -b  128  -n  HOST  xinkey       (-a:指定加密方式---HMAC-MD5为对称加密;-b:指定密钥的长度;通过命令"dnssec-keygen  --help"查看帮助,或者"man  dnssec-keygen"查看帮助)

因为HMAC-MD5是对称加密,所以公钥和私钥内容是一样的

 

(2)生成.key文件(可以复制模板文件/etc/rndc.key,加参数-p)
通过cat 刚才生成的密钥,得到密码然后设置.key文件

密码一定要一致,名字是刚起的xinkey

 

(3)给从 dns 服务器发送密钥


 

(4)编辑配置文件/etc/named.rfc1912.zones

将该文件中28行的从dns服务器的IP改为,改成要生成的密钥

 

(5)编辑/etc/named.conf文件

在第44行编辑include "/etc/xin.key"(/etc/xin.key文件是后面要编辑的加密文件)

 

(6)因为修改的是配置文件,所以要重启网络

 

从dns服务器——172.25.254.2

 

(1)编辑 /etc/resolv.conf  文件

 

测试:

 

在从 DNS 服务器来更新主 DNS 服务器的数据

通过私钥来更新主服务器数据:nsupdate -k *.private

或者公钥来更新主服务器数据:nsupdate -k *.key

 

在从dns服务器:dig  test.xin.com

在主dns服务器:dig  test.xin.com

并且在主dns服务器,重启服务之后,就会看到更新之后的/var/xin.com.zone文件

重启服务之前,/var/named/xin.com.zone文件没有更新(但是更新已经生效,只是文件还没有得到修改)

更新成功之后,会在主dns服务器的/var/named目录中生成xin.com.zone.jnl文件

重启服务之后,/var/named/xin.com.zone文件已经更新

 

十三、动态更新dns服务(动态域名解析,又名,花生壳,又名dhcp+dns,又名ddns)

 

ddns是动态域名服务的缩写,ddns将用户的动态IP地址解析到一个固定的域名服务上,用户每次连接网络的时候,客户端程序就会通过信息传递把该主机的动态IP地址,传送给位于服务器商主机上的服务器程序,服务器负责提供dns服务,并实现动态域名解析。

 

1、前期准备

在做这个实验之前,执行以下操作,再开始新的实验:

 

服务端(server虚拟机):

(1)

rm  -rf   /var/named/xin.com.zone

rm  -rf  /var/named/xin.com.zone.jn1

cp  -p   /mnt/xin.com.zone  /var/named

 

(2)取消之前配置的双线解析的内容,恢复为单线解析的内容

 

(3)编辑 /etc/resolv.conf  文件

 

2、动态域名解析配置

 

(1)在服务端:配置dns服务

 

完成十二(基于key的加密更新的步骤)

 

(2)在服务端:配置dhcp服务

 

安装dhcpd服务:yum install  dhcp  -y

 

并配置好dhcpd服务的配置文件:cp  /usr/share/doc/dhcp*/dhcpd.conf.example  /etc/dhcp/dhcpd.conf

vim /etc/dhcp/dhcpd.conf

 

【1】、将第7行的example.org改为xin.com,修改如下

 

【2】、第8行改为本机的ip地址,修改如下

 

【3】、删除文件里的27和28两行

 

【4】、将30-32行进行修改,修改如下

 

【5】、将33行之后的内容删掉

 

【6】、将文件的第14行改为下面的内容(通过man  5  dhcpd.conf查看帮助文档:通过vim的查找命令(/style),来查找)

 

【7】、在文件的末尾加入下面的内容(通过man  5  dhcpd.conf查看帮助文档:通过vim的查找命令(/dns),来查找)

在35-38行添加可更新的dns的key

 

【8】、在40-43行添加要更新的dns的域的信息

其中41行也可以写成172.25.254.1,但是没有必要,因为是内部网络的dhcp与dns解析的传输,所以回环接口即可。

 

【9】、重启dhcpd服务

 

【10】、关闭防火墙

 

(3)在客户端:

修改主机名,并测试dhcp是否已经搭建成功

 

修改主机名(以xin.com结尾)

修改网络配置文件,将获取IP的方式改为dhcp,并重启网络

在这一步的时候,需要拔掉网线,再重启网络,获得IP

测试:

获取到的IP地址,在设定的范围内,表明,dhcp服务已经搭建好。

 

3、测试:

 

在客户端(desktop虚拟机)

dig  client.xin.com

在服务端(server虚拟机)

dig  client.xin.com

 

修改dhcp给定的IP段为172.25.254.106   172.25.254.109,并重启服务

并在客户端(desktop虚拟机),重启网络,使得其获得新的IP地址

 

再次进行测试:

在客户端(desktop虚拟机)

dig  game.xin.com

在服务端(server虚拟机)

dig  game.xin.com

上面的内容配置的思路是:当某一主机在我这获取 ip 后,我的主机的 dhcp  会告诉 dns 分配给某一主机一个 ip 和 ip 号,所以 dns 就知道了该主机域名对应的  ip 是什么,当本机或其他主机询问某一主机域名对应的 ip 时,本机就会告诉他们某一主机域名对应的 ip 地址,当然前提是询问者必须要有钥匙。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值