07-DNS服务项目实战-02

智能DNS

GSLB

  • GSLB:Global Server Load Balance全局负载均衡
  • GSLB是对服务器和链路进行综合判断来决定由哪个地点的服务器来提供服务,实现异地服务器群服务质量的保证
  • GSLB主要的目的是在整个网络范围内将用户的请求定向到离用户最近的节点(或者区域)
  • GSLB分为基于DNS实现、基于重定向实现、基于路由协议实现,其中最通用的是基于DNS解析方式 

CDN (Content Delivery Network)内容分发网络

CDN工作原理

1. 用户向浏览器输入www.a.com这个域名,浏览器第一次发现本地没有dns缓存,则向网站的DNS服务器请求
2. 网站的DNS域名解析器设置了CNAME,指向了www.a.tbcdn.com,请求指向了CDN网络中的智能DNS负载均衡系统
3. 智能DNS负载均衡系统解析域名,把对用户响应速度最快的IP节点返回给用户;
4. 用户向该IP节点(CDN服务器)发出请求
5. 由于是第一次访问,CDN服务器会通过Cache内部专用DNS解析得到此域名的原web站点IP,向原站点服务器发起请求,并在CDN服务器上缓存内容
6. 请求结果发给用户

CDN服务商 

服务商:阿里,腾讯,蓝汛,网宿,帝联等
智能DNS: dnspod dns.la

智能DNS相关技术

bind中ACL

  • ACL:把一个或多个地址归并为一个集合,并通过一个统一的名称调用
  • 注意:只能先定义后使用;因此一般定义在配置文件中,处于options的前面 
#格式
acl acl_name {
 ip;
 net/prelen;
 ……
};

#范例
acl beijingnet {
 172.16.0.0/16;
 10.10.10.10;
};

bind有四个内置的acl 

  • none 没有一个主机
  • any 任意主机
  • localhost 本机
  • localnet 本机的IP同掩码运算后得到的网络地址

访问控制的指令

  • allow-query {}: 允许查询的主机;白名单
  • allow-transfer {}:允许区域传送的主机;白名单
  • allow-recursion {}: 允许递归的主机,建议全局使用
  • allow-update {}: 允许更新区域数据库中的内容

View:视图

  • 将ACL和区域数据库实现对应关系,以实现智能DNS
  • 一个bind服务器可定义多个view,每个view中可定义一个或多个zone
  • 每个view用来匹配一组客户端
  • 多个view内可能需要对同一个区域进行解析,但使用不同的区域解析库文件 
  • 注意:
    • 一旦启用了view,所有的zone都只能定义在view中
    • 仅在允许递归请求的客户端所在view中定义根区域
    • 客户端请求到达时,是自上而下检查每个view所服务的客户端列表 

view格式

view VIEW_NAME {
   match-clients { beijingnet; };
   zone "chengzi.org" {
   type master;
   file "chengzi.org.zone.bj"; 
 };
include "/etc/named.rfc1912.zones";
};
view VIEW_NAME {
   match-clients { shanghainet; };
   zone "changzi.org" {
   type master;
   file "chengzi.org.zone.sh"; 
 };
include "/etc/named.rfc1912.zones";
};

实战案例:利用view实现智能DNS

环境要求 

#需要五台主机,所有机器关闭防火墙、selinux
DNS主服务器和web服务器1:192.168.56.11/24172.17.0.11/16
web服务器2:192.168.56.12/24
web服务器3:172.17.0.7/16
DNS客户端1:192.168.56.6/24 
DNS客户端2:172.17.0.6/16

实验步骤

  • DNS服务器网卡配置
#DNS服务器配置两个IP地址
#eth0:192.168.56.11/24
#eth1: 172.17.0.11/16
  • 主DNS服务端配置文件实现 view
