DNS(Domain Name System):域名解析系统

DNS port:53   protocol:tcp
在早期,没有DNS服务器提供解析域名时,可以通过hosts文件来解析域名,hosts需手动配置,及其麻烦,文件 非常臃肿。

在Linux中hosts文件位置 :/etc/hosts

DNS工作原理(访问网站的流程)

Server      Client
   客户端向服务端请求解析服务
1. client先查询本地hosts文件,如果本地hosts有目标域名、IP,直接去访问。反之,
2. 将请求交给指定的DNS服务器请求解析,DNS服务器查询本地解析库,查询到对应的IP和域名后,直接返回给客户端,客户端在去访问。

正向解析:将域名解析为IP地址 (可以通过域名访问服务器【web】)

反向解析:将IP地址解析为域名(可以通过IP地址访问服务器【web】)

nslookup:Linux中的解析工具,可以得到域名和IP地址。


FQDN=www.baidu.com?

一级域名又称为顶级域:.com  .edu  .org  .mil  .net  .top  .gov

.com:表示商业机构     .edu:教育机构   .org:非营利组织
.mil:军方     .net:网络服务机构    .gov:政府机构    .top:高端,顶级,事业突破。国际通用域名
.:这个点代表根服务. 

二级域名:baidu.com       *.net       *.gov .....    
    注:以.com结尾的域名都会去.com服务器查询,.net结尾的会去.net服务器查询,一 一对应。。。。其它的也相同.
    这样可以提高访问速度
国家域:.cn、.hk、.tw、.us、.jp、.ir、.uk 

反向域:.in-addr.arpa

www:这代表主机名。

综上介绍得出 www.baidu.com 叫做 FQDN(由主机名【www】和域名组成【baidu.com】).

DNS查询方式

举例:以客户端向163.com请求解析DNS为例

创建hostpath类型的pv及pvc_网络

递归查询:产生在网络客户端和本地DNS服务器:A——>B   B——>A ,网络客户端向本地DNS发起解析请求,在本地库查询到后,直接返回给网络客户端。

迭代查询:产生在根服务器间的查询  A——>B   B——>C   C——>B   B——>D    D——>B   B——>E   E——>B   B——>A ,网络客户端向本地DNS
发起解析请求,本地DNS查询后没有找到匹配目标A——>B,将请求转发到.根服务器 B——>C ,根服务器查询本地解析库,没有匹配到目标,但帮本地DNS指路,
告诉它往哪个方向去寻找 C——>B,本地DNS按照提示的路去向.com域名服务器请求解析B——>D,.com域名服务器也没有查询到,又将路指向163.com域名服务
器D——>B,本地DNS服务器又向163.com发起解析请求B——>E,163.com域名服务器在本地解析库查询到结果,将结果返回到本地DNS服务器E——>B,
最后又将结果返回到网络客户端B——>A。

DNS的分类:

主DNS服务器:就是一台存储着原始资料的DNS服务器。

从DNS服务器:使用自动更新方式从主DNS服务器同步数据的DNS服务器。也成辅助DNS服务器。

缓存服务器:不负责本地解析,采用递归方式转发客户机查询请求,并返回结果给客户机的DNS服务器。同时缓存查询回来的结果,也叫递归服务器。

转发器:这台DNS发现非本机负责的查询请求时,不再向根域发起请求,而是直接转发给指定的一台或者多台服务器。自身并不缓存查询结果。

搭建主从DNS步骤

要求:B同步到A的数据

主DNS(A)  备(从也称为备)DNS(B)
A有什么数据,B就会同步A的数据,当A挂机后,B会成为主DNS。(B没有权限,只会同步A,所以只能在A上配置指令,因为B只会同步!)

主DNS配置
1、安装DNS服务(yum源为本地挂载)
    yum -y install bind (这是DNS的主服务)
    yum -y install bind-utils (DNS工具,如 nslookup)
2、修改配置文件/etc/named.conf
    vi /etc/named.conf 
主DNS配置文件内容如下:
options {
    listen-on port 53 { 192.168.10.10; };   //主服务IP地址
    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     { 192.168.10.0/24; };       //允许访问DNS服务器的网段
    recursion no;   //yes代表当前服务器为缓存服务器(权威服务器),no代表当前为主服务器(非权威)
    dnssec-enable yes;
    dnssec-validation yes;
    bindkeys-file "/etc/named.iscdlv.key";
    managed-keys-directory "/var/named/dynamic";
    pid-file "/run/named/named.pid";
    session-keyfile "/run/named/session.key";
};
zone "yadong.com" IN {  //正向解析
    type master;    //master、slave、hide
    file "yadong.front";    //指定区域数据文件
    allow-transfer { 192.168.10.11; };  //允许同步的从服务器地址
};
zone "10.168.192.in-addr.arpa" IN { //反向解析
    type master;
    file "yadong.verso";    //指定区域数据文件
    allow-transfer { 192.168.10.11; };
};

