实现智能DNS
英语文化交流 > 技术博客 > 实现智能DNS
实现智能DNS
时间:2017-10-12 11:48:16 Linux 学习记录 分类:技术博客

                    智 能 DNS

        智 能 DNS实 现 如 下 图 :当 用 户 通 过 浏 览 器 访 问 www.sina.com,浏 览 器 向 DNS服 务 器 查 找 服 务 器 地 址 ,北 京 的 用 户 ,返 回 区 域 代 理 服 务 器 1的 ip地 址 ,上 海 的 用 户 返 回 区 域 服 务 器 2的 ip地 址 ,以 此 类 推 。以 北 京 用 户 为 例 :当 DNS服 务 器 返 回 区 域 代 理 服 务 器 1的 地 址 ,用 户 访 问 区 域 代 理 服 务 器 1,区 域 代 理 服 务 器 一 般 存 放 静 态 的 一 些 内 容 ,当 用 户 只 访 问 静 态 的 内 容 时 ,区 域 代 理 服 务 器 1提 供 服 务 ,当 用 户 访 问 一 些 动 态 内 容 时 ,区 域 代 理 服 务 器 1就 向 web服 务 器 找 寻 ,然 后 返 回 给 用 户 。


wKioL1newpzjNhQqAAByF3_qENg150.png

实 验 :实 现 上 海 和 北 京 和 其 他 地 区 的 智 能 DNS管 理

     说 明 :  实 现 当 上 海 地 区 访 问 www.sina.com 返 回 ip为 6.6.6.6

                当 北 京 地 区 访 问 www.sina.com 返 回 ip为 1.1.1.1

                当 其 他 地 区 访 问 www.sina.com 返 回 ip为 2.2.2.2                                   

        以 ip地 址 来 划 分 区 域 ,上 海 的 ip地 址 段 为 :

      192.168.191.0/24;

                   192.168.192.0/24;

            北 京 的 ip地 址 段 为 :                      

                172.17.251.0/24;

               172.18.251.0/24;

            以 此 来 模 拟 智 能 DNS实 现 过 程 。

       实 现 步 骤 :三 大 步 :

            第 一 、安 排 数 据 库 文 件

                        地 址 www.sina.com 返 回 的 地 址 等 信 息  

            第 二 、定 义 acl

                       定 义 某 个 区 域 的 ip地 址

            第 三 、定 义 view

                        关 联 acl和 数 据 库 文 件

    1、安 装 包

        yum  install bind

    2、启 动 服 务

        systemctl start named

        注 意 :DNS服 务 的 包 名 为 bind ,服 务 名 为 named

                 主 配 置 文 件 :/etc/named.conf, /etc/named.rfc1912.zones,/etc/rndc.key

         解 析 库 文 件 : /var/named/ZONE_NAME.ZONE

    3、创 建 DNS数 据 库 文 件

        cd /var/named

        vim  sina.com.zone.beijing   

