DNS(7) -- 智能DNS实现
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.复杂acl规则定义
acl "ips" { <==定义一个名为ips的ACL
10.0.0.1; 10.0.0.2; 192.168.1.1; <==包含3个单个IP
172.16.1.0/24;
...
}; #2.复杂acl规则定义
acl "all_rule" { <==定义一个名为all_rule的ACL
"ips"; <==可以嵌套包含其他ACL
10.0.15.0/24; <==包含10.0.15.0子网中的所有IP
!10.0.16.1/24; <==非10.0.16.1子网的IP
{10.0.17.1;10.0.18.2;}; <==包含了一个IP组
localhost; <==本地网络接口IP(含实际接口IP和127.0.0.1)
};
1.3 智能DNS实现
1.3.1 bind-view功能
view 语句定义了视图功能,视图是BIND9提供的强大的新功能,允许DNS服务器根据不同的客户端,请求相同的域名,但返回不同的解析结果。
view的语法格式为:
view view_name [class] { <==view为声明关键字 ,后面加上自定义的view名称
match-clients { address_match_list } ; <==匹配的客户端ACL
match-destinations { address_match_list } ; <==匹配访问的目标地址的ACL;
match-recursive-only { yes_or_no } ;
[ view_option; ...]
};
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的配置文件如下:
[root@dns01 named]# cat /etc/named.conf
options {
listen-on port 53 { localhost; };
listen-on-v6 port 53 { localhost; };
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 { any; }; recursion yes;
allow-recursion { 192.168.20.0/24; 192.168.50.0/24; }; allow-transfer {192.168.20.71;};
also-notify {192.168.20.71;}; dnssec-enable yes;
dnssec-validation yes; 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;
};
}; acl "test-env" { <==定义ACL
192.168.20.17;
}; acl "shengchan-env" {
192.168.20.30;
}; view "test-env-view" { <==定义view
match-clients { "test-env"; }; <==匹配客户端地址
zone "xuzhichao.com" IN { <==在view下定义区域配置文件
type master;
file "xuzhichao.com.test.zone";
};
}; view "shengchan-env-view" {
match-clients { "shengchan-env"; };
zone "xuzhichao.com" IN {
type master;
file "xuzhichao.com.shengchan.zone";
};
}; view "default" {
zone "." IN {
type hint;
file "named.ca";
}; include "/etc/named.rfc1912.zones";
include "/etc/named.xuzhichao.com.zone";
}; include "/etc/named.root.key";
区域解析文件如下:
[root@dns01 named]# cat /var/named/xuzhichao.com.shengchan.zone
$TTL 86400 xuzhichao.com. IN SOA ns1.xuzhichao.com. mail.xuzhichao.com. (
2021071603
10800
900
604800
86400
) xuzhichao.com. IN NS ns1.xuzhichao.com.
xuzhichao.com. IN NS ns2.xuzhichao.com. ns1 IN A 192.168.20.70
ns2 IN A 192.168.20.71 xuzhichao.com. IN MX 10 mx1.xuzhichao.com.
mx1 IN A 192.168.20.11 eip.xuzhichao.com. IN A 100.2.2.2 [root@dns01 named]# cat /var/named/xuzhichao.com.test.zone
$TTL 86400 xuzhichao.com. IN SOA ns1.xuzhichao.com. mail.xuzhichao.com. (
2021071603
10800
900
604800
86400
) xuzhichao.com. IN NS ns1.xuzhichao.com.
xuzhichao.com. IN NS ns2.xuzhichao.com. ns1 IN A 192.168.20.70
ns2 IN A 192.168.20.71 xuzhichao.com. IN MX 10 mx1.xuzhichao.com.
mx1 IN A 192.168.20.11 eip.xuzhichao.com. IN A 100.1.1.1 #修改属组和权限:
[root@dns01 named]# chgrp named /var/named/xuzhichao.com.test.zone
[root@dns01 named]# chmod 640 /var/named/xuzhichao.com.test.zone
[root@dns01 named]# chgrp named /var/named/xuzhichao.com.shengchan.zone
[root@dns01 named]# chmod 640 /var/named/xuzhichao.com.shengchan.zone
检测语法,重启bind服务:
[root@dns01 named]# named-checkconf
[root@dns01 named]# named-checkzone xuzhichao.com /var/named/xuzhichao.com.test.zone
zone xuzhichao.com/IN: loaded serial 2021071603
OK
[root@dns01 named]# named-checkzone xuzhichao.com /var/named/xuzhichao.com.shengchan.zone
zone xuzhichao.com/IN: loaded serial 2021071603
OK
使用客户端测试效果:
#1.使用192.168.20.17的客户端进行测试:
[root@xuzhichao ~]# dig eip.xuzhichao.com @192.168.20.70 +short
100.1.1.1 #2.使用192.168.20.30的客户端进行测试:
[root@dns-son ~]# dig eip.xuzhichao.com @192.168.20.70 +short
100.2.2.2
1.3.3 生产场景配置示例
根据不同的运营商地址返回不同的DNS解析结果:
//电信IP访问控制列表
acl "telecomip"{
telecom_IP;
...
};
//联通IP访问控制列表
acl "netcomip"{
netcom_IP;
...
};
view "telecom" {
match-clients { "telecomip"; };
zone "ZONE_NAME" IN {
type master;
file "ZONE_NAME.telecom.zone";
};
};
view "netcom" {
match-clients { "netcomip"; };
zone "ZONE_NAME" IN {
type master;
file "ZONE_NAME.netcom.zone";
};
};
view "default" {
match-clients { any; };
zone "ZONE_NAME" IN {
type master;
file "ZONE_NAME.zone";
};
};
DNS(7) -- 智能DNS实现的更多相关文章
- 智能DNS
DNS查找下一个服务的地址 一.智能DNS APP通过域名访问DNS服务器,DNS根据域名对应一组IP中随机选择一个,发给APP.从这个意义说智能DNS,智能DNS相当一个七层的负载均衡. 二.H ...
- DNS中的AC、rndc、智能DNS解析和基础排错
bind中的ACL和rndc DNS除了服务器外,还具有一些访问控制和视图功能. 访问控制是指仅对定义的网络进行解析,视图也就是智能解析. 1>访问控制是通过acl函数来实现的,acl把一个或多 ...
- DNS原理和智能DNS及CDN
CDN是什么 CDN(Content Delivery Network)是内容分发网络. 作用: 使用户可以就近取的所需要的内容,加速用户访问网站资源的速度.物理距离更近,响应速度更快.拦截部分网络请 ...
- C#实现DNS解析服务和智能DNS服务
C#实现DNS解析服务有一个开源项目ARSoft.Tools.Net, ARSoft.Tools.Net是一个非常强大的开源DNS控件库,包含.Net SPF validation, SenderID ...
- 烂泥:智能DNS使用与配置
本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 公司的业务现在已经扩展到海外,对外提供的统一接口都是通过域名来解析的,但是海外用户访问国 ...
- 简单介绍智能DNS解析+双线路接入
导读:在讨论这个问题,其中群友老孤同志也提供了不少非常有参考价值的资料,所以我们再把这些资料再整理一次,从比较底层的技术原理上重新进行一次分析. 我们知道,因为南电信北网通现象的存在,我们的服务器 ...
- 才知道百度也提供了智能DNS服务 - 加速乐
http://jiasule.baidu.com/ 智能DNS 依托百度多年积累的高精度DNS识别库,平均只需5秒全球DNS服务器全部生效,百度蜘蛛1秒生效.抗攻击.无限解析记录,免费支持电信.联通. ...
- 什么是智能dns解析
智能DNS解析是针对目前电信和网通互联互通不畅的问题推出的一种DNS解决方案.具体实现是:把同样的域名如test.winiis.com的A记录分别设置指向网通和电信IP,当网通的客户访问时,智能DNS ...
- DNS加速之“智能DNS”跟“双线加速”、“CDN加速”的区别
“智能DNS”跟“双线加速”.“CDN加速”的区别相信,很大部分IDC用户可能还没弄清楚状况,有人觉得智能DNS跟双线加速.CDN加速是类似的技术.其实不然,它们在工作方式上有着本质的区别,但它们又可 ...
- DNS—正、反向解析;委派;主从;子域;转发;智能dns等的实现
前言:DNS,耳熟能详的东西,内容太多,小编也不太好讲清,只能写几个实验详解,供大家参考. 一.简单介绍 1.DNS:通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析). 端 ...
随机推荐
- Chrome浏览器安装离线插件Markdown Here
前言 近期刚开通了微信公众号,想在上面发表一些自己的文章,由于排版问题很浪费时间,公众号后台本身不支持Markdown语法,所以就需要利用Markdown Here插件使得公众号后台支持Markdow ...
- linux 查看磁盘空间命令
一. df -h 显示当前磁盘挂载(包含剩余空间)情况 二. cd 到大容量的路径下使用命令 [root@hadoop102 /]# du -sh *|sort -n 三. 循环这个过程
- #二分图,并查集#洛谷 6185 [NOI Online #1 提高组] 序列
题目 分析 考虑2操作可以在保证总和不变的情况下任意修改, 如果将2操作所在的连通块用并查集缩点,那么再考虑1操作, 按照1操作建边,如果存在奇环,那么只要这个环的点权和为偶数一定能使 \(a,b\) ...
- #KMP,dp#洛谷 3426 [POI2005]SZA-Template
题目 给定一个字符串\(S\),字符串可以理解成一条每个字母代表一种颜色的线段, 找到一个长度最小的串\(T\),使得在若干位置放置\(T\)后使得字符串被完全覆盖 分析 显然它要么取\(i\),要么 ...
- Java 日期和时间 API:实用技巧与示例 - 轻松处理日期和时间
Java 用户输入(Scanner) 简介 Scanner 类用于获取用户输入,它位于 java.util 包中. 使用 Scanner 类 要使用 Scanner 类,请执行以下步骤: 导入 jav ...
- 如何使用 Grafana 监控文件系统状态
当 JuiceFS 文件系统部署完成并投入生产环境,接下来就需要着手解决一个非常重要的问题 -- 如何实时监控它的运行状态?毕竟,它可能正在为关键的业务应用或容器工作负载提供持久化存储支持,任何小小的 ...
- Android 开发入门(5)
0x07 数据存储 (1)共享参数 SharedPreferences a. 用法 用法 SharedPreferences 是 Android 的一个轻量级存储工具,采用的存储结构为键值对的方式 共 ...
- Mysql系列:Mysql5.7编译安装--系统环境:Centos7 / CentOS9 Stream
Mysql系列:Mysql5.7编译安装 系统环境:Centos7 / CentOS9 Stream 1:下载mysql源码包 https://dev.mysql.com/downloads/mysq ...
- linux下升级openssh参考[不建议采用此法安装]
本人不见一采用这种方法安装,只是当遇到问题时候有一定的参考意义,所以贴了上来.建议使用yum方式安装,详见在下另一篇博文: http://blog.csdn.net/lqzixi/article/de ...
- 报表输入页码翻页(润乾 V2018)
报表数据分了太多页,一页一页翻页查看数据嫌麻烦,可以试试这种翻页效果--输入页码翻页. 润乾报表提供了翻页相关的 JS 函数,可以在报表展现的页面中添加 JS 调用翻页函数实现输入页码跳转到对应页. ...