编辑 区域数据文件/var/named/ (对应主配置文件设置的路径)

创建对应的 区域数据文件:touch yadong.front yadong.verso

编辑正向解析库:vi /var/named/yadong.front

$TTL 1D
@       IN      SOA     yadong.com.     admin.yadong.com. (
                    0   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
        IN      NS      ns1.yadong.com.
www     IN      A       192.168.10.2
mail    IN      A       192.168.10.3
ns1     IN      A       192.168.10.4
ftp     IN      cname   www

编辑反向解析库:vi /var/named/yadong.verso

$TTL 1D
@   IN      SOA     yadong.com.     admin.yadong.com. (
                        0   ; serial
                        1D  ; refresh
                        1H  ; retry
                        1W  ; expire
                        3H )    ; minimum
    IN      NS      ns1.yadong.com.
2   IN      PTR     www.yadong.com.
3   IN      PTR     mail.yadong.com.
4   IN      PTR     ns1.yadong.com.

3、启动服务
systemctl start  named

主DNS搭建完毕

从DNS配置
1、安装DNS服务(yum源为本地挂载)
    yum -y install bind (这是DNS的主服务)
    yum -y install bind-utils (DNS工具,如 nslookup)
2、修改配置文件/etc/named.conf
    vi /etc/named.conf 

从DNS配置文件内容如下:
options {
    listen-on port 53 { 192.168.10.11; };
    directory   "/var/named/slaves";
    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     { 192.168.10.0/24; };
    recursion no;
    dnssec-enable yes;
    dnssec-validation yes;
    bindkeys-file "/etc/named.iscdlv.key";
    managed-keys-directory "/var/named/dynamic";
    pid-file "/run/named/named.pid";
    session-keyfile "/run/named/session.key";
};
zone "yadong.com" IN {
    type slave;
    file "yadong.front";
    masters { 192.168.10.10; };
};
zone "10.168.192.in-addr.arpa" IN  {
    type slave;
    file "yadong.verso";
    masters { 192.168.10.10; };
};
3、启动服务(等待同步)
systemctl   start  named

从DNS搭建完毕

4、验证是否同步成功:ls /var/named/slaves
    yadong.front  yadong.verso

5、测试(测试前需要指定解析的DNS服务器echo "nameserver 192.168.10.10" >> /etc/resolv.conf)
正向解析
[root@localhost /]# nslookup www.yadong.com
Server:     192.168.10.11
Address:    192.168.10.11#53

Name:   www.yadong.com
Address: 192.168.10.2
反向解析
root@localhost /]# nslookup 192.168.10.2
Server:     192.168.10.11
Address:    192.168.10.11#53

2.10.168.192.in-addr.arpa   name = www.yadong.com.

至此,主从DNS搭建完成!


搭建缓存master1 + master2

要求:只指定一台DNS服务器,实现解析两台DNS服务器上解析库的内容

master1
1、安装DNS服务(yum源为本地挂载)
    yum -y install bind (这是DNS的主服务)
    yum -y install bind-utils (DNS工具,如 nslookup)
2、修改配置文件/etc/named.conf
    vi /etc/named.conf 

        master1配置如下:

        options {
            listen-on port 53 { 192.168.10.10; };
            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     { 192.168.10.0/24; };
            forwarders  { 192.168.10.11; };
            recursion yes;
            dnssec-enable yes;
            dnssec-validation yes;
            bindkeys-file "/etc/named.iscdlv.key";
            managed-keys-directory "/var/named/dynamic";
            pid-file "/run/named/named.pid";
            session-keyfile "/run/named/session.key";
    };
    zone "yadong.com" IN {
            type master;
            file "yadong.front";
    };
    zone "10.168.192.in-addr.arpa" IN {
            type master;
            file "yadong.verso";
    };

编辑 区域数据文件/var/named/ (对应主配置文件设置的路径)

创建对应的 区域数据文件:touch yadong.front yadong.verso

编辑正向解析库:vi /var/named/yadong.front

