Linux DNS分离解析 ( 实现CDN技术的子技术)

何为分离解析

 DNS分离解析即将内外网的相同域名解析为不同的IP地址。现实网络中一些电商网站为了让用户有更好的体验效果解析速度更快,就把来自不同运营商的用户解析到相对应的服务器这样就大大提升了访问速度。

比如:有两台服务器A和B,其中A在北京,B在上海,我们当然希望北京的用户访问北京的服务器,上海的用户访问上海的服务器,但是服务器对外的地址只有一个,比如www.baidu.com,对内而言我们希望实现分离解析,我们需要一台服务器C,在用户发访问A或B的之前,判断他们属于哪个城市,然后给他们分配服务器.

分离解析的作用:

1.能够区分客户机的来源

2.为不同类别的客户机提供不同的地址解析

如图,同样是请求12306,却提供了不同的访问地址

何为CDN

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

通过描述可以知道CDN正是利用了DNS分离解析特性

适用场景:

目前很多云公司都提供cdn(内容分发,基于分离解析)服务

如华为cdn,腾讯cdn,百度cdn等

一、实验案例

 

搭建思路:

   1.四台虚拟机,A作为DNS服务器用于解析域名,实现DNS分离解析

     B作为客户端用于测试

     C,D用于搭建web虚拟网站,

     A,B来访问CD上搭建的虚拟站点

  2.相同网段

      四台机器属于相同网段,使用相同的虚拟网络接口

  3.装好软件

      CD虚拟机需要装httpd软件

      A需要装一个域名解析软件 named

   4.在CD上搭建好虚拟站点

         搭建好虚拟站点,并且本机可以访问

   5.做好DNS分离解析

      A作为DNS服务器,并且配置好DNS分离解析.B虚拟机的DNS设为A

   6.测试一下

       实验需要达到的目的: A访问www.qq.com,www.163.com时,网站由虚拟机C提供,

       B访问  www.qq.com,www.163.com时,网站由虚拟机D提供

二、详细步骤

   1.配置四台虚拟机

      配置四台虚拟机,使他们的处于同一网段,

      我配置的四台虚拟机IP为:

      虚拟机A: 192.168.4.7

      虚拟机B: 192.168.4.207

      虚拟机C: 192.168.4.10

      虚拟机D: 192.168.4.20

   

2.安装环境

     A虚拟机需要安装一个名为named的域名解析软件.ABCD安装httpd软件

     [root@A ~]# yum -y install  bind-chroot   bind

     [root@C ~]# yum -y install  httpd           

     [root@D ~]# yum -y install  httpd                                                

 3.分离解析的配置

     我们将A虚拟机用于分离解析

            • 主配置文件:/etc/named.conf      #本机负责解析的域名 
            • 地址库文件存放路径:/var/named/   #域名的解析结果

         1)重启named服务 

            刚装完重启一下服务

             [root@A ~]# systemctl restart named

         2)修改配置文件

              在修改之前做一个备份,以防万一

             [root@A ~]#  cp  /etc/named.conf   /etc/named.bak

             [root@A ~]#  vim   /etc/named.conf

             打开配置文件后会有很多内容,但是这个案例并没有过高的要求,所以只需要最低限度的配置文件即可

             分析一下案例要求, 要求A访问www.qq.com,www.163.com由虚拟机C提供,B访问www.qq.com和www.163.com由虚拟机D提供.这要求A上的域名解析实现一个功能:分离A和B关于解析IP的请求,其中将A请求的网址由C提供,B请求的网址由D提供.

最简化配置,删除多余的配置信息,          

options {
        directory       "/var/named";                

 };
view "nsd" {
   match-clients { 192.168.4.7;  };    #只匹配192.168.4.7这个ip
   zone "qq.com" IN {
        type master;
        file "qq.com.zone";
   };
   zone "163.com" IN {
        type master;
        file "163.com.zone";
   };
};
view "other" {
   match-clients { any;  };        #匹配除192.168.4.7这个ip的所有ip
   zone "qq.com" IN {
        type master;
        file "qq.com.other";
   };
   zone "163.com" IN {
        type master;
        file "163.com.other";
   };
};

       3)创建地址库文件

       根据之前的配置文件,需要创建四个地址库文件 ,后缀名为zone向给A提供服务,为other的向除A以外的主机提供    

$ cd  /var/named/        

$ vim qq.com.zone

             

 $TTL 1D
              @       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
             qq.com.         NS         svr7                             #声明区域DNS服务器
             svr7                A          192.168.4.7                  #声明DNS服务器IP地址
             www               A          192.168.4.10               #常规DNS正向解析,ip为C虚拟机

$ vim 163.com.zone

     $TTL 1D
              @       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
             163.com.         NS         svr7                             
             svr7                A          192.168.4.7                  
             www               A          192.168.4.10      

$ vim qq.com.other        

              

      $TTL 1D
              @       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
             qq.com.         NS         svr7                             
             svr7                A          192.168.4.7                  
             www               A          192.168.4.20        

$ vim  163.com.other        

                 $TTL 1D
              @       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
             163.com.         NS         svr7                             
             svr7                A          192.168.4.7                  
             www               A          192.168.4.20    

      4)修改库文件的组权限

          要让named服务访问到库文件.必须将库文件的组权限修改为named

            [root@A ~]#  chown :named  /var/named/qq.com.zone

            [root@A ~]#  chown :named  /var/named/163.com.zone

            [root@A ~]#  chown :named  /var/named/qq.com.other

            [root@A ~]#  chown :named  /var/named/163.com.other

        完成配置后重启一下named服务即可,dhcp的配置就完成了

          [root@A ~]# systemctl restart named

 

 4.搭建WEB虚拟服务

        在CD两台虚拟机上搭建Web虚拟站点,因为CD搭建方法相同,这里只演示C虚拟机的搭建

           1) 创建配置文件

                   [root@C ~]# vim  /etc/httpd/conf.d/virtual.conf

                    <VirtualHost *:80>

                            ServerName qq.com

                            DocumentRoot /var/www/html/qq

                    </VirtualHost *:80>

                     <VirtualHost *:80>

                            ServerName 163.com

                            DocumentRoot /var/www/html/163

                    </VirtualHost *:80>

            2)创建网站

                    [root@C ~]# mkdir /var/www/html/qq           #创建qq文件夹

                    [root@C ~]# mkdir /var/www/html/163

                    [root@C ~]# echo "This qq.From web C"    >   /var/www/html/qq/index.html        #创建html主页

                    [root@C ~]# echo "This 163.From web C"    >   /var/www/html/163/index.html

             3)重启http服务                           

                     [root@C ~]#  systemctl restart httpd

     

5.关闭防火墙和SeLinux

             为了让实验成功,暂时关闭防火墙和SeLinux

               [root@C ~]# firewall-cmd --set-default-zone=trusted 

               [root@C ~]# setenforce 0

   

6.配置虚拟机B的DNS

               [root@B ~]# echo  "nameserver 192.168.4.7"  >  /etc/resolv.conf

7. 测试

         A:访问www.qq.com,可以看到网址由虚拟机C提供

               

     B:访问www.qq.com,由虚拟机D提供

     

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值