首先我们需要知道一些原理:

dns服务器有主和从,主服务器发生变化,从服务器会自动同步

上网时我们输入的网址,比如说www.EXAMLE.com,其写全应该是www.EXAMPLE.com.com后有个.,代表着根域,dns结构中一个网址结构是

.

根域

com

顶级域/一级域

EXAMPLE

 二级域

www

主机名

如果是www.EXAMLE.com.cn结构,一级域为cn,二级域为com,三级域是EXAMPLE,主机名是www

当用户访问一个之前从未访问的网站时,会去查找本地dns的缓存有没有该域名对应的ip,如果没有,将会从根域查询起。

比如说访问www.baidu.com,其实是访问www.baidu.com.

(1)查询至根域:你知不知道我这个网址的ip呀,根域回复“不知道,不过我知道你的com域在哪,它是我的子域,你去找它吧”(注:这种dns无法将结果交给用户,不过可以将访问推荐到下级dns服务器的查询,称作迭代查询)

(2)查询至com域:你知不知道我这个网址的ip呀,com域回复“不知道,但我知道你的baidu二级域在哪,它是我的子域,你去找它吧”(注:迭代查询)

(3)查询至二级域:你知不知道我这个网址的ip呀,二级域回复“知道呀,来我把它告诉你”(注:这种dns将最终结果交给用户,称作递归查询)

之后dns解析的记录会存放到本地dns服务器,这个本地dns服务器我们可以理解为小区的网络运营商dns服务器,再有其它主机访问该网址,就可以直接去访问该ip

知道这个概念,我们便画逻辑图,构建dns结构

1、画出逻辑结构图

本人实验时候主机分配计划和ip

centos7 test:客户机,ip 192.168.239.70

centos7-1:本地dns主服务器,ip 192.168.239.71

centos7-3:二级域主服务器,ip 192.168.239.73

centos6 test:二级域从服务器,ip 192.168.239.60

centos6-1:一级域服务器,ip 192.168.239.61

centos6-2:根域服务器,ip 192.168.239.62

centos:目标网站,ip 192.168.239.200

实际实验中将以.tech作为一级域名测试

实验中可能会用到的检查指令:

主配置文件语法检查:named-checkconf

解析库文件语法检查:named-checkzone "chenux.tech" /var/named/chenux.tech.zone

rndc status|reload ;service named reload

2、给计划作为dns服务器的主机安装binddns的服务名为named.service

3、目标网址安装httpd服务,建立/var/www/html/index.html,写入内容

4、为保险起见,我们一步一步按照图从下向上实现,首先从二级域开始配置

翻页至最下方,可以看到一路径

编辑该文件,内容可以按照下面的格式写入

进入/var/named目录,编辑chenux.tech.zone主区域

建立好后,需要注意一点

重启服务,systemctl restart named,测试结果

5、配置二级域从服务器

配置和主服务器稍有不同,下图标有两处不同

第一处:/etc/named.conf

第二处:/etc/named.rfc1912.zones

更改完后重启服务,/var/named/slaves目录下会自动生成*.zone

测试

6、搭建一级域dns

/etc/named.conf文件不变

/etc/named.rfc1912.zone

主区域文件改名为/var/named/tech.zone

重启后测试

此时如果成功,将二级域DNS主服务器网络断开,清除一级域dns服务器缓存,rndc flush,测试机dig www.chenux.tech @192.168.239.60(二级域DNS从服务器)依旧正常

7、搭建根域dns服务器

vim /etc/named.conf,最下方有一个zone ".",将它们全部注释

vim /etc/named.rfc1912.zones

vim /var/named/root.zone

重启服务,测试正常

8、建立本地dns服务器

vim /etc/named.conf 两个选项注释,并且将这两项改为no,否则无法进行dns转发

vim /var/named/named.ca

重启服务

9、更改测试机192.168.239.70的网卡信息,重启服务后查看dns已经变化

此时dig网址www.chenux.tech便已经成功

curl www.chenunx.tech的结果

总结:dns修改/etc/named.conf(注释两条,有从服务器allow-trasfer {允许连接的主机ip})

/etc/named.rft1912.zonezone "*.com" {

    type master/slave;

    file "*.com.zone";或者file "slaves/*.com.zone"};

新建/var/named/*.zone(从服务器会自动生成)

$TTL 86400

@ IN SOA dnsserver admin (版本 1D 1H 1W 3H )

NS   dnsserver

NS  dnsserver2    子域  NS  dnsserver2

dnsserver   A 本机ip

dnsserver2 A 子域ip