$TTL 1D
@       IN      SOA     yadong.com.     admin.yadong.com. (
                    0   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
        IN      NS      ns1.yadong.com.
www     IN      A       192.168.10.2
mail    IN      A       192.168.10.3
ns1     IN      A       192.168.10.4
ftp     IN      cname   www

编辑反向解析库:vi /var/named/yadong.verso

$TTL 1D
@   IN      SOA     yadong.com.     admin.yadong.com. (
                        0   ; serial
                        1D  ; refresh
                        1H  ; retry
                        1W  ; expire
                        3H )    ; minimum
    IN      NS      ns1.yadong.com.
2   IN      PTR     www.yadong.com.
3   IN      PTR     mail.yadong.com.
4   IN      PTR     ns1.yadong.com.

3、启动服务
systemctl start  named  

master1搭建完毕

master2
1、安装DNS服务(yum源为本地挂载)
    yum -y install bind (这是DNS的主服务)
    yum -y install bind-utils (DNS工具,如 nslookup)
2、修改配置文件/etc/named.conf
    vi /etc/named.conf 

    master2配置如下:

    options {
        listen-on port 53 { 192.168.10.11; };
        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     { 192.168.10.0/24; };
        recursion yes;
        dnssec-enable yes;
        dnssec-validation yes;
        bindkeys-file "/etc/named.iscdlv.key";
        managed-keys-directory "/var/named/dynamic";
        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
    };
    zone "nongfu.com" IN {
        type master;
        file "nongfu.front";
    };
    zone "11.221.231.in-addr.arpa" IN  {
        type master;
        file "nongfu.verso";
    };

编辑 区域数据文件/var/named/ (对应主配置文件设置的路径)

创建对应的 区域数据文件:touch nongfu.front nongfu.verso

编辑正向解析库:vi /var/named/nongfu.front

$TTL 1D
@       IN      SOA     nongfu.com.  admin.nongfu.com. (
                        0   ; serial
                        1D  ; refresh
                        1H  ; retry
                        1W  ; expire
                        3H )    ; minimum
                NS      ns2.nongfu.com.
www     IN      A       231.221.11.1
mail    IN      A       231.221.11.2
ns2     IN      A       231.221.11.3
ftp     IN      cname   www

编辑反向解析库:vi /var/named/nongfu.verso

$TTL 1D
@   IN  SOA     nongfu.com. admin.nongfu.com. (
                0   ; serial
                1D  ; refresh
                1H  ; retry
                1W  ; expire
                3H )    ; minimum
        NS      ns2.nongfu.com.
1   IN  PTR     www.nongfu.com.
2   IN  PTR     mail.nongfu.com.
3   IN  PTR     ns2.nongfu.com.

3、启动服务
systemctl start  named  

4、测试(测试前需要指定解析的DNS服务器echo "nameserver 192.168.10.10" >> /etc/resolv.conf)

解析192.168.10.10上的解析库

[root@localhost ~]# nslookup www.yadong.com   //正向解析www.yadong.com
    Server:     192.168.10.10
    Address:    192.168.10.10#53

    Name:   www.yadong.com
    Address: 192.168.10.2

    [root@localhost ~]# nslookup 192.168.10.2   //反向解析192.168.10.2
    Server:     192.168.10.10
    Address:    192.168.10.10#53

    2.10.168.192.in-addr.arpa   name = www.yadong.com.

解析192.168.10.11上的解析库

[root@localhost ~]# nslookup www.nongfu.com     //解析nongfu.com
    Server:     192.168.10.10
    Address:    192.168.10.10#53

    Non-authoritative answer:
    Name:   www.nongfu.com
    Address: 231.221.11.1

    [root@localhost ~]# nslookup 231.221.11.1       //反向解析231.221.11.1
    Server:     192.168.10.10
    Address:    192.168.10.10#53

    Non-authoritative answer:
    1.11.221.231.in-addr.arpa   name = www.nongfu.com.

    Authoritative answers can be found from:
    11.221.231.in-addr.arpa nameserver = ns2.nongfu.com.
    ns2.nongfu.com  internet address = 231.221.11.3

智能DNS

智能DNS是域名频道在业界首创的智能解析服务。能自动判断访问者的IP地址并解析出对应的IP地址,
使网通用户会访问到网通服务器,电信用户会访问到电信服务器。

优点:就近选择,查询速度快。

CDN

Content Delivery Network,即内容分发网络(又称代理Agent)。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,
使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点
的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet
网络拥挤的状况,提高用户访问网站的响应速度。

优点:传输的更快、更稳定,隐藏真实服务器地址,提高安全性。

搭建智能DNS:

要实现DNS服务器的智能解析,需要先理解一个概念:Veiw.  假如有台web主机,www.yadong.com是域名
它真的有两个IP地址,一个连接内网IP为192.168.10.2,另一个外网IP为1.1.1.1,来自互联网的用户解析成
外网IP,内网的IP解析为内网IP,这种根据客户端的不同来源 将同一个主机解析成不同的结果,就叫做Veiw!

1、安装DNS服务(yum源为本地挂载)
    yum -y install bind (这是DNS的主服务)
    yum -y install bind-utils (DNS工具,如 nslookup)
2、修改配置文件/etc/named.conf
    vi /etc/named.conf 

    智能DNS配置如下:

    options {
        listen-on port 53 { 192.168.10.2; };
        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; };
        recursion no;
        dnssec-enable yes;
        dnssec-validation yes;
        bindkeys-file "/etc/named.iscdlv.key";
        managed-keys-directory "/var/named/dynamic";
        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";

    };

    //内网区域
    view  internal  {
        match-clients { 192.168.10.2; };
        zone "yadong.com" IN  {
            type master;
            file "yadong.com/internal";
        };
        zone "10.168.192.in-addr.arpa" IN  {
            type master;
            file "yadong.com/internal.verso";
        };
    };
    //外网区域
    view external   {
        match-clients { any; };
        zone "yadong.com" IN {
            type master;
            file "yadong.com/external";
        };
        zone "1.1.1.in-addr.arpa" IN  {
            type master;
            file "yadong.com/external.verso";
        };
    };

    创建对应的目录和区域数据文件
    mkdir /var/named/yadong.com

    touch /var/named/yadong.com/internal    internal.front  external  external.verso

    编辑对应的区域数据文件
    vi /var/named/yadong.com/internal

