1. 智能DNS

1.1 智能DNS概述

智能DNS就是根据用户的来源地域,自动智能化判断来路IP返回给用户,而不需要用户进行选择。

  • 智能DNS实现的主要功能:

    • 可以根据用户来路和运营商智能判断最优访问线路;
    • 服务器故障自动替换宕机节点,保障最优访问线路;
    • 负载均衡:对于流量比较大的网站,可以把流量分配到几台不同的服务器上,以提高网站速度;
  • 比方一个企业的站点三个运营商的带宽都有:电信、联通、移动;同样来自三个不同 运营商网络的访问用户,假设电信用户访问企业网址的时候,智能DNS会自动根据IP判断,再从电信返回给电信用户,其他的也同理;

    • 电信用户:访问 www.sina.com 返回 1.1.1.1;

    • 联通用户:访问 www.sina.com 返回 2.2.2.2;

    • 移动用户:访问 www.sina.com 返回 3.3.3.3;

1.2 ACL控制列表

acl:访问控制列表;把一个或多个地址归并一个命名的集合,随后通过此名称即可对此集全内的所有主机实现统一调用;

  • bind内置了四个四种ACL

    • any :允许所有主机节点查询;

    • none :拒绝所有主机节点查询;

    • localhost :仅允许本地接口网络主机查询;

    • localnet :本地子网所有IP;

  • 也可以自定义ACL规则,示例如下:

    1. #1.复杂acl规则定义
    2. acl "ips" { <==定义一个名为ipsACL
    3. 10.0.0.1; 10.0.0.2; 192.168.1.1; <==包含3个单个IP
    4. 172.16.1.0/24;
    5. ...
    6. };
    7. #2.复杂acl规则定义
    8. acl "all_rule" { <==定义一个名为all_ruleACL
    9. "ips"; <==可以嵌套包含其他ACL
    10. 10.0.15.0/24; <==包含10.0.15.0子网中的所有IP
    11. !10.0.16.1/24; <==非10.0.16.1子网的IP
    12. {10.0.17.1;10.0.18.2;}; <==包含了一个IP
    13. localhost <==本地网络接口IP(含实际接口IP127.0.0.1
    14. };

1.3 智能DNS实现

1.3.1 bind-view功能

view 语句定义了视图功能,视图是BIND9提供的强大的新功能,允许DNS服务器根据不同的客户端,请求相同的域名,但返回不同的解析结果。

view的语法格式为:

  1. view view_name [class] { <==view为声明关键字 ,后面加上自定义的view名称
  2. match-clients { address_match_list } ; <==匹配的客户端ACL
  3. match-destinations { address_match_list } ; <==匹配访问的目标地址的ACL
  4. match-recursive-only { yes_or_no } ;
  5. [ view_option; ...]
  6. };

view的功能的主要事项如下:

  • 一个bind服务器可定义多个view,每个view中可定义一个或多个zone;
  • 每个view用来匹配一组客户端;
  • 多个view内可能需要对同一个区域进行解析,但使用不同的区域解析库文件;
  • 一旦启用了view,所有的zone都只能定义在view中,否则会失效;
  • 仅在允许递归请求的客户端所在view中定义根区域;
  • 客户端请求到达时,是自上而下检查每个view所服务的客户端列表;

1.3.2 智能DNS场景实现

  • 目标:

    • 客户端192.168.20.17请求域名eip.xuzhichao.com是解析到地址100.1.1.1;
    • 客户端192.168.20.30请求域名eip.xuzhichao.com是解析到地址100.2.2.2;
  • bind的配置文件如下:

    1. [root@dns01 named]# cat /etc/named.conf
    2. options {
    3. listen-on port 53 { localhost; };
    4. listen-on-v6 port 53 { localhost; };
    5. directory "/var/named";
    6. dump-file "/var/named/data/cache_dump.db";
    7. statistics-file "/var/named/data/named_stats.txt";
    8. memstatistics-file "/var/named/data/named_mem_stats.txt";
    9. recursing-file "/var/named/data/named.recursing";
    10. secroots-file "/var/named/data/named.secroots";
    11. allow-query { any; };
    12. recursion yes;
    13. allow-recursion { 192.168.20.0/24; 192.168.50.0/24; };
    14. allow-transfer {192.168.20.71;};
    15. also-notify {192.168.20.71;};
    16. dnssec-enable yes;
    17. dnssec-validation yes;
    18. bindkeys-file "/etc/named.root.key";
    19. managed-keys-directory "/var/named/dynamic";
    20. pid-file "/run/named/named.pid";
    21. session-keyfile "/run/named/session.key";
    22. };
    23. logging {
    24. channel default_debug {
    25. file "data/named.run";
    26. severity dynamic;
    27. };
    28. };
    29. acl "test-env" { <==定义ACL
    30. 192.168.20.17;
    31. };
    32. acl "shengchan-env" {
    33. 192.168.20.30;
    34. };
    35. view "test-env-view" { <==定义view
    36. match-clients { "test-env"; }; <==匹配客户端地址
    37. zone "xuzhichao.com" IN { <==在view下定义区域配置文件
    38. type master;
    39. file "xuzhichao.com.test.zone";
    40. };
    41. };
    42. view "shengchan-env-view" {
    43. match-clients { "shengchan-env"; };
    44. zone "xuzhichao.com" IN {
    45. type master;
    46. file "xuzhichao.com.shengchan.zone";
    47. };
    48. };
    49. view "default" {
    50. zone "." IN {
    51. type hint;
    52. file "named.ca";
    53. };
    54. include "/etc/named.rfc1912.zones";
    55. include "/etc/named.xuzhichao.com.zone";
    56. };
    57. include "/etc/named.root.key";
  • 区域解析文件如下:

    1. [root@dns01 named]# cat /var/named/xuzhichao.com.shengchan.zone
    2. $TTL 86400
    3. xuzhichao.com. IN SOA ns1.xuzhichao.com. mail.xuzhichao.com. (
    4. 2021071603
    5. 10800
    6. 900
    7. 604800
    8. 86400
    9. )
    10. xuzhichao.com. IN NS ns1.xuzhichao.com.
    11. xuzhichao.com. IN NS ns2.xuzhichao.com.
    12. ns1 IN A 192.168.20.70
    13. ns2 IN A 192.168.20.71
    14. xuzhichao.com. IN MX 10 mx1.xuzhichao.com.
    15. mx1 IN A 192.168.20.11
    16. eip.xuzhichao.com. IN A 100.2.2.2
    17. [root@dns01 named]# cat /var/named/xuzhichao.com.test.zone
    18. $TTL 86400
    19. xuzhichao.com. IN SOA ns1.xuzhichao.com. mail.xuzhichao.com. (
    20. 2021071603
    21. 10800
    22. 900
    23. 604800
    24. 86400
    25. )
    26. xuzhichao.com. IN NS ns1.xuzhichao.com.
    27. xuzhichao.com. IN NS ns2.xuzhichao.com.
    28. ns1 IN A 192.168.20.70
    29. ns2 IN A 192.168.20.71
    30. xuzhichao.com. IN MX 10 mx1.xuzhichao.com.
    31. mx1 IN A 192.168.20.11
    32. eip.xuzhichao.com. IN A 100.1.1.1
    33. #修改属组和权限:
    34. [root@dns01 named]# chgrp named /var/named/xuzhichao.com.test.zone
    35. [root@dns01 named]# chmod 640 /var/named/xuzhichao.com.test.zone
    36. [root@dns01 named]# chgrp named /var/named/xuzhichao.com.shengchan.zone
    37. [root@dns01 named]# chmod 640 /var/named/xuzhichao.com.shengchan.zone
  • 检测语法,重启bind服务:

    1. [root@dns01 named]# named-checkconf
    2. [root@dns01 named]# named-checkzone xuzhichao.com /var/named/xuzhichao.com.test.zone
    3. zone xuzhichao.com/IN: loaded serial 2021071603
    4. OK
    5. [root@dns01 named]# named-checkzone xuzhichao.com /var/named/xuzhichao.com.shengchan.zone
    6. zone xuzhichao.com/IN: loaded serial 2021071603
    7. OK
  • 使用客户端测试效果:

    1. #1.使用192.168.20.17的客户端进行测试:
    2. [root@xuzhichao ~]# dig eip.xuzhichao.com @192.168.20.70 +short
    3. 100.1.1.1
    4. #2.使用192.168.20.30的客户端进行测试:
    5. [root@dns-son ~]# dig eip.xuzhichao.com @192.168.20.70 +short
    6. 100.2.2.2

1.3.3 生产场景配置示例

根据不同的运营商地址返回不同的DNS解析结果:

  1. //电信IP访问控制列表
  2. acl "telecomip"{
  3. telecom_IP;
  4. ...
  5. };
  6. //联通IP访问控制列表
  7. acl "netcomip"{
  8. netcom_IP;
  9. ...
  10. };
  11. view "telecom" {
  12. match-clients { "telecomip"; };
  13. zone "ZONE_NAME" IN {
  14. type master;
  15. file "ZONE_NAME.telecom.zone";
  16. };
  17. };
  18. view "netcom" {
  19. match-clients { "netcomip"; };
  20. zone "ZONE_NAME" IN {
  21. type master;
  22. file "ZONE_NAME.netcom.zone";
  23. };
  24. };
  25. view "default" {
  26. match-clients { any; };
  27. zone "ZONE_NAME" IN {
  28. type master;
  29. file "ZONE_NAME.zone";
  30. };
  31. };

DNS(7) -- 智能DNS实现的更多相关文章

  1. 智能DNS

    DNS查找下一个服务的地址   一.智能DNS APP通过域名访问DNS服务器,DNS根据域名对应一组IP中随机选择一个,发给APP.从这个意义说智能DNS,智能DNS相当一个七层的负载均衡. 二.H ...

  2. DNS中的AC、rndc、智能DNS解析和基础排错

    bind中的ACL和rndc DNS除了服务器外,还具有一些访问控制和视图功能. 访问控制是指仅对定义的网络进行解析,视图也就是智能解析. 1>访问控制是通过acl函数来实现的,acl把一个或多 ...

  3. DNS原理和智能DNS及CDN

    CDN是什么 CDN(Content Delivery Network)是内容分发网络. 作用: 使用户可以就近取的所需要的内容,加速用户访问网站资源的速度.物理距离更近,响应速度更快.拦截部分网络请 ...

  4. C#实现DNS解析服务和智能DNS服务

    C#实现DNS解析服务有一个开源项目ARSoft.Tools.Net, ARSoft.Tools.Net是一个非常强大的开源DNS控件库,包含.Net SPF validation, SenderID ...

  5. 烂泥:智能DNS使用与配置

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 公司的业务现在已经扩展到海外,对外提供的统一接口都是通过域名来解析的,但是海外用户访问国 ...

  6. 简单介绍智能DNS解析+双线路接入

    导读:在讨论这个问题,其中群友老孤同志也提供了不少非常有参考价值的资料,所以我们再把这些资料再整理一次,从比较底层的技术原理上重新进行一次分析.   我们知道,因为南电信北网通现象的存在,我们的服务器 ...

  7. 才知道百度也提供了智能DNS服务 - 加速乐

    http://jiasule.baidu.com/ 智能DNS 依托百度多年积累的高精度DNS识别库,平均只需5秒全球DNS服务器全部生效,百度蜘蛛1秒生效.抗攻击.无限解析记录,免费支持电信.联通. ...

  8. 什么是智能dns解析

    智能DNS解析是针对目前电信和网通互联互通不畅的问题推出的一种DNS解决方案.具体实现是:把同样的域名如test.winiis.com的A记录分别设置指向网通和电信IP,当网通的客户访问时,智能DNS ...

  9. DNS加速之“智能DNS”跟“双线加速”、“CDN加速”的区别

    “智能DNS”跟“双线加速”.“CDN加速”的区别相信,很大部分IDC用户可能还没弄清楚状况,有人觉得智能DNS跟双线加速.CDN加速是类似的技术.其实不然,它们在工作方式上有着本质的区别,但它们又可 ...

  10. DNS—正、反向解析;委派;主从;子域;转发;智能dns等的实现

    前言:DNS,耳熟能详的东西,内容太多,小编也不太好讲清,只能写几个实验详解,供大家参考. 一.简单介绍 1.DNS:通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析). 端 ...

