精华内容
下载资源
问答
  • 曲奇智能DNS解析系统(CookyDNS)(以下简称CookyDNS)提供域名授权解析服务,他是完全自主开发的DNS服务器软件,不是BIND或这NSD之类的DNS软件的修改产品,可以快速简单安装,配置简单、并且有设置向导和安装程序、...
  • 本文采用子空间方法和PCA(主成分分析或Principal Components Analysis)对大规模网络流量异常检测进行研究,并以校园网为实验环境,应用子空间方法和PCA实现了网络流量异常检测。通过实验结果与小波分析结果的对比...
  • 实易智能DNS系统是由实易数码历经三年,自主研发的一套嵌入式智能DNS集成管理系统。 她是一个嵌入式整体系统,基于坚如磐石的FreeBSD系统和最流行的DNS软件bind,有着友好易用的WEB管理界面和强大的区域管理功能。...
  • 实现智能DNS

    千次阅读 2020-09-15 09:43:16
    文章目录1 实现智能DNS1.1 GSLB1.2 CDN(Content Delivery Network)内容分发网络1.2.1 CDN工作原理1.3 智能DNS相关技术1.3.1 bind中ACL1.3.2 bind有四个内置的acl1.3.3 访问控制的指令1.3.4 view视图1.3.4.1 view:...

    1 实现智能DNS

    在这里插入图片描述

    1.1 GSLB

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

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

    在这里插入图片描述

    1.2.1 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服务器上缓存内容

    1.3 智能DNS相关技术

    1.3.1 bind中ACL

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

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

    1.3.2 bind有四个内置的acl

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

    1.3.3 访问控制的指令

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

    1.3.4 view视图

    1.3.4.1 view:视图,将ACL和区域数据库实现对应关系,以实现智能DNS

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

    1.3.4.2 view格式

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

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

    1.4.1 实验目的

    搭建DNS主从服务器架构,实现DNS服务冗余
    

    1.4.2 环境要求

    需要五台主机
    DNS主服务器和web服务器1:10.0.0.8/24,172.16.0.8/16
    web服务器2:10.0.0.7/24
    web服务器3:172.16.0.7/16
    DNS客户端1:10.0.0.6/24
    DNS客户端2:172.16.0.6/16
    

    1.4.3 前提准备

    关闭SELinux
    关闭防火墙
    时间同步
    

    1.4.4 实现步骤

    1.4.4.1 DNS服务器的网卡配置

    #配置两个IP地址
    #eth0:10.0.0.8/24
    #eth1:172.16.0.8/16
    

    1.4.4.2 主DNS服务器端配置文件实现view

    yum -y install bind
    vim /etc/name.conf
    #在文件最前面加下面行
    acl beijingnet {
    	10.0.0.0/24;
    };
    acl shanghainet {
    	172.16.0.0/16;
    };
    acl othernet {
    	any;
    };
    
    注释掉下面两行
    // listen-on port 53 { 127.0.0.1; };
    //allow-query { localhost; };
    
    #其他略
    
    #创建view
    view beijingview {
    	match-clients { beijingnet; };
    	include "/etc/named.rfc1912.zones.beijing";
    };
    view shanghaiview {
    	match-clients { shanghainet; };
    	include "/etc/named.rfc1912.zones.shanghai";
    };
    view otherview {
    	macth-clients { othernet; };
    	include "/etc/named.rfc1912.zones.other";
    };
    include "/etc/named.root.key";
    

    1.4.4.3 实现区域配置文件

    vim /etc/named.rfc1912.zones.beijing
    zone "." IN {
    	type hint;
    	file "name.ca";
    };
    zone "kobe.local" IN {
    	type master;
    	file "kobe.local.zone.beijing";
    };
    
    vim /etc/named.rfc1912.zones.shanghai
    zone "." IN {
    	type hint;
    	file "named.ca";
    };
    zone "kobe.local" IN {
    	type master;
    	file "kobe.local.zone.shanghai";
    };
    
    vim /etc/named.rfc1912.zones.other
    zone "." IN {
    	type hint;
    	file "named.ca";
    };
    zone "kobe.local" {
    	type master;
    	file "kobe.local.zone.other";
    };
    
    chgrp named /etc/named.rfc1912.zones.beijing
    chgrp named /etc/named.rfc1912.zones.shanghai
    chgrp named /etc/named.rfc1912.zones.other
    

    1.4.4.4 创建区域数据文件

    vim /var/named/kobe.local.zone.beijing
    $TTL 1D
    @	IN	SOA	master		admin.kobe.local. (
    		1		; serial
    		1D	; refresh
    		1H	; retry
    		1W	; expire
    		3H ) ; minimum
    				NS	master
    master		A	10.0.0.8
    websrv		A	10.0.0.7
    www		CNAME websrv
    
    vim /var/named/kobe.local.zone.shanghai
    $TTL 1D
    @	IN	SOA	master		admin.kobe.local. (
    			1
    			1D
    			1H
    			1W
    			3H )
    				NS 	master
    master		A		10.0.0.8
    websrv		A		172.16.0.7
    www		CNAME	websrv
    
    vim /etc/named/kobe.local.zone.other
    $TTL 1D
    @	IN	SOA	master		admin.kobe.local. (
    				1
    				1D
    				1H
    				1W
    				3H )
    					NS	master
    master			A		10.0.0.8
    websrv 		A		127.0.0.1
    www			CNAME	websrv
    
    chgrp named /var/named/kobe.local.zone.beijing
    chgrp named /var/named/kobe.local.zone.shanghai
    chgrp named /var/namde/kobe.local.zone.other
    
    systemctl start named
    rndc reload
    

    1.4.4.5 实现位于不同区域的三个WEB服务器

    #分别在三台主机上安装http服务
    #在web服务器1:10.0.0.8/24实现
    yum -y install httpd
    echo www.kobe.local in other > /var/www/html/index.html
    systemctl start httpd
    #在web服务器2:10.0.0.7/16
    echo www.kobe.local in beijing > /var/www/html/index.html
    systemctl start httpd
    #在web服务器3:172.16.0.7/16
    yum -y install httpd
    echo www.kobe.local in shanghai > /var/www/html/index.html
    systemctl start httpd
    

    1.4.4.6 客户端测试

    #分别在三台主机上访问
    #DNS客户端1:10.0.0.6/24 实现,确保DNS指向10.0.0.8
    curl www.kobe.local
    www.kobe.local in beijing
    #DNS客户端2:172.16.0.6/16 实现,确保DNS指向172.16.0.8
    curl www.kobe.local
    www.kobe.local in shanghai
    #DNS客户端3:10.0.0.8 实现,确保DNS指向127.0.0.1
    curl www.kobe.local
    www.kobe.local in other
    
    展开全文
  • 2,该软件最大的优点是首创DNS双线智能解析功能,是目前解决网通、电信、铁通及其他网络的互通问题的最有效方法,同一个域名可以让网通、电信及其他线路的客户ping出来的完全不同IP,就近访问站点。 3,支持中文域名...
  • 产品介绍 嵌入式操作系统,升级简单容易 完全WEB界面操作管理,友好易用 支持多级管理员,不同的管理员可以分配不同的权限 多线路解析(默认电信、网通、教育网线路,千多个IP段) 支持多种纪录类型(A,CNAME,MX,NS,...
  • 深信服_应用交付AD_入站智能DNS负载均衡解决方案.pdf
  • ZHDNS免费智能DNS系统

    2013-03-14 00:35:59
    ZHDNS智能DNS系统,无限解析,多线路负载均衡,几分钟解析生效,支持A\CNAME\MX\TXT记录.
  • 目前智能DNS的实现主要有两种方式,一种是使用F5公司的BIG-IP GTM,另一种是使用bind自带的view来实现。BIG-IP GTM是一款商业产品,功能、性能极为强大,但是由于价格昂贵,中小型企业基本不会考虑花巨资购买此产品...
  • DNS 域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。 简单的来说,就是平时我们访问某一个网站输入的是一个...

    DNS

    域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。

    简单的来说,就是平时我们访问某一个网站输入的是一个域名,如:www.taobao.com,而不会去输入一个IP来访问淘宝网站,一个比较简单的原因就是,IP我们很难记得住咯。
    DNS就是将域名转化成IP的一个解析过程,这样说是有一点简单,因为其中还是有很多的技术,原理等来实现在这个过程。
    域名和IP地址相互映射的一个分布式数据库。通过这个DNS解析来找到用户输入的域名所对应的IP地址。
    那么DNS解析的过程是怎样的呢?

    DNS解析过程
    • 1.浏览器中输入一个域名,浏览器先检查自身的域名缓存。如果没有
    • 2.浏览器检查操作系统自身的域名缓存,有的话直接返回对应IP。如果没有
    • 3.会找到系统中的hosts文件(windows下面:C:\Windows\System32\drivers\etc),看该文件中是否有对应的配置,有则返回。如无
    • 4.从本地的DNS服务器(LDNS,一般在你所在城市的某个地方,大部分域名解析结果都会缓存在这里)去查找,看域名对应的IP是什么,如果有返回。如无
    • 5.从ISP运营商(电信,联通等)的DNS服务器查找(规模大),同理返回命中IP或继续查找
    • 6.这时候会返回给本地DNS服务器(LDNS)一个根域的服务器地址,全球只有13台根域服务器,都在海外(美国)等地。这时候会返回你访问的域名的顶级域名对应的解析的服务器是什么,如www.abcd.com顶级域名就是.com,这时候.com域名对应服务器肯定能找到abcd.com这个二级域名对应的能解析它的服务器地址,拿到这个解析地址后,再去ISP服务商那里查找www.abcd.com这个三级域名对应的服务器IP地址

    整个过程是比较长的,如果某次访问某个新的域名很慢,不一定是网络原因,也许是全部没有命中执行了整个解析过程导致耗时较久。

    智能DNS

    什么是智能DNS:智能DNS可以让用户访问到同线路的最近的服务器
    智能DNS,智能的地方是能够匹配用户的线路(电信 联通)以及位置,比如:CDN(下面会写详细讲一个CDN应用)服务在全国有很多节点,也可以支持很多的线路,实现了智能DNS解析,它就能够去匹配用户的IP找到用户的ip所在的线路,位置。

    主要的点就是,这个智能DNS系统内置了一整套很全的的ip库,可以快速分析用户ip对应的信息,国家城市街道,线路是什么,就知道用户是哪里的用户,就会在CDN的网络节点里面找对应的节点,比如深圳,再找离深圳最近的一个节点IP,智能DNS解析也能够有效保证CDN加速的效果

    举一个例子:
    阿里云域名解析配置主机IP以及解析线路,来告诉DNS服务器这一个IP是来响应哪一类线路的请求的,比如两台服务器,一个解析电信线路。一个联通,默认的解析线路就是用户既不是联通或者电信就由这台主机处理,更智能一点应该这个配置都不需要做,ip输入就能知道是什么线路。下面来详细说下CDN

    CDN

    CDN的全称是 Content Delivery Network,即内容分发网络。CDN 是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN 的关键技术主要有内容存储和分发技术。
    “CDN存在的意义就是为了不让网络拥塞称为互联网发展的障碍”

    来看一张原理图(图片为引用):
    在这里插入图片描述
    CDN提供的服务优势的原理有点类似与淘宝和京东的关系:

    淘宝就类似没有CDN的一种状态,不管你是上海 北京用户,购买某个店铺的一件商品,都是一个发货地址,就是淘宝卖家的货源地。

    京东自营类似CDN加速的状态,如果你是上海用户就会从上海的并且上海离你最近的仓库给你发货,北京的同理,速度自然快,当天或隔天就到。

    CDN适用范围
    • 静态的内容和更新频率比较低的内容(比如CMS)

    • 数据流量很大的网站(直播,图库网站)

    CDN的优势
    • CDN解决了跨运营商和跨地域访问的问题,访问延时大大降低

    • 大部分请求在CDN边缘节点完成,CDN起到了分流作用,减轻了源站负载

    • 提高网络的访问的稳定性,节省骨干网带宽,减少带宽需求量,带宽价格成本也会降低

    • CDN让大规模的用户请求架构变得简单了,不然的话需要自己去部署很多节点,机房来保证大量不同地区的用户的访问质量

    • CDN的流量越高价格越便宜

    国内的特点:南电信北联通,所以不同区域的用户如果使用相对的运营商网络可能访问一些东西就会比较慢,CDN加速同时支持电信,网通,联通等多种线路,这样达到北方用户呢请求走的联通网络,南方用户走电信网络,减少跨网访问带来的网络交换结算

    CDN核心两个:缓存和回源

    缓存:

    • 将从源服务器请求来的资源按照要求缓存

    • 不生产内容,只做搬运工存储。

    • 大部分采用squid作为web服务(apache nginx )

    Ps:Squid是一个代理缓存服务器,支持FTP、http、http等网络协议,它和一般的代理缓存软件的不同之处在于它使用一个单独的、非模块化的、I/O驱动的进程来处理所有客户端的请求)
    回源:
    当有用户访问某个资源的时候,如果被解析到的那个CDN节点没有缓存响应 的内容,或者缓存已经到期了,就会回源站去获取。没有人访问的话,不会主动去源站获取

    关键技术:

    • 内容发布:它借助于建立索引、缓存、流分裂、组播(Multicast)等技术,将内容发布或投递到距离用户最近的远程服务点(POP)处;

    • 内容路由:它是整体性的网络负载均衡技术,通过内容路由器中的重定向(DNS)机制,在多个远程 POP 上均衡用户的请求,以使用户请求得到最近内容源的响应;

    • 内容交换:它根据内容的可用性、服务器的可用性以及用户的背景,在POP的缓存服务器上,利用应用层交换、流分裂、重定向(ICP、WCCP)等技术,智能地平衡负载流量;

    • 性能管理:它通过内部和外部监控系统,获取网络部件的状况信息,测量内容发布的端到端性能(如包丢失、延时、平均带宽、启动时间、帧速率等),保证网络处于最佳的运行状态。

    CDN和静态资源

    静态资源本身具有访问频率高、承接流量大的特点,因此静态资源加载速度始终是前端性能的一个非常关键的指标。CDN 是静态资源提速的重要手段。
    在这里插入图片描述
    比如上面淘宝的一张图片,会发现淘宝的静态资源几乎全部走了阿里CDN加速:
    http://img.alicdn.com/imgextra/i4/28894007/TB224MGb1ySBuNjy1zdXXXPxFXa_!0-saturn_solar.jpg_220x220.jpg_.webp
    随便打开一个网站,静态资源几乎都是从CDN服务器请求而来的,我们的项目中图片等静态资源,走的就是七牛云的CDN。
    在这里插入图片描述
    另外,将静态资源和主页面归置于不同的域名下是非常有必要的,有一点原因就是Cookie和域名是紧密联系的,同一个域名下的所有请求,都会携带一个相同的Cookie,但是静态资源不需要携带存放包含认证信息的Cookie,这样就可以避免,而且有效降低主域名访问压力。

    CDN的缺点

    什么事物都是有两面性的,CDN有这么多的优点,当然也有缺点
    如果网站更新,CDN边缘节点数据没有更新,就可能导致用户获取最新信息延迟,用户看到的不是最新的内容,这个问题呢现在一般采用的都是手动更新缓存的办法。每一家提供商后台都有手动更新的地方,所以相比于CDN的优点来说,这个缺点就不是那么关紧了。
    说到这里提一下CDN内容的缓存过期时间,你应该根据自己的项目实际情况来设置合理的缓存过期时间,可以是5个小时,一天,一周,一个月甚至更久,这个酌情考量

    总结

    以上是关于DNS和CDN的一些应用原理,非常建议项目中合理的使用CDN加速服务,来提高项目的访问质量,提高用户体验,除非你想用户访问了你的网站等了5秒右上角点X,当然,CDN只是其中的一个手段。
    如果你要采用CDN服务,一般是去提供商那购买服务,除非很大的企业会自行搭建,这个成本太高了。至于你要选择哪家提供商,这个市面上的就很多了,阿里云,腾讯云,七牛云,360等等。
    最后说一点比较重要的问题,购买的CDN服务采用哪种计费方式,一般市面上提供的有两种计费方式:

    • 1.按照带宽计费
    • 2.按照流量计费
      如果你不知道选择哪种的话,可以先选择一种,然后过一段时间看下统计图,然后选择更合适的计费放肆,如果你们的项目一直有统计系统那就更好办了,按照下面这种规则来选择计费方式即可:
      全天内带宽利用率大于30%的用户适合使用按带宽计费方式;对于域名流量曲线波动较大,有带宽尖峰,全天内带宽利用率小于30%的用户适合使用按流量计费方式,我们的这个我没找到计费方式是哪个。
    展开全文
  • Istio sidecar 代理中的智能 DNS 代理 正如你将在下面的章节中看到的,DNS 代理功能对 Istio 的许多方面都产生了巨大的影响。 减少你的 DNS 服务器的负载,加快解析速度 你的集群的 Kubernetes DNS 服务器的负载...

    作者:Shriram Rajagopalan,Istio、Envoy 社区 maintainer,译者:宋净超。

    本文译自 Istio 官方博客 Expanding into New Frontiers - Smart DNS Proxying in Istio[1],这也是 Istio 1.8 引入的新功能。

    DNS 解析是 Kubernetes 上任何应用基础架构的重要组成部分。当你的应用代码试图访问 Kubernetes 集群中的另一个服务,甚至是互联网上的服务时,在发起与服务的连接之前,它必须首先查找服务主机名对应的 IP 地址。这个名称查找过程通常被称为服务发现。在 Kubernetes 中,集群 DNS 服务器,无论是 kube-dns 还是 CoreDNS,如果是 ClusterIP 类型的服务,都会将服务的主机名解析成一个唯一的不可路由的虚拟 IP(VIP)。每个节点上的 kube-proxy 将这个 VIP 映射到一组服务的 pod 上,并将流量转发到随机选择的其中一个。当使用服务网格时,sidecar 的工作原理与 kube-proxy 类似,都是为了转发流量。

    下图描述了当前的 DNS 的作用。

    Istio 中 DNS 的作用

    DNS 带来的问题

    虽然 DNS 在服务网格中的作用看似微不足道,但它一直阻碍着将网格扩展到虚拟机并实现无缝多集群访问。

    虚拟机访问 Kubernetes 服务

    考虑一个带有 sidecar 的虚拟机的情况。如下图所示,虚拟机上的应用会查找 Kubernetes 集群内部服务的 IP 地址,因为它们通常无法访问集群的 DNS 服务器。

    虚拟机访问 Kubernetes 服务时的 DNS 请求问题

    如果你愿意参与一些涉及 dnsmasq 和使用 NodePort 服务对 kube-dns 进行外部暴露的复杂工作,那么在技术上是可以在虚拟机上使用 kube-dns 作为名称服务器的:假设你能够说服你的集群管理员这样做。即使如此,你也是在为一系列 安全问题 [2] 打开大门。最后,这些都是临时解决方案,对于那些组织能力和领域专业知识有限的人来说,通常不在范围之内。

    没有 VIP 的外部 TCP 服务

    受 DNS 问题影响的不仅仅是 mesh 中的虚拟机。为了让 sidecar 准确区分 mesh 之外的两个不同 TCP 服务之间的流量,这些服务必须在不同的端口上,或者它们需要有一个全局唯一的 VIP,就像分配给 Kubernetes 服务的 clusterIP 一样。但如果没有 VIP 呢?像托管数据库这样的云托管服务,通常没有 VIP。相反,提供商的 DNS 服务器会返回其中一个实例 IP,然后应用程序可以直接访问。例如,考虑下面的两个服务条目,指向两个不同的 AWS RDS 服务。

    apiVersion: networking.istio.io/v1alpha3
    kind: ServiceEntry
    metadata:
      name: db1
      namespace: ns1
    spec:
      hosts:
      - mysql–instance1.us-east-1.rds.amazonaws.com
      ports:
      - name: mysql
        number: 3306
        protocol: TCP
      resolution: DNS
    ---
    apiVersion: networking.istio.io/v1alpha3
    kind: ServiceEntry
    metadata:
      name: db2
      namespace: ns1
    spec:
      hosts:
      - mysql–instance2.us-east-1.rds.amazonaws.com
      ports:
      - name: mysql
        number: 3306
        protocol: TCP
      resolution: DNS
    

    Sidecar 在 0.0.0.0:3306 上有一个监听器,它从公共 DNS 服务器上查找 mysql-instance1.us-east1.rds.amazonaws.com 的 IP 地址,并将流量转发给它。它无法将流量路由到 db2,因为它无法区分到达 0.0.0.0:3306 的流量是指向 db1 还是 db2。唯一的办法是将解析设置为 NONE,使 sidecar 盲目地将 3306 端口上的流量转发到应用程序请求的原始 IP。这就好比在防火墙上打了一个洞,允许所有流量进入 3306 端口,而不管目标 IP 是什么。为了让流量流动起来,你现在不得不对系统的安全态势做出妥协。

    为远程集群中的服务解析 DNS

    多集群网格的 DNS 限制是众所周知的。一个集群中的服务无法查询其他集群中的服务的 IP 地址,如果没有在调用者 namespace 中创建存根服务等笨拙的工作方式,就无法实现。

    控制 DNS

    总而言之,DNS 在 Istio 中一直是一个棘手的问题。是时候杀死这头野兽了。我们(Istio 网络团队)决定用一种对终端用户完全透明的方式来彻底解决这个问题。我们的第一次尝试是利用 Envoy 的 DNS 代理。结果发现它非常不可靠,而且由于 Envoy 使用的 c-ares DNS 库不够理想,总体上令人失望。为了解决这个问题,我们决定在用 Go 编写的 Istio sidecar 代理中实现 DNS 代理。我们能够优化实现,在不影响规模和稳定性的情况下处理所有我们想要解决的场景。我们使用的 Go DNS 库与 CoreDNS、Consul、Mesos 等可扩展的 DNS 实现所使用的库相同。它已经在生产中经过了规模和稳定性的实战测试。

    从 Istio 1.8 开始,sidecar 上的 Istio 代理将附带一个由 Istiod 动态编程的缓存 DNS 代理。Istiod 会根据集群中的 Kubernetes 服务和服务条目,为应用可能访问的所有服务推送主机名到 IP 地址的映射。来自应用程序的 DNS 查询会被 pod 或 VM 中的 Istio 代理透明地拦截和服务。如果查询是针对网格内的服务,无论该服务在哪个集群中,代理都会直接响应应用程序。如果不是网格内的服务,它将查询转发到 /etc/resolv.conf 中定义的上游名称服务器。下图描述了当应用程序试图使用其主机名访问服务时发生的交互。

    Istio sidecar 代理中的智能 DNS 代理

    正如你将在下面的章节中看到的,DNS 代理功能对 Istio 的许多方面都产生了巨大的影响。

    减少你的 DNS 服务器的负载,加快解析速度

    你的集群的 Kubernetes DNS 服务器的负载急剧下降,因为几乎所有的 DNS 查询都是由 Istio 在 pod 内解决的。集群上 mesh 的管理的范围越大,你的 DNS 服务器的负载就越小。在 Istio 代理中实现我们自己的 DNS 代理,使我们能够实现诸如 CoreDNS auto-path[3] 等很酷的优化,而不会出现 CoreDNS 目前面临的正确性问题。

    为了理解这种优化的影响,让我们以一个简单的 DNS 查找场景为例,在一个标准的 Kubernetes 集群中,没有对 pod 进行任何自定义 DNS 设置 —— 即在 /etc/resolv.conf 中默认设置为 ndots:5。当你的应用程序开始对 productpage.ns1.svc.cluster.local 进行 DNS 查询时,它会将 /etc/resolv.conf 中的 DNS 搜索 namespace(例如,ns1.svc.cluster.local)作为 DNS 查询的一部分,然后再按原样查询主机。因此,实际发出的第一个 DNS 查询将看起来像 productpage.ns1.svc.cluster.local.ns1.svc.cluster.local,当 Istio 不参与时,这将不可避免地导致 DNS 解析失败。如果你的 /etc/resolv.conf 有 5 个搜索 namespace,应用程序将为每个搜索 namespace 发送两个 DNS 查询,一个是 IPv4 A 记录,另一个是 IPv6 AAAA 记录,然后再发送最后一对查询,查询内容是代码中使用的准确主机名。在建立连接之前,应用程序要为每个主机执行 12 次 DNS 查找查询!通过 Istio 实现的 CoreDNS 风格的 auto-path 技术,sidecar 代理将在第一次查询中检测到被查询的真实主机名,并返回一个 cname 记录给 productpage.ns1.svc.cluster.local 作为这个 DNS 响应的一部分,以及 productpage.ns1.svc.cluster.local 的 A/AAAA 记录。接收到这个响应的应用程序现在可以立即提取 IP 地址,并继续建立到该 IP 的 TCP 连接。Istio 代理中的智能 DNS 代理大大减少了 DNS 查询的次数,从 12 次减少到只有 2 次!### 虚拟机到 Kubernetes 的集成

    由于 Istio 代理为网格内的服务执行本地 DNS 解析,现在可以成功地从虚拟机查询 Kubernetes 服务的 DNS,而不需要笨拙地将 kube-dns 暴露在集群外。在集群中无缝解析内部服务的能力现在可以简化单体到微服务的过程,因为虚拟机上的单体现在可以访问 Kubernetes 上的微服务,而无需通过 API 网关的额外层次间接访问。

    尽可能地自动分配 VIP

    你可能会问,代理中的这个 DNS 功能是如何解决区分多个外部 TCP 服务在同一端口上没有 VIP 的问题的?

    从 Kubernetes 汲取灵感,Istio 现在将自动为这类服务分配不可路由的 VIP(来自 E 类子网),只要它们不使用通配符主机。Sidecar 上的 Istio 代理将使用这些 VIP 作为对来自应用程序的 DNS 查找的响应。Envoy 现在可以清楚地区分绑定到每个外部 TCP 服务的流量,并将其转发给正确的目标。随着 DNS 代理的引入,你将不再需要使用 resolution: NONE 来处理非通配符的 TCP 服务,提高了你的整体安全态势。Istio 对通配符外部服务(如 *.us-east1.rds.amazonaws.com)帮不上什么忙。你将不得不求助于 NONE 解析模式来处理此类服务。

    多集群 DNS 查询

    对于冒险的人来说,试图编织一个多集群网格,让应用直接调用远程集群 namespace 中的内部服务,DNS 代理功能就相当方便了。你的应用可以在任何集群上解析任何 namespace 的 Kubernetes 服务,而不需要在每个集群中创建存根 Kubernetes 服务。

    DNS 代理的好处超越了目前 Istio 中描述的多集群模型。在 Tetrate[4],我们在客户的多集群部署中广泛使用这种机制,以使 sidecar 能够为暴露在网格中所有集群的入口网关的主机解析 DNS,并通过 mTLS 访问。

    结束语

    在编织一个跨越多个集群、不同环境的网格、整合外部服务时,由于缺乏对 DNS 的控制而导致的问题往往被忽视。在 Istio sidecar 代理中引入缓存 DNS 代理就解决了这些问题。对应用的 DNS 解析进行控制,可以让 Istio 准确识别流量所绑定的目标服务,提升 Istio 在集群内和跨集群的整体安全、路由和遥测态势。

    Istio 1.8 的 preview 配置文件中启用了智能 DNS 代理。请试一试。

    加入云原生社区 Istio SIG

    扫描下面的二维码加入云原生社区 Istio SIG, 与 Istio 专家共同交流。

    云原生社区 Meetup

    11 月 28 日(星期六),云原生社区第一期 Meetup 上海站,倒计时 4 天,点击报名

    引用链接

    [1] Expanding into New Frontiers - Smart DNS Proxying in Istio: https://istio.io/latest/blog/2020/dns-proxy/
    [2] 安全问题: https://blog.aquasec.com/dns-spoofing-kubernetes-clusters
    [3] CoreDNS auto-path: https://coredns.io/plugins/autopath/
    [4] Tetrate: https://tetrate.io/

    展开全文
  • 智能DNS 实施方案

    2013-11-19 09:55:00
    对于公司智能DNS搭建详细描述 和 实施方案
  •  实易智能DNS系统是由实易数码历经三年,自主研发的一套嵌入式智能DNS集成管理系统。  她是一个嵌入式整体系统,基于坚如磐石的FreeBSD系统和最流行的DNS软件bind,有着友好易用的WEB管理界面和强大的区域管理...
  • 智能DNS解析服务器

    2014-11-03 21:21:51
    智能DNS解析服务器,WINDOWS下搭建DNS,是服务器端
  • 前言: 搞LINUX的朋友都知道,bind是linux下的DNS服务软件,但很多人不清楚,它也可以运行在windows系统中,windows系统自带的dns,功能弱,是不能作智能DNS解析的,在windows 2008 R2版也没有解决这个问题,有些...
  • 智能DNS之DNS原理与解析

    千次阅读 2018-08-02 14:12:41
    DNS原理及其解析过程    网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,所以计算机在网络上进行通讯时只能识别如“202.96.134.133”之类的IP地址,而不能认识域名。我们无法记住10个以上IP地址的网站...

    DNS原理及其解析过程
     


        网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,所以计算机在网络上进行通讯时只能识别如“202.96.134.133”之类的IP地址,而不能认识域名。我们无法记住10个以上IP地址的网站,所以我们访问网站时,更多的是在浏览器地址栏中输入域名,就能看到所需要的页面,这是因为有一个叫“DNS服务器”的计算机自动把我们的域名“翻译”成了相应的IP地址,然后调出IP地址所对应的网页。

    什么是DNS?
        DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作。DNS就是这样的一位“翻译官”,它的基本工作原理可用下图来表示。

    DNS域名称
        域名系统作为一个层次结构和分布式数据库,包含各种类型的数据,包括主机名和域名。DNS数据库中的名称形成一个分层树状结构称为域命名空间。域名包含单个标签分隔点,例如:im.qq.com。
    完全限定的域名 (FQDN) 唯一地标识在 DNS 分层树中的主机的位置,通过指定的路径中点分隔从根引用的主机的名称列表。 下图显示与主机称为 im 内 qq.com DNS 树的示例。 主机的 FQDN 是 im.qq.com。
    DNS 域的名称层次结构

    DNS域名称空间的组织方式
        按其功能命名空间中用来描述 DNS 域名称的五个类别的介绍详见下表中,以及与每个名称类型的示例。

    DNS 和 Internet 域
        互联网域名系统由名称注册机构负责维护分配由组织和国家/地区的顶级域在 Internet 上进行管理。 这些域名按照国际标准 3166。 一些很多现有缩写,保留以供组织中,以及两个字母和三个字母的国家/地区使用的缩写使用下表所示。一些常见的DNS域名称如下图:

    资源记录
        DNS 数据库中包含的资源记录 (RR)。 每个 RR 标识数据库中的特定资源。我们在建立DNS服务器时,经常会用到SOA,NS,A之类的记录,在维护DNS服务器时,会用到MX,CNAME记录。 
    常见的RR见下图:

    Dns服务的工作过程
    当 DNS 客户机需要查询程序中使用的名称时,它会查询本地DNS 服务器来解析该名称。客户机发送的每条查询消息都包括3条信息,以指定服务器应回答的问题。
    ● 指定的 DNS 域名,表示为完全合格的域名 (FQDN) 。
    ● 指定的查询类型,它可根据类型指定资源记录,或作为查询操作的专门类型。
    ● DNS域名的指定类别。
        对于DNS 服务器,它始终应指定为 Internet 类别。例如,指定的名称可以是计算机的完全合格的域名,如im.qq.com,并且指定的查询类型用于通过该名称搜索地址资源记录。
        DNS 查询以各种不同的方式进行解析。客户机有时也可通过使用从以前查询获得的缓存信息就地应答查询。DNS 服务器可使用其自身的资源记录信息缓存来应答查询,也可代表请求客户机来查询或联系其他 DNS 服务器,以完全解析该名称,并随后将应答返回至客户机。这个过程称为递归。
        另外,客户机自己也可尝试联系其他的 DNS 服务器来解析名称。如果客户机这么做,它会使用基于服务器应答的独立和附加的查询,该过程称作迭代,即DNS服务器之间的交互查询就是迭代查询。
    DNS 查询的过程如下图所示。

    1、在浏览器中输入www.qq.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。 

    2、如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。 

    3、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。 

    4、如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。 

    5、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www.qq.com主机。 

    6、如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。 

        从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是的交互查询就是迭代查询。

    附录:
    本地DNS配置转发与未配置转发数据包分析
        新建一DNS,具体怎么建我这里就不再描述了,见我的上一篇博文《在Win2003中安装bind【部署智能DNS】》
    1、DNS服务器不设转发
        在192.168.145.228服务器上安装上wireshark软件,并打开它,设置数据包为UDP过滤,在192.168.145.12客户机上用nslookup命令查询一下www.sohu.com,马上可以看到本地DNS服务器直接查全球13台根域中的某几台,然后一步步解析,通过递代的方式,直到找到www.sohu.com对应的IP为220.181.118.87。
        本地DNS服务器得到www.sohu.com的IP后,它把这个IP返回给192.168.145.12客户机,完成解析。

    2、DNS服务器设置转发

        因www.sohu.com域名在第一步的验证中使用过,有缓存,为了不受上步实验干扰,我们在客户机上192.168.145.12上nslookup www.baidu.com。从图上看,本地DNS把请求转发至192.168.133.10服务器,133.10服务器把得到的IP返回给本地DNS,然后本地DNS再把IP告诉DNS客户机,完成解析。

    展开全文
  • 智能DNS解析过程详解

    2020-08-22 17:17:25
    点击上方“IT酱油瓶”带你去看小星星公众号:IT酱油瓶作者:网工紫电一个IT行业技术创业者一、写在正文之前DNS:域名系统DNS功能:提供域名及IP地址的解析查询服务正向解析:已知域名w...
  • 智能DNS

    2018-04-30 14:05:33
    智能DNS智能DNS就是根据用户的来路,自动智能化判断来路IP返回给用户,而不需要用户进行选择。比方一个企业的站点三个运营商的带宽都有:电信、网通、移动,同样有三个来自不同运营商网络的访问用户,那电信访问企业...
  • F5 Lc1600智能DNS

    2013-03-19 08:59:43
    F5智能DNS 用新网域名+F5 lc 1600做智能DNS服务器 同时还有troubleshooting F5抓包分析客户对f5的智能DNS服务器的请求的IP。
  • 曲奇智能DNS解析系统(CookyDNS)(以下简称CookyDNS)提供域名授权解析服务,他是完全自主开发的DNS服务器软件,不是BIND或这NSD之类的DNS软件的修改产品,可以快速简单安装,配置简单、并且有设置向导和安装程序、安全...
  • centos7+bind实现智能dns

    2020-07-19 18:05:22
    这里的要实现的是不同网段的客户端向dns服务器请求时,dns服务器会根据客户端的地址进行针对性的域名解析,返回与客户端相同网段的主机地址。 本例配置 dns服务器: eth0:192.168.247.14/24 eth1:192.168.100.10/24 ...
  • 什么是智能dns解析

    千次阅读 2019-07-07 14:00:13
    智能DNS解析是针对目前电信和网通互联互通不畅的问题推出的一种DNS解决方案。具体实现是:把同样的域名如test.winiis.com的A记录分别设置指向网通和电信IP,当网通的客户访问时,智能DNS会自动判断访问者来路,并...
  • 一次智能dns调研及bind9应用的文档。
  • 智能dns实现 实验环境:准备8台虚拟机,具体ip配置如下图 实验目的:互联网DNS工作原理的简单实现(域名解析、只缓存DNS服务器、DNS子域委派和转发、主从复制、CDN智能DNS) 一、互联网dns架构实现 10.35.78.69:web...
  • 智能DNS又称为解析切割,是对请求DNS解析的IP地址进行判断,将域名解析成不同的地址 一般智能DNS应用常见的场景就是CDN,中国特色社会主义的网络导致了电信和联通这2个特色的运营商,而这2个运营商通过在北京某机房...
  • 智能DNS系统建设.pdf

    2021-09-13 22:25:40
    智能DNS系统建设.pdf
  • CDN与智能DNS原理和应用

    千次阅读 2018-05-30 22:21:14
    CDN与智能DNS原理和应用一、CDN是什么? i. Content Delivery Network内容分发网络 ii. 优点: 1. 使用户可以就近取得所需内容提高访问网站的响应速度 2. CDN=更智能的镜像+缓存+流量导流(访问就近节点) iii....
  • 通过阅读本手册,您可以轻松学习到如何使用这套专业、强大的智能DNS系统。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 38,272
精华内容 15,308
关键字:

智能dns