内网正向解析库

$TTL 1D
    @       IN      SOA     yadong.com. admin.yadong.com. (
                        0   ; serial
                        1D  ; refresh
                        1H  ; retry
                        1W  ; expire
                        3H )    ; minimum
                    NS      ns1.yadong.com.
    www     IN      A       192.168.10.2
    mail    IN      A       192.168.10.2
    ns1     IN      A       192.168.10.2
    ftp     IN      cname   www

内网反向解析库vi /var/named/yadong.com/internal.verso

$TTL 1D 
    @       IN      SOA     yadong.com. admin.yadong.com. (
                        0   ; serial
                        1D  ; refresh
                        1H  ; retry
                        1W  ; expire
                        3H )    ; minimum
                    NS      ns1.yadong.com.
    2       IN      PTR     www.yadong.com.
    2       IN      PTR     mail.yadong.com.
    2       IN      PTR     ns1.yadong.com.

外网正向解析库vi /var/named/yadong.com/external

$TTL 1D
    @       IN  SOA     yadong.com. admin.yadong.com. (
                        0   ; serial
                        1D  ; refresh
                        1H  ; retry
                        1W  ; expire
                        3H )    ; minimum
                NS      ns1.yadong.com.
    www     IN  A       1.1.1.1
    mail    IN  A       1.1.1.1
    ns1     IN  A       1.1.1.1
    ftp     IN  cname   www

外网反向解析库vi /var/named/yadong.com/external.verso

$TTL 1D
    @       IN  SOA     yadong.com. admin.yadong.com (
                        0   ; serial
                        1D  ; refresh
                        1H  ; retry
                        1W  ; expire
                        3H )    ; minimum
                NS      ns1.yadong.com.
    1       IN  PTR     www.yadong.com.
    1       IN  PTR     mail.yadong.com.
    1       IN  PTR     ns1.yadong.com.

3、启动服务

systemctl start  named

4、测试(测试前需要指定解析的DNS服务器echo "nameserver 192.168.10.2" >> /etc/resolv.conf)

内网测试正向解析

[root@localhost /]# nslookup www.yadong.com
Server:     192.168.10.2
Address:    192.168.10.2#53

Name:   www.yadong.com
Address: 192.168.10.2

内网反向解析

[root@localhost /]# nslookup 192.168.10.2
Server:     192.168.10.2
Address:    192.168.10.2#53

2.10.168.192.in-addr.arpa   name = ns1.yadong.com.
2.10.168.192.in-addr.arpa   name = www.yadong.com.
2.10.168.192.in-addr.arpa   name = mail.yadong.com.

外网正向解析

[root@localhost ~]# nslookup www.yadong.com
Server:     192.168.10.2
Address:    192.168.10.2#53

Name:   www.yadong.com
Address: 1.1.1.1

外网反向解析

[root@localhost ~]# nslookup 1.1.1.1
Server:     192.168.10.2
Address:    192.168.10.2#53

1.1.1.1.in-addr.arpa    name = www.yadong.com.
1.1.1.1.in-addr.arpa    name = ns1.yadong.com.
1.1.1.1.in-addr.arpa    name = mail.yadong.com.

测试完毕,全部解析成功,至此,智能DNS搭建成功!