[21:05:43 root@admin-dns /etc/sysconfig/network-scripts]# egrep -v "^/" /etc/named.conf 
acl beijingnet {
    192.168.56.0/24;
};
acl shanghainet {
    172.17.0.0/16;
};
acl othernet {
    any;
};
options {
        // listen-on port 53 { 127.0.0.1; };
        // listen-on port 53 { 127.0.0.1;192.168.0.0/24; };
        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";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        // allow-query     { localhost; };
        allow-query     { any; };
        // allow-transfer { 192.168.56.123;192.168.56.28; };

        recursion yes;
        dnssec-enable no;//关闭认证
        dnssec-validation no;//关闭认证

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.root.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;
        };
};
#zone "." IN {
#       type hint;
#       file "named.ca";
#};
view beijingview {
    match-clients { beijingnet; };
    include "/etc/named.rfc1912.zones.bj";
};
view shanghaiview {
    match-clients { shanghainet; };
    include "/etc/named.rfc1912.zones.sh";
};
view otherview {
    match-clients { othernet; };
    include "/etc/named.rfc1912.zones.other";
};
  •  主DNS服务端实现区域配置文件
[21:15:04 root@admin-dns ~]# cat /etc/named.rfc1912.zones.bj    
zone "." IN {
    type hint;
    file "named.ca";
};
zone "chengzi.org" {
    type master;
    file "chengzi.org.zone.bj";
};
[21:15:08 root@admin-dns ~]# cat /etc/named.rfc1912.zones.sh    
zone "." IN {
    type hint;
    file "named.ca";
};
zone "chengzi.org" {
    type master;
    file "chengzi.org.zone.sh";
};
[21:15:10 root@admin-dns ~]# cat /etc/named.rfc1912.zones.other 
zone "." IN {
    type hint;
    file "named.ca";
};
zone "chengzi.org" {
    type master;
    file "chengzi.org.zone.other";
};

#修改权限
chgrp named /etc/named.rfc1912.zones.*
  • 主DNS服务器创建区域数据库文件
[21:15:11 root@admin-dns ~]# cat /var/named/chengzi.org.zone.bj 
$TTL 1D
@       IN SOA  master.chengzi.org. admin.chengzi.org. (
                             052417     ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
          NS   master.chengzi.org.
master    A        192.168.56.11
www       CNAME websvr
websvr    A     192.168.56.12 
[21:16:56 root@admin-dns ~]# cat /var/named/chengzi.org.zone.sh
$TTL 1D
@       IN SOA  master.chengzi.org. admin.chengzi.org. (
                             052417     ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
          NS   master.chengzi.org.
master    A        192.168.56.11
www       CNAME websvr
websvr    A     172.17.0.35 
[21:16:58 root@admin-dns ~]# cat /var/named/chengzi.org.zone.other 
$TTL 1D
@       IN SOA  master.chengzi.org. admin.chengzi.org. (
                             052417     ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
          NS   master.chengzi.org.
master    A        192.168.56.11
www       CNAME websvr
websvr    A     127.0.0.1
  • 测试不同区域的三个WEB服务器
分别在三台主机上安装http服务
#web服务器1:192.168.56.11/24实现
yum install httpd                        
echo “Welcome to www.chengzi.org Other” > /var/www/html/index.html
systemctl start httpd
#web服务器2:
192.168.56.12/24 echo “Welcome to www.chengzi.org beijing” > /var/www/html/index.html systemctl start httpd
#web服务器3:
172.16.0.35/16 yum install httpd                         echo "Welcome to www.chengzi.org Shanghai" > /var/www/html/index.html systemctl start httpd

  

 

相关技术问题:

  • DNS工作原理
  • 递归和迭代查询的区别
  • DNS 什么时候使用 53/tcp 和 53/udp,953/tcp
    • tcp53:区域传输
    • udp53:查询和区域传输【主从同步】
  • CDN工作原理

 

posted @ 2022-05-24 00:27  西瓜的春天  阅读(24)  评论(0)    收藏  举报