dns的递归和迭代查询及linux下dns主从关系的部署(推荐)

什么是dns
dns存在的意义
dns解析的过程及原理
dns主从关系的部署


什么是dns
Domain Name Server的缩写,就是域名服务器的意思,域名包括域名服务器和域名解析器,域名是什么呢?我们平时在浏览器中输入的baidu.com就是域名,而www是主机名,www.baidu.com叫做完整主机名(FQDN)。dns是一个分布式,分层式的主机名管理架构,也可以说是一个数据库,这个数据库管理的就是各个域名对应的IP,在我们访问域名的时候就能直接访问到对应的IP。
dns存在的意义
为什么要有dns呢,因为我们知道,ip地址很难记,如果你想访问百度,或者淘宝,让你输入一大串ip地址,这样就显得很难受,并且我们也记不住那么多的ip,所以随之域名这个概念就有了,让我们就不需要去记ip了,只需要输入域名就可以访问互联网了。
dns解析的过程及原理
首先来说一下域名服务器,其实在我们平时输入的域名最后还有一个“.”,就是这样的baidu.com. 这最后一个点就是dns的根服务器,世界上一共有13台根服务器,一个为主根服务器在美国。其余12个均为辅根服务器,其中9个在美国,欧洲2个,位于英国和瑞典,亚洲1个位于日本。一般我们都是不写的,再说,域名分等级,有顶级域名,一级域名,二级域名等,可以在百科里了解更清楚,域名级别
这里写图片描述
这里就是这种结构。
接下来说一下域名查询的类型,递归查询和迭代查询(或者叫解析)
这里写图片描述

上面(b)这种查询就是递归查询,首先,比如我们要去访问www.163.com
(1)本地客户机先向本地服务器进行递归查询
(2)本地域名服务器先在自己的hosts文件中查看有没有,如果没有,则会像根服务器进行递归查询,就是在问我这没有www.163.com的ip,你那有吗?然后根服务器回答我这没有www.163.com的ip,但是我知道二级域名服务器那可能有,并且在同时去通知一级域名服务器
(3)同时一级域名服务器及二级域名服务器都做跟服务器一样的操作,直到到达权威dns服务器,权威服务器把IP返回给本地域名服务器,本地域名服务器把ip提供给客户机,同时在本地缓存一份,这样就实现了解析

这种解析过程可以看到这种解析过程会导致根服务器压力过大,所以,迭代就很好的减少了根服务器的压力,跟上面的(a)是一样的
这里写图片描述
就像这种就是迭代,首先客户机到本地域名服务器的递归查询,然后本地域名服务器会去询问根服务器,根服务器会告诉本地服务器.com的ip,然后本地域名服务器会再去询问顶级域名服务器,如此循环往下一级一级去询问,最后问到了权威dns‘服务器,得到了www.163.com的IP,返回给客户机。

我们平时用的联通宽带什么的,在访问某个域名的时候,其实就是一个这样的递归和迭代的过程,而主从关系又是怎么回事呢??
正如名字所描述的一样,“主”和“从”的关系,在正常的环境中是,dns服务器并不是不会坏的,如果dns服务器坏了会怎么样??那我们将面临“断网”,所以,我们需要“备份”,这里所说的备份也就是所谓的主从关系,前面说到的那十三台根服务器就是主从关系。下面我们通过在linux环境下搭建一个主从关系的dns服务器来了解这个东西。
在这里需要两台机器,在这里我就说是a机器和b机器了
首先在a机器上搭建主dns服务器。
安装bind

yum -y install bind

编辑配置文件

[root@localhost张大帅哥 ~]# vim /etc/named.conf 

options {
        listen-on port 53 { any; };
        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     { any; };

配置文件中只需要修改两处,就是那两个any,然后编辑zone文件,也就是配置文件末尾指到的那个 include “/etc/named.rfc1912.zones”

[root@localhost张大帅哥 ~]# vim /etc/named.rfc1912.zones

在文件中我们复制其中的一个zone,并修改

zone "zhang.com" IN {
        type master;
        file "zhang.com.zone";
};

我的是这样写的,最后一条我们不要,这里我们起的一个域名就是zhang.com,(本人姓张^_^),指定的域名的数据文件是zhang .com.zone,接下来就去配置数据文件了。

[root@localhost张大帅哥 ~]# cd /var/named/
[root@localhost张大帅哥 named]# cp -p named.localhost zhang.com.zone 

复制一份模板文件然后修改,注意复制的时候一定要加-p选项,保留原文件的权限。接下来修改

[root@localhost张大帅哥 named]# vim zhang.com.zone

$TTL 1D
@       IN SOA  @ mail.zhang.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
zhang.com.      NS      ns1.zhang.com.
ns1     A       192.168.188.7
www     A       192.168.188.6

我的配置文件这样写的,主要就是下面的指向
NS 是nameserver的缩写,也就是dns服务器的缩写,后面跟的是dns服务器
A 是Address的缩写,后面记录的是ipv4地址
这几条记录的意思就是,将域名zhang.com域名指向ns1.zhang.com,ns1代表的就是ns1.zhang.com,指向192.168.188.7的ip,而www指的就是www.zhang.com,指向192.168.188.6(本机是192.168.188.7)


之后来做从dns
在b机器上
前两步跟上面一样

安装bind

yum -y install bind

编辑配置文件

[root@localhost张大帅哥 ~]# vim /etc/named.conf 

options {
        listen-on port 53 { any; };
        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     { any; };

然后来编辑 include “/etc/named.rfc1912.zones”

[root@localhost张大帅哥 ~]# vim /etc/named.rfc1912.zones
    zone "zhang.com" IN {
        type slave;
        masters { 192.168.188.7; };
        file "slaves/zhang.com.ZONE";
    };

跟上面不同的是 类型为slave(仆人),指定自己的master(主人),在这里要说的是,其实这种主从关系就是从主哪里下载数据库文件,也就是我们在主上编辑的/var/named下的文件,这样实现备份。file就是指定下载的文件放在那个目录下取名什么。

最后我们重启服务
a上

[root@localhost张大帅哥 named]# systemctl restart named

然后去b上,进入/var/named/slave目录下,本来什么东西都没有,这时候我们启动b的服务

[root@localhost ~]# cd /var/named/slaves/

[root@localhost slaves]# service restart named

(我用的a是centos7,b是centos6,所以重启服务的命令不相同,小伙伴在操作时要注意)
然后我们再看slave下就有文件了。这个文件便是a上的数据库文件。

[root@localhost slaves]# ls
zhang.com.ZONE
[root@localhost slaves]# cat zhang.com.ZONE
$TTL 1D
@   IN SOA  @ mail.zhang.com. (
                    0   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
zhang.com.  NS  ns1.zhang.com.
ns1 A   192.168.188.7
www A   192.168.188.6

跟主dns的一样,至此,dns主从关系的服务器搭建完成。

猜你喜欢

转载自blog.csdn.net/professorman/article/details/82685860
今日推荐