在Linux搭建DNS服务器(CentOS 7)

  • A+
所属分类:linux技术
摘要

例如客户端解析 www.126.com 客户端查询自己的缓存(hosts中的记录),如果没有将查询发送/etc/resolv.conf中的DNS服务器


DNS解析流程

例如客户端解析 www.126.com

  1. 客户端查询自己的缓存(hosts中的记录),如果没有将查询发送/etc/resolv.conf中的DNS服务器

  2. 如果本地DNS服务器对于请求的信息具有权威性,会将(权威答案)发送到客户端。

  3. 否则,如果DNS服务器在其缓存中有请求信息,则将(非权威答案)发送到客户端

  4. 如果缓存中没有该查询信息,DNS服务器将搜索权威DNS服务器以查找信息:  从根区域开始,按照DNS层次结构向下搜索,直至对于信息具有权威的名称服务器,为客户端获答案 DNS服务器将信息传递给客户端 ,并在自己的缓存中保留一份,以备以后查找。

域名服务DNS

  1. 作用: 实现名字解析(例如将主机名解析为IP)
  2. 命名空间name space: 用于给互联网上的主机命名的一种机制
  3. DNS数据库Datebase: 层次化的,分布式的数据库
  4. 权威名称服务器: 存储并提供某个区域的实际数据,例如126.com的DNS服务器,记录了126.com域中所有主机的记录如:www.126.com. x.x.x.xftp.126.com. y.y.y.y
  5. 权威名称服务器类型包括:Master: 主DNS服务器,包含原始区域的数据Slave: 备份DNS服务器,通过(区域传输)从Master服务器获得区域数据的副本非权威名称服务器:不存储某个区域的实际数据,仅缓存DNS服务器,虽然可以提供查询,但查询的内容不具有权威性

一、安装软件

[root@localhost ~]# yum -y install bind                    //安装DNS 服务

[root@localhost ~]# yum -y install bind-utils                    //安装DNS 检测工具

 

二、启动服务

[root@localhost ~]#systemctl start named

 

三、编辑主配置文件

备份/etc/named.conf

[root@localhost ~]# cp -a /etc/named.conf /etc/named.conf.bak

[root@localhost ~]# vim /etc/named.conf

在Linux搭建DNS服务器(CentOS 7)

在Linux搭建DNS服务器(CentOS 7)

#directory 这行表示的是区域配置文件的位置在/var/named/下

#根据自己的实际需求去更改这个文件里面的东西。

#在主配置文件后边添加一条zone,格式语法如下。

 在Linux搭建DNS服务器(CentOS 7)

 [root@localhost ~]# named-checkconf                               //用来检查刚才的配置文件语法是否有误

  

 

四、配置(正向/反向)区域配置文件(我这里只做了正向解析)

  • 正向解析:根据域名查找对应的ip地址
  • 反向解析:根据ip地址查找对应的域名

 

[root@localhost ~]# cp -p /var/named/named.localhost /var/named/daemon.com.zone   

//在/var/named/下创建一个刚才file中的区域配置文件的同名文件

//这里是复制一个格式模板出来,-a代表保留原来数据,属性等。如果知道格式的话当然也可以自己创建一个新的文件咯

 

[root@localhost ~]# vim /var/named/daemon.com.zone

 在Linux搭建DNS服务器(CentOS 7)

  • @ 表示当前域名
  • SOA 起始授权记录
  • 20180804 是序列号(10位以内均可),主从DNS用到的,每次更新一次主配置文件序列号,从服务器检查自己的序列号,如果序列号不同,则会更新配置文件
  • 1H 更新时间(多久进行一次从主从序列号检查,默认3个小时)
  • 15M 如果更新失败,15分钟再次尝试
  • 1W 如果一直失败,一周之后放弃
  • 1D 缓存时间
  • ;NS记录(指定管理某个域的服务器)
  • A记录(正向解析)把域名解析为ip

 

//如果这时候重启服务的话,可能会报错,可能是区域配置文件写错或者 /ect/resolv.conf未添加要指向的DNS服务器的ip地址

在Linux搭建DNS服务器(CentOS 7)

 

[root@localhost ~]# vim /etc/resolv.conf

 在Linux搭建DNS服务器(CentOS 7)

//为了测试更明了,我这里是把原来的给注释掉,自己添加了一条本地的DNS服务器ip地址

[root@localhost ~]# systemctl restart named                      //重启下服务

 

五、开始测试

[root@localhost ~]# ping ftp.daemon.com

PING ftp.daemon.com (192.168.14.186) 56(84) bytes of data.

64 bytes from 192.168.14.186 (192.168.14.186): icmp_seq=1 ttl=64 time=0.556 ms

64 bytes from 192.168.14.186 (192.168.14.186): icmp_seq=2 ttl=64 time=0.313 ms

//可以看到ping ftp.daemon.com 会解析到192.168.14.186,也就是刚才配置的那个IP地址

 

[root@localhost ~]# ping www.daemon.com

PING www.daemon.com (192.168.14.185) 56(84) bytes of data.

64 bytes from localhost.localdomain (192.168.14.185): icmp_seq=1 ttl=64 time=0.021 ms

64 bytes from localhost.localdomain (192.168.14.185): icmp_seq=2 ttl=64 time=0.043 ms