$TTL 1D
@       IN SOA  dns1 rname.invalid. (
                                        2017101101      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@       NS      dns1
dns1    A      172.17.251.107
dns1        A  192.168.191.107
www     A      1.1.1.1

      vim  sina.com.zone.shanghai

$TTL 1D
@       IN SOA  dns1 rname.invalid. (
                                        2017101101      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@       NS      dns1
dns1    A       172.17.251.107
dns2        A              192.168.191.107
www     A       6.6.6.6

    vim sina.com.zone.other   

$TTL 1D
@       IN SOA  dns1 rname.invalid. (
                                        2017101101      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@       NS      dns1
dns1    A      172.17.251.107
dns1        A            192.168.191.107
www     A      2.2.2.2

    4、创 建 acl和 view

        vim /etc/named.conf 

        (1)注 释 这 两 行  

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

第 一 行 代 表 53端 口 绑 定 的 ip,allow-query {};表 态 允 许 查 询 的 主 机

将 这 两 行 注 释 ;或 者 改 成 上 面 ,localhost表 态 允 许 该 主 机 上 的 所 有 ip都 可 以 绑 定 53端 口 ,any代 表 所 有 ip         

        (2)在 该 文 件 添 加      

acl shanghainet {
        192.168.191.0/24;
        192.168.192.0/24;
};
acl beijingnet {
        172.17.251.0/24;
        172.18.251.0/24;
};

    (3)创 建 view

        将 下 面 的 文 件 修 改 成 下 面

        创 建 view的 方 法 1:关 联 数 据 库 文 件 时 ,直 接 写 文 件 名

         方 法 2:将 文 件 写 在 /etc/named.rfc1912.zone.shanghai,中 ,在 该 文 件 中 指 定 文 件 。

view  beijingview {
        match-clients { beijingnet;};  //连 接 acl
        zone "sina.com" {
                type master;
                file "sina.com.zone.beijing";  // 指 定 数 据 库 文 件
        };
        zone "." IN {
                type hint;    //允 许 该 地 区 的 用 户 直 接 访 问 根 地 址
                file "named.ca";
        };
};
view  shanghaiview {
        match-clients { shanghainet;};
        include "/etc/named.rfc1912.zones.shanghai"; 
        zone "." IN {
                type hint;
                file "named.ca";
        };
};
view otherview {
        match-clients {any;};
        include "/etc/named.rfc1912.zones.other";
         zone "." IN {
                type hint;
                file "named.ca";
        };
};
include "/etc/named.root.key";

   整 个 文 件 如 下

acl shanghainet {
        192.168.191.0/24;
        192.168.192.0/24;
};
acl beijingnet {
        172.17.251.0/16;
        172.18.251.0/16;
};
options {
//      listen-on port 53 { localhost; };
        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; };
        allow-transfer   { none; };
        /* 
         - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
         - If you are building a RECURSIVE (caching) DNS server, you need to enable 
           recursion. 
         - If your recursive DNS server has a public IP address, you MUST enable access 
           control to limit queries to your legitimate users. Failing to do so will
           cause your server to become part of large scale DNS amplification 
           attacks. Implementing BCP38 within your network would greatly
           reduce such attack surface 
        */
        recursion yes;
        dnssec-enable no;
        dnssec-validation no;
        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";
        managed-keys-directory "/var/named/dynamic";
        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
view  beijingview {
        match-clients { beijingnet;};
        zone "sina.com" {
                type master;
                file "sina.com.zone.beijing";
        };
        zone "." IN {
                type hint;
                file "named.ca";
        };
};
view  shanghaiview {
        match-clients { shanghainet;};
        include "/etc/named.rfc1912.zones.shanghai";
        zone "." IN {
                type hint;
                file "named.ca";
        };
};
view otherview {
        match-clients {any;};
        include "/etc/named.rfc1912.zones.other";
         zone "." IN {
                type hint;
                file "named.ca";
        };
};
include "/etc/named.root.key";

  5、 将 /etc/named.rfc1912.zones 复 制 两 份 命 名 为 /etc/named.rfc1912.zones.shanghai

/etc/named.rfc1912.zones.other

        vim /etc/named.rfc1912.zones.shanghai

            添 加 如 下 内 容

zone "sina.com" IN {
        type master;
        file "sina.com.zone.shanghai";
};

    vim /etc/named.rfc1912.zones.other   

         添 加 如 下 内 容

zone "sina.com" IN {
        type master;
        file "sina.com.zone.other";
};

6、启 动 服 务

        重 新 加 载 服 务 :rndc reload    

注 意 :在 centos6或 centos7上 最 好 不 要 用 restart,容 易 把 服 务 死 掉 ,起 不 来 服 务 。

这 里 rndc reload  这 个 命 令 时 专 门 管 理 DNS服 务 的 ,假 如 必 要 重 启 服 务 了 ,先 关 闭 服 务 ,再 开 启 服 务 。

7、测 试 :

        在 某 一 客 户 端 上 ,将 该 客 户 端 的 DNS执 行 服 务 器 主 机

        (1)假 如 网 络 是 自 动 获 取 的 ,则 修 改 vim /etc/resolv.conf

           nameserver 172.17.251.107 

        (2)假 如 网 络 时 自 己 配 置 的 ,/etc/sysconfig/network-scripts ,修 改 该 目 录 下 的 桥 接 网 卡 的 DNS1=172.17.251.107 。

            重 启 服 务 systemctl restart network

        在 客 户 端 测 试 : 

        dig www.sina.com  @192.168.191.107

        dig www.sina.com  @172.17.251.107

     

[root@centos7 named]# dig www.sina.com @192.168.191.107


; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> www.sina.com @192.168.191.107

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 57522

;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1


;; OPT PSEUDOSECTION:

; EDNS: version: 0, flags:; udp: 4096

;; QUESTION SECTION:

;www.sina.com.                  IN      A


;; Query time: 0 msec

;; SERVER: 192.168.191.107#53(192.168.191.107)

;; WHEN: Thu Oct 12 11:10:48 CST 2017

;; MSG SIZE  rcvd: 41

 遇 到 错 误

排 错 :1、查 看 防 火 墙 iptables -vnL  ,清 除 防 火 墙 策 略 iptables -F

          2、查 看 网 络 连 接 。dig www.baidu.com 
            rndc flush  清 除 缓 存

            rndc reload 重 新 启 动

 发 现 这 两 个 都 清 除 了 ,还 是 出 现 相 同 错 误

    最 后 发 现 是 数 据 库 文 件 的 权 限 问 题 ,在 运 行 DNS时 ,是 用 named这 个 用 户 ,执 行 操 作 的 ,所 以 当 文 件 的 所 有 者 ,所 属 组 为 root是 ,将 权 限 改 成 644


上 海 用 户 ,解 析 出 来 6.6.6.6。成 功

[root@centos6 network-scripts]# dig www.sina.com @192.168.191.107 


; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6 <<>> www.sina.com @192.168.191.107

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63539

;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2


;; QUESTION SECTION:

;www.sina.com.                  IN      A


;; ANSWER SECTION:

www.sina.com.           86400   IN      A       6.6.6.6


;; AUTHORITY SECTION:

sina.com.               86400   IN      NS      dns1.sina.com.


;; ADDITIONAL SECTION:

dns1.sina.com.          86400   IN      A       172.17.251.107

dns1.sina.com.          86400   IN      A       192.168.191.107


;; Query time: 2 msec

;; SERVER: 192.168.191.107#53(192.168.191.107)

;; WHEN: Mon Oct  9 13:34:41 2017

;; MSG SIZE  rcvd: 97

     

        

本 文 出 自 “Linux 学 习 记 录 ” 博 客 ,请 务 必 保 留 此 出 处 http://****/13126952/1971653

随机阅读

Copyright © 2017 英语文化交流 All Rights Reserved.