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

上网导航 2023-09-21 299 0条评论
摘要: 什么是dns dns存在的意义 dns解析的过程及原理 dns主从关系的部署什么是dns Domain Name Server的缩写,就是域名服务器的意思...

什么是dns

dns存在的意义

dns解析的过程及原理

dns主从关系的部署

什么是dns

Domain Name Server的缩写,就是域名服务器的意思,域名包括域名服务器和域名解析器,域名是什么呢?我们平时在浏览器中输入的baidu.com就是域名,而www是主机名,叫做完整主机名(FQDN)。dns是一个分布式,分层式的主机名管理架构,也可以说是一个数据库,这个数据库管理的就是各个域名对应的IP,在我们访问域名的时候就能直接访问到对应的IP。

dns存在的意义

为什么要有dns呢,因为我们知道,ip地址很难记,如果你想访问百度,或者淘宝,让你输入一大串ip地址,这样就显得很难受,并且我们也记不住那么多的ip,所以随之域名这个概念就有了,让我们就不需要去记ip了,只需要输入域名就可以访问互联网了。

dns解析的过程及原理

首先来说一下域名服务器,其实在我们平时输入的域名最后还有一个“.”,就是这样的baidu.com. 这最后一个点就是dns的根服务器,世界上一共有13台根服务器,一个为主根服务器在美国。其余12个均为辅根服务器,其中9个在美国,欧洲2个,位于英国和瑞典,亚洲1个位于日本。一般我们都是不写的,再说,域名分等级,有顶级域名,一级域名,二级域名等,可以在百科里了解更清楚,域名级别

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

这里就是这种结构。

接下来说一下域名查询的类型,递归查询和迭代查询(或者叫解析)

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

上面(b)这种查询就是递归查询,首先,比如我们要去访问

(1)本地客户机先向本地服务器进行递归查询

(2)本地域名服务器先在自己的hosts文件中查看有没有,如果没有,则会像根服务器进行递归查询,就是在问我这没有的ip,你那有吗?然后根服务器回答我这没有的ip,但是我知道二级域名服务器那可能有,并且在同时去通知一级域名服务器

(3)同时一级域名服务器及二级域名服务器都做跟服务器一样的操作,直到到达权威dns服务器,权威服务器把IP返回给本地域名服务器,本地域名服务器把ip提供给客户机,同时在本地缓存一份,这样就实现了解析

这种解析过程可以看到这种解析过程会导致根服务器压力过大,所以,迭代就很好的减少了根服务器的压力,跟上面的(a)是一样的

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

就像这种就是迭代,首先客户机到本地域名服务器的递归查询,然后本地域名服务器会去询问根服务器,根服务器会告诉本地服务器.com的ip,然后本地域名服务器会再去询问顶级域名服务器,如此循环往下一级一级去询问,最后问到了权威dns‘服务器,得到了的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指的就是,指向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主从关系的服务器搭建完成。

文章版权及转载声明:

作者:上网导航本文地址:https://www.90xe.com/post/4622.html发布于 2023-09-21
文章转载或复制请以超链接形式并注明出处技术导航

分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