zoukankan      html  css  js  c++  java
  • linux中部署DNS分离解析技术

         在Internet环境中,许多大型站点(新浪、网易、腾讯、搜狐……)会分别部署多台镜像服务器,不同地区或不同ISP接入的用户会自动连接到离他们最近的镜像服务器。针对类似这样的需求,对于这些站点的权威DNS服务器来说,如何根据客户机的来源不同而引导其访问正确的镜像服务器。需要用到“DNS分离解析”,有时候也成为智能解析。。。。。下面就来了解下"DNS分离解析"的运作原理吧!(http://www.mamicode.com/info-detail-7299.html)。

         实质:依据不同来源的DNS查询,将同一个域名解析为不同的IP地址,这些IP地址对应的镜像服务器提供的内容是一样的。 

         

         下面实验一共由两台虚拟机完成:

         DNS服务器: PC1

         客户端: PC2

    1、在PC1中安装bind服务

    [root@PC1 ~]# yum install bind-chroot -y
    Loaded plugins: langpacks, product-id, subscription-manager
    This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
    rhel7                                                    | 4.1 kB     00:00     
    Resolving Dependencies
    --> Running transaction check
    ---> Package bind-chroot.x86_64 32:9.9.4-14.el7 will be installed
    --> Processing Dependency: bind = 32:9.9.4-14.el7 for package: 32:bind-chroot-9.9.4-14.el7.x86_64
    --> Running transaction check
    ---> Package bind.x86_64 32:9.9.4-14.el7 will be installed
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    ================================================================================
     Package             Arch           Version                 Repository     Size
    ================================================================================
    Installing:
     bind-chroot         x86_64         32:9.9.4-14.el7         rhel7          81 k
    Installing for dependencies:
     bind                x86_64         32:9.9.4-14.el7         rhel7         1.8 M
    
    Transaction Summary
    ================================================================================
    Install  1 Package (+1 Dependent package)
    
    Total download size: 1.8 M
    Installed size: 4.3 M
    Downloading packages:
    --------------------------------------------------------------------------------
    Total                                              9.7 MB/s | 1.8 MB  00:00     
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
      Installing : 32:bind-9.9.4-14.el7.x86_64                                  1/2 
      Installing : 32:bind-chroot-9.9.4-14.el7.x86_64                           2/2 
    rhel7/productid                                          | 1.6 kB     00:00     
      Verifying  : 32:bind-9.9.4-14.el7.x86_64                                  1/2 
      Verifying  : 32:bind-chroot-9.9.4-14.el7.x86_64                           2/2 
    
    Installed:
      bind-chroot.x86_64 32:9.9.4-14.el7                                            
    
    Dependency Installed:
      bind.x86_64 32:9.9.4-14.el7                                                   
    
    Complete!

    2、在pc1中修改bind服务主配置文件

    …………
      9 
     10 options {
     11         listen-on port 53 { any; };   ## 设定任何网卡都可以提供DNS服务
     12         listen-on-v6 port 53 { ::1; };
     13         directory       "/var/named";
     14         dump-file       "/var/named/data/cache_dump.db";
     15         statistics-file "/var/named/data/named_stats.txt";
     16         memstatistics-file "/var/named/data/named_mem_stats.txt";
     17         allow-query     { any; };    ## 任何用户均可使用DNS查询服务
     18 
     19         /* 
     20          - If you are building an AUTHORITATIVE DNS server, do NOT enable re    cursion.
    ……………
    44 logging {
     45         channel default_debug {
     46                 file "data/named.run";
     47                 severity dynamic;
     48         };
     49 };
     50 
     51 #zone "." IN {     ## 注释掉 51-54 行,与分离解析服务冲突
     52 #       type hint;
     53 #       file "named.ca";
     54 #};
     55 
     56 include "/etc/named.rfc1912.zones";
     57 include "/etc/named.root.key";
    ……

    3、在PC1服务器中编辑区域配置文件

    [root@PC1 ~]# vim /etc/named.rfc1912.zones
    acl "china" { 122.71.115.0/24; };   ## 指定变量,将122.71.115.0/24网段指定为 china 变量,当做国内用户的网段
    acl "america" { 106.185.25.0/24; };  ##  作为美国用户的网段
    view "china"{
    match-clients { "china"; };    ## 匹配
    zone "linuxprobe.com" {        ## 指定匹配规则文件
    type master;
    file "linuxprobe.com.china";
    };
    };
    view "america"{
    match-clients { "america"; };
    zone "linuxprobe.com" {
    type master;
    file "linuxprobe.com.america";
    };
    };

    4、在PC1服务器中建立数据配置文件

    [root@PC1 ~]# cd /var/named/
    [root@PC1 named]# ls
    chroot  dynamic   named.empty      named.loopback
    data    named.ca  named.localhost  slaves
    [root@PC1 named]# cp -a named.localhost linuxprobe.com.china
    [root@PC1 named]# cp -a named.localhost linuxprobe.com.america
    [root@PC1 named]# vim linuxprobe.com.china  ## 编辑国内用户匹配时使用的数据配置文件,国内用户访问 www.linuxprobe.com时,解析为122.71.115.10
    $TTL 1D
    @       IN SOA  linuxprobe.com. root.linuxprobe.com. (
                                            0       ; serial
                                            1D      ; refresh
                                            1H      ; retry
                                            1W      ; expire
                                            3H )    ; minimum
            NS      ns.linuxprobe.com.
    ns      IN A    122.71.115.10
    www     IN A    122.71.115.10
    [root@PC1 named]# vim linuxprobe.com.america  ## 编辑美国用户匹配时使用的数据配置文件,美国用户访问时,解析为106.185.25.10
    $TTL 1D
    @       IN SOA  linuxprobe.com. root.linuxprobe.com. (
                                            0       ; serial
                                            1D      ; refresh
                                            1H      ; retry
                                            1W      ; expire
                                            3H )    ; minimum
            NS      ns.linuxprobe.com.
    ns      IN A    106.185.25.10
    www     IN A    106.185.25.10

    5、配置PC1主服务器网卡,网卡中要指定两个IP,这两个IP要分别在指定的国内网段(122.71.115.0/24)和美国网段(106.185.25.0/24

    6、重启PC1主机网卡、重启PC1主机bind服务,清空PC1主机防火墙

    [root@PC1 named]# systemctl restart network
    [root@PC1 named]# systemctl restart named
    [root@PC1 named]# iptables -F   ## 这一步很重要

    7、模拟测试国内用户,将客户机PC2的IP配置为122.71.115.20(在122.71.115.0/24国内网段即可),DNS服务设置为122.71.115.1(PC1主机服务器对应网段IP

    8、重启PC2网卡服务(测试国内用户,IP在122.71.115.0/24内

    [root@PC2 network-scripts]# systemctl restart network
    [root@PC2 network-scripts]# ifconfig | head -n 3
    eno16777728: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 122.71.115.20  netmask 255.255.255.0  broadcast 122.71.115.255
            inet6 fe80::20c:29ff:fe25:bb3e  prefixlen 64  scopeid 0x20<link>

    9、在PC2中检测网络连通性(测试国内用户,IP在122.71.115.0/24内)

    [root@PC2 network-scripts]# ping -c 3 122.71.115.20  ## 测试PC2本机
    PING 122.71.115.20 (122.71.115.20) 56(84) bytes of data.
    64 bytes from 122.71.115.20: icmp_seq=1 ttl=64 time=0.071 ms
    64 bytes from 122.71.115.20: icmp_seq=2 ttl=64 time=0.043 ms
    64 bytes from 122.71.115.20: icmp_seq=3 ttl=64 time=0.047 ms
    
    --- 122.71.115.20 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2000ms
    rtt min/avg/max/mdev = 0.043/0.053/0.071/0.015 ms
    [root@PC2 network-scripts]# ping -c 3 122.71.115.1   ## 测试PC2客户端和PC1服务端连通性
    PING 122.71.115.1 (122.71.115.1) 56(84) bytes of data.
    64 bytes from 122.71.115.1: icmp_seq=1 ttl=64 time=0.374 ms
    64 bytes from 122.71.115.1: icmp_seq=2 ttl=64 time=0.226 ms
    64 bytes from 122.71.115.1: icmp_seq=3 ttl=64 time=0.197 ms
    
    --- 122.71.115.1 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2000ms
    rtt min/avg/max/mdev = 0.197/0.265/0.374/0.079 ms

    9、测试国内用户请求DNS解析时返回的www.linuxprobe.com域名的IP

    [root@PC2 network-scripts]# nslookup 
    > www.linuxprobe.com
    Server:        122.71.115.1
    Address:    122.71.115.1#53
    
    Name:    www.linuxprobe.com
    Address: 122.71.115.10

    10、同理,模拟测试美国用户,在pc2中将IP地址修改为106.185.25.25(106.185.25.0/24美国网段即可),DNS服务设定为106.185.25.1,重启网卡,测试DNS解析效果

    [root@PC2 network-scripts]# systemctl restart network  ## 测试 网络连通
    [root@PC2 network-scripts]# ifconfig | head -n 3
    eno16777728: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 106.185.25.25  netmask 255.255.255.0  broadcast 106.185.25.255
            inet6 fe80::20c:29ff:fe25:bb3e  prefixlen 64  scopeid 0x20<link>
    [root@PC2 network-scripts]# nslookup 
    > www.linuxprobe.com
    Server:        106.185.25.1
    Address:    106.185.25.1#53
    
    Name:    www.linuxprobe.com
    Address: 106.185.25.10

     通过以上实验可见:

          国内用户请求解析www.linuxprobe.com时,返回122.71.115.10

          美国用户请求解析www.linuxprobe.com时,返回106.185.25.10

    也就是说实现了:同一个域名(www.linuxprobe.com)依据访客的不同解析为了不同的IP。

    DNS分离解析的关键点:

         DNS服务器中要设置不同的网段(例如国内和美国),和各自网段对应的DNS服务数据配置文件(域名和IP对应关系文件),这些不同的网段用户不同的访客访问时进行匹配,从而使用不同的数据配置文件实现域名解析。

         DNS服务器中的IP地址要设置不同的IP,这些IP在对应的网段即可,客户端用户将使用对应的IP作为DNS服务,DNS服务器中不用指定DNS服务。

         客户端主机使用的IP要与DNS服务器中定义的网段范围内(国内用户在国内用户范围内,美国用户在美国用户范围内),客户端的DNS服务应使用DNS服务器中对应网段的IP。也就是说客户端主机IP、客户端的DNS服务地址和DNS服务器中的IP应在同一网段中,其中客户端的DNS服务地址和DNS服务器中的IP是相同(以上针对一个地区而言,另一个地区时,同样如此)。

       

  • 相关阅读:
    dotnet 读 WPF 源代码笔记 了解 WPF 已知问题 用户设备上不存在 Arial 字体将导致应用闪退
    WPF 基础 2D 图形学知识 判断点是否在线段上
    WPF 实现自定义的笔迹橡皮擦
    WPF 加载诡异的字体无法布局
    dotnet 5 从 IL 层面分析协变返回类型新特性
    WPF 笔迹触摸点收集工具
    dotnet C# 序列化 XML 时进行自动格式化
    自定义systemctl服务
    maven之三大特性属性、profile、资源过滤
    dependencyManagement与dependencies
  • 原文地址:https://www.cnblogs.com/liujiaxin2018/p/14127325.html
Copyright © 2011-2022 走看看