zoukankan      html  css  js  c++  java
  • DNS之五----实现智能DNS

    DNS之五----实现智能DNS

    智能DNS

    架构图:

    image-20210702080456470

    image-20210702080506688

    环境准备:

    主DNS服务器:192.168.34.101(模拟北京地址)、172.18.0.7(模拟上海地址)
    客户端:192.168.34.102
    

    1、创建三个DNS服务器城市域的配置文件

    1.1 创建北京域

    (1) 在主DNS服务器上创建三个区域库文件,分别为北京、上海、深圳,复制过程中,注意保留属性

    [root@ansiblenamed]#vim /var/named/baidu.com.zone.bj
     
    $TTL 1D
    @       IN SOA  dns1  admin.baidu.com. (
                                            1       ; serial
                                            1D      ; refresh
                                            1H      ; retry
                                            1W      ; expire
                                            3H )    ; minimum
            NS      dns1
            NS      dns2
    shenzhen  NS    dns3
    dns1    A   192.168.34.101
    dns2    A   192.168.34.103
    dns3    A   192.168.34.102
     
    www    CNAME    webs
    webs   A      6.6.6.6 # 北京域名
    

    (2)复制过程中注意保留文件原有属性:

    [root@ansiblenamed]#cp -p  baidu.com.zone.bj baidu.com.zone.sh
    

    1.2 创建上海域

    创建上海数据库文件:

    [root@ansiblenamed]#vim baidu.com.zone.sh
     
    $TTL 1D
    @       IN SOA  dns1  admin.baidu.com. (
                                            1       ; serial
                                            1D      ; refresh
                                            1H      ; retry
                                            1W      ; expire
                                            3H )    ; minimum
            NS      dns1
            NS      dns2
    shenzhen  NS    dns3
    dns1    A   192.168.34.101
    dns2    A   192.168.34.103
    dns3    A   192.168.34.102
     
    www    CNAME    webs
    webs   A      7.7.7.7  # 上海域名
    

    1.3 创建深圳域

    创建深圳数据库文件:

    [root@ansiblenamed]#cp -p  baidu.com.zone.sh baidu.com.zone.sz
    [root@ansiblenamed]#vim baidu.com.zone.sz
     
    $TTL 1D
    @       IN SOA  dns1  admin.baidu.com. (
                                            1       ; serial
                                            1D      ; refresh
                                            1H      ; retry
                                            1W      ; expire
                                            3H )    ; minimum
            NS      dns1
            NS      dns2
    shenzhen  NS    dns3
    dns1    A   192.168.34.101
    dns2    A   192.168.34.103
    dns3    A   192.168.34.102
     
    www    CNAME    webs
    webs   A      8.8.8.8  # 深圳域名
    

    2、定义ACL,指定区域和地址段,并启用view功能

    在/etc/named.conf配置文件中修改

    [root@ansiblenamed]#vim /etc/named.conf
    acl beijingnet {
            192.168.34.0/24;  # 北京访问网段
    };
    acl shanghainet {
            172.18.0.0/16;  # 上海访问网段
    };
    acl shenzhennet {
            any;    # 含义是剩余其他的网段都可以访问
    };
     
     
     
    view view_beijing {
            match-clients {beijingnet;};  # 定义三个北京区域
            include "/etc/named.rfc1912.zones";    
    };
     
    view view_shanghai {
            match-clients {shanghainet;};  # 定义上海区域
            include "/etc/named.rfc1912.zones.shanghai";    
    };
     
    view view_shenzhen {
            match-clients {shenzhennet;};  # 定义深圳区域
            include "/etc/named.rfc1912.zones.shenzhen";    
    };
    

    3、定义rfc1912.zones配置文件,与named.conf配置文件关联

    (1)我们定义三个/etc/named.rfc1912.zones 配置文件:

    # vim /etc/named/rfc1912.zones
    zone "." IN {    # 在最上面创建此ca关系,复制了此四行,目的是为了与/etc/named.conf配置文件关联
            type hint;
            file "named.ca";
    };
     
     
    zone  "baidu.com" {
            type master;
            file "baidu.com.zone";  # 原有的主DNS服务器配置文件
    };
    

    (2)将第一个定义好的配置文件复制一份,用来定义bj、shanghai、shenzhen的配置文件,复制时,注意属性:

    # cp -p /etc/named.rfc1912.zones  /etc/named.rfc1912.zones.shanghai
    # cp -p /etc/named.rfc1912.zones  /etc/named.rfc1912.zones.shenzhen
    # cp -p /etc/named.rfc1912.zones  /etc/named.rfc1912.zones.bj
    

    (3)然后修改bj的配置文件:

    # vim /etc/named.rfc1912.zones.bj
    zone  "baidu.com" {
            type master;
            file "baidu.com.zone";  # 原有的主DNS服务器配置文件
    };
    

    (4)然后修改shanghai的配置文件:

    [root@ansiblenamed]#vim /etc/named.rfc1912.zones.shanghai
    zone  "baidu.com" {
            type master;
            file "baidu.com.zone.sh";  # 创建上海域
    };
    

    (5)修改shenzhen的配置文件:

    [root@ansiblenamed]#vim /etc/named.rfc1912.zones.shenzhen
    zone  "baidu.com" {
            type master;
            file "baidu.com.zone.sz";  # 创建深圳域
    };
    

    4、验证效果:

    开始验证不同网址对应的不同区域:

    • 192.168.34.0/24网段是北京区域
    • 127.18.0.0/16是上海区域
    • 其他地址是属于深圳区域

    北京效果:

    在主机B上dig,获取的的结果是6.6.6.6,返回的就是北京的IP地址信息

    [root@centos6~]#dig www.baidu.com   #在B主机上dig,此时B主机上的IP地址默认是192.168.34.105,是北京的网址
     
    ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.baidu.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26005
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2
     
    ;; QUESTION SECTION:
    ;www.baidu.com.         IN  A
     
    ;; ANSWER SECTION:
    <strong>www.baidu.com.      86400   IN  CNAME   webs.baidu.com.
    webs.baidu.com.     86400   IN  A   6.6.6.6</strong>
     
    ;; AUTHORITY SECTION:
    baidu.com.      86400   IN  NS  dns1.baidu.com.
    baidu.com.      86400   IN  NS  dns2.baidu.com.
     
    ;; ADDITIONAL SECTION:
    dns1.baidu.com.     86400   IN  A   192.168.34.101
    dns2.baidu.com.     86400   IN  A   192.168.34.103
     
    ;; Query time: 1 msec
    ;; SERVER: 192.168.34.101#53(192.168.34.101)
    ;; WHEN: Thu Nov  7 23:33:05 2019
    ;; MSG SIZE  rcvd: 136
    

    上海效果:

    在主机B上dig www.baidu.com @172.18.0.7,输入对方的IP地址,会从本机去访问对方,从而获取当前的区域信息:

    得知 7.7.7.7,返回上海区域信息

    [root@centos6network-scripts]#dig www.baidu.com @172.18.0.7
     
    ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.baidu.com @172.18.0.7
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31631
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2
     
    ;; QUESTION SECTION:
    ;www.baidu.com.         IN  A
     
    ;; ANSWER SECTION:
    <strong>www.baidu.com.      86400   IN  CNAME   webs.baidu.com.
    webs.baidu.com.     86400   IN  A   7.7.7.7</strong>
     
    ;; AUTHORITY SECTION:
    baidu.com.      86400   IN  NS  dns1.baidu.com.
    baidu.com.      86400   IN  NS  dns2.baidu.com.
     
    ;; ADDITIONAL SECTION:
    dns1.baidu.com.     86400   IN  A   192.168.34.101
    dns2.baidu.com.     86400   IN  A   192.168.34.103
     
    ;; Query time: 3 msec
    ;; SERVER: 172.18.0.7#53(172.18.0.7)
    ;; WHEN: Thu Nov  7 23:41:20 2019
    ;; MSG SIZE  rcvd: 136
    

    深圳效果:

    在配置相关数据的主机A上dig一个其他的IP地址,得到最终得到8.8.8.8的IP地址,返回的的是深圳的地址

    [root@ansiblenetwork-scripts]#dig www.baidu.com @127.0.0.1
     
    ; <<>> DiG 9.9.4-RedHat-9.9.4-72.el7 <<>> www.baidu.com @127.0.0.1
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22706
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 3
     
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;www.baidu.com.         IN  A
     
    ;; ANSWER SECTION:
    www.baidu.com.      86400   IN  CNAME   webs.baidu.com.
    webs.baidu.com.     86400   IN  A   8.8.8.8
     
    ;; AUTHORITY SECTION:
    baidu.com.      86400   IN  NS  dns2.baidu.com.
    baidu.com.      86400   IN  NS  dns1.baidu.com.
     
    ;; ADDITIONAL SECTION:
    dns1.baidu.com.     86400   IN  A   192.168.34.101
    dns2.baidu.com.     86400   IN  A   192.168.34.103
     
    ;; Query time: 2 msec
    ;; SERVER: 127.0.0.1#53(127.0.0.1)
    ;; WHEN: Thu Nov 07 23:46:12 CST 2019
    ;; MSG SIZE  rcvd: 147
    

    转载至https://www.cnblogs.com/struggle-1216/p/12582297.html

    很高兴各位朋友能欣赏作品,本文版权归作者和博客园共有,欢迎转载,请在文章页面明显位置给出原文出处,否则将追究法律责任。 原文链接: https://www.cnblogs.com/strugger-0316
  • 相关阅读:
    MVC模式下 provider: SQL Network Interfaces, error: 50
    How to expose a JSON endpoint from a WCF-service
    net 后台任意设置 控件显示和隐藏就OK
    VS编程,快速折叠或者展开代码到 #region 级别的设置方法。
    java进阶(18)--Enum枚举
    java进阶(17)--Random
    java进阶(16)--System常用方法总结
    java进阶(15)--DecimalFormat、BigDecimal
    java进阶(14)--日期时间处理
    java进阶(13)--int、String、Integer互相转换
  • 原文地址:https://www.cnblogs.com/strugger-0316/p/14970722.html
Copyright © 2011-2022 走看看