随机推荐

  1. 探索Django REST框架构建强大的API

    本文分享自华为云社区<探索Django REST框架构建强大的API>,作者:柠檬味拥抱. 在当今的Web开发中,构建强大的API已经成为了不可或缺的一部分.而在Python领域,Djan ...

  2. #树形dp,树链剖分#CF442D Adam and Tree

    题目 初始有一个点 1,每次新加入点 \(2\sim n+1\),给这条边染上新的颜色, 并且一种颜色只能出现在一条路径上,使得每个点到根节点的路径上颜色种类数尽量少 每次询问输出每个点到根节点路径上 ...

  3. van-cell如何使用插槽

    van-cell 是 Vant 组件库中的一个单元格组件,用于展示列表中的信息.Vant 是一个轻量.可靠的移动端 Vue 组件库. 在 Vant 中,van-cell 组件提供了多个插槽(slot) ...

  4. 准备Python环境学习OpenCV的使用

    安装venv模块,执行如下命令: sudo apt-get install python3-venv 创建venv环境,命名为images,执行如下命令: python3 -m venv images ...

  5. CSP-S初赛知识点(持久更新)

    先更新这么多,以后再说吧 AK IOI 排序算法 算法名称 平均复杂度 最好情况 最坏情况 空间复杂度 排序方式 稳定性 冒泡排序 \(O(N^2)\) \(O(N)\) \(O(N^2)\) \(O ...

  6. 【FAQ】推送前台应用的通知处理功能没生效,如何进行排查?

    一.前台应用的通知处理简介 在调用推送接口时可以设置"foreground_show"字段控制前台应用的通知栏消息是否通过NC展示."foreground_show&qu ...

  7. 详解Java Chassis 3与Spring Cloud的互操作

    本文分享自华为云社区<Java Chassis 3技术解密:与Spring Cloud的互操作>,作者: liubao68. Java Chassis 3一个很重要的设计原则:利用架构的韧 ...

  8. 知识图谱在RAG中的应用探讨

    在这篇文章中,我们来详细探讨知识图谱(KG)在RAG流程中的具体应用场景. 缘起 关于知识图谱在现在的RAG中能发挥出什么样的作用,之前看了360 刘焕勇的一个分享,简单的提了使用知识图谱增强大模型的 ...

  9. 大型场景中通过监督视图贡献加权进行多视图人物检测 Multi-View People Detection in Large Scenes via Supervised View-Wise Contribution Weighting

    Multi-View People Detection in Large Scenes via Supervised View-Wise Contribution Weighting 大型场景中通过监 ...

  10. 论文记载: Deep Reinforcement Learning for Traffic LightControl in Vehicular Networks

    强化学习论文记载 论文名: Deep Reinforcement Learning for Traffic LightControl in Vehicular Networks ( 车辆网络交通信号灯 ...