admin 管理员组

文章数量: 1086019


2024年4月28日发(作者:企安e学app苹果)

累积:技海拾贝|

C

UMULATION

浅谈通过GTM进行DNS的智能解析

文:东软信息技术服务有限公司

马新元

什么是DNS的智能解析

目前中国的网络南北割据,电信、网通等不同线路的互访颇为困难,而

DNS

智能解析是针

对目前国内电信、联通以及移动等线路互联互通提供的一种解决方案。具备智能解析能力的

DNS

除了具备一般的基本

DNS

解析功能外,还可以自动识别

DNS

请求发送者的来源,并

以根据其将域名智能的解析到双线路机器的网通或电信的

IP

或位于不同

IDC

中机器的

IP

便浏览者就近访问你的网站

,

而不会因为线路不同而导致访问慢。

DNS智能解析的原理

DNS智能解析的基本原理是识别用户的来路,并且根据用户的来路,通过独有的算法,

把用户分配到网站离用户最近的服务器上。例如我们将域名托管在可进行免费DNS智

能查询的DNSPod,则DNSPod可根据用户的来源,让网通线路的用户访问到网站的

网通IP或者让沈阳的用户访问到位于沈阳IDC机房中的服务器(这一切对用户而言是

无感知的),而不需要像早年间很多网站为了保证不同线路的访问质量,建立一个网站

的若干镜像站,让用户手动去选择自己要访问的站点。

智能DNS的实现方式有软件和硬件,软件中有久负盛名的bind,而硬件中有F5 的

GTM 。同时也有提供DNS服务的DNSPod等。

利用F5

GTM进行DNS的智能解析

F5 GTM全称为Global Traffic Management即全局传输管理,它是一种广域网负载

均衡设备,以DNS解析为主要工作,可处理多个数据中心的流量分配。与它相对应的

还有LTM 全称为Local Traffic Management即本地传输管理,是一种局域网负载均

衡设备,以TCP/UDP流量分发处理、优化为主要工作,主要处理在一个数据中心内的

1 / 5

流量分配,可以处理到流量的七层内容。在本文中我们主要讨论如何利用GTM进行域

名的智能解析。

在现实的生产环境中,一个有DNS智能解析需求的网站,其服务器往往分布在不同的

IDC机房中,这些IDC使用不同的线路对外提供服务;或者其服务器位于同一个IDC

机房中,但该IDC机房为该服务器提供了不同线路的出口。对应这种情况,在GTM中

将使用某一线路的数据中心抽象为一个概念Datacenter。在一个Datacenter中包含

了大量的服务器,GTM中将其抽象为一个概念Server。每个服务器可以配置一个或多

个IP,对应具体的这些IP以及相关的端口,GTM将其抽象为一个概念Virtual Server。

Datacenter、Server、Virtual Server ,GTM通过以上三个概念完成了对IDC机房

中物理网络的描述。

那么具体的Datacenter、Server、Virtual Server在GTM中担任何种角色呢?

• Virtual Server:GTM中的最小object,是Server和Pool的逻辑成员,其

IP即为GTM最终提供解析的结果。

• Server:用来代表一个服务器实体,类似于LTM中的node,有bigip server,

non-bigip server 两类,隶属于Datacenter中,同一server不应同时存在

于两个Datacenter中。

• Datacenter:组织Server的容器,表示一个具体的数据中心。

在完成对物理的网络的标示以后,即涉及到如何将不同用户所请求的域名地址正确的映

射到具体的IP上。这里就涉及到GTM的智能解析方式。GTM通过wide IP和pool 来

实现这一功能。

那么Wide IP和Pool又是何方神圣?

• Pool:是一个资源池,用来组织Virtual Server,是Wide IP的配置要素,同

一Virtual Server可以同时属于多个Pool。

• Wide IP:对外呈现GTM所负载的智能域名,其下包含一个或多个Pool。

说完了这些比较枯燥的概念,我们用一个具体的例子来说明GTM智能解析的工作模式。

假设情景:我们有一个网站,该网站在北京和上海分

别放置了一台镜像服务器对外提供服务。北京的服务器IP为202.96.1.2是一个网通

地址,上海的服务器IP为116.238.1.2是一个电信地址。现在我们希望使用网通线路

的用户在访问这个网站时,实际访问到的是北京服务器的IP地址202.96.1.2,电信

线路的用户在访问这个网站时实际访问到的是上海服务器的IP地址116.238.1.2。(以

上域名及IP均为虚构,特此说明)

2 / 5

GTM如何来完成这个需求呢:

大体上分为两个阶段:第一阶段,描述物理资源;第二阶段,制定智能解析策略。以下

为具体步骤:

第一步:建立电信和网通线路的Datacenter

首先我们需要在从我们的网络运营商那里获得网通和电信线路的地址池,并在GTM中

建立对应的地址池CNC-Address、CT-Address。其次,我们将分别建立对应网通和

电信线路的Datacenter: DC_CNC,DC_CT。最后我们将网通地址池CNC-Address

与网通Datacenter相对应 ,电信地址池CT-Address与电信Datacenter相对应,

这样就基本完成了Datacenter的建立。

第二步:建立电信和网通线路的Server

我们在GTM中创建一个Server来表示网通线路的服务器,命名为server_cnc,将

其加入到网通Datacenter DC_CNC中,表明该服务器是属于网通Datacenter的,

并为其创建IP地址为202.96.1.2的Virtual Server用来作为GTM最终提供解析的

结果。

同理,我们创建电信线路的server,命名为server_ct,并将其加入电信Datacenter

DC_CT中,并为其创建IP地址为116.238.1.2的Virtual Server用来作为GTM最

终提供解析的结果。

通过以上两步,我们完成了对物理资源的描述,在以下的步骤中,我们将进行智能解析

策略的制定。

第三步:创建资源池Pool

我们在GTM创建一个资源池Pool_ , 并将刚才建立的

Virtual Server:server_cnc、server_ct加入到这个池中。在这个新建立的资源池

中我们将为这些Virtual Server创建规则,以确定当DNS请求被本资源池响应时,具

体将哪个Virtual Server的IP作为解析结果返回给用户。

在本例中,我们将按照Topology的方式来决定具体将哪个Virtual Server的IP提供

给用户。

所谓Topology的方式,即按照发起DNS解析请求者的IP的归属来确定使用哪些

Virtual Server来进行响应。GTM中所定义的Topology可以在

Continent/Country/IP Subnet/ISP四个层次进行传入IP的分类。本例中我们创建

了网通线路和电信线路的地址池,那么用户发起的DNS解析请求就将按照用户的IP

属于哪一个地址池,来确定是将电信服务器还是网通服务器的IP返回给用户。

3 / 5

第四步:建立域名到资源池的映射。

最后我们创建一个Wide IP :,表明:对外该GTM接受所

有对该域名的查询请求,并将第三步建立的资源池Pool_添

加到该Wide IP中。表明所有对这个域名的解析都将由资源

池Pool_进行。

至此,一个最简化版本的智能解析就完成了。

此时一个网通线路的用户在浏览器中输入网站网址,

用户的所配置的网通DNS将向我们的GTM发起该域名的查询请求。我们的GTM在接

收到该查询请求后,将使用资源池Pool_对该域名进行解析,

由于该域名查询请求的发起者IP地址包含在网通地址池中,GTM就将网通线路服务器

的IP地址返回给发起查询的网通DNS,网通DNS进一步将该IP地址作为查询结果返

回给该用户。这样用户事实上最终访问到的服务器即为该网站的网通线路服务器,但整

个过程对于用户而言是无感知的。

单纯从以上的DNS智能解析方式来说,GTM的智能解析方式与一般的bind服务器通

过访问控制列表结合视图来进行智能解析的方式差别并不大。但在实际的应用中,GTM

提供了几种比较有特点的功能以提高其智能解析能力。由于篇幅所限,本文将就比较有

代表性的功能Health Monitors 以及iRule进行一下说明。其他的系统特性,可以在

网站上获取到最新的资料。

首先介绍一下Health Monitor

Health Monitor一般译为健康检查,在 GTM中将会在Pool,以及Server中加入对

Virtual Server的健康检查,以确定该服务器是否可以正常的对外提供服务。例如在

Pool中使用了健康检查后,如通过健康检查,某Virtual Server的服务处于不可用状

态,Pool将会利用已定义的负载平衡策略将其他可用的IP返回给用户,以保证在部分

服务器宕机的情况下,用户仍可以获得所需服务,从而保证用户的使用体验。

GTM系统中默认创建了几种健康检查的脚本,但是我们也可以根据需要进行自定义健

康检查脚本的编写,自定义的健康检查脚本可以根据检测内容的不同,定义检测的类型、

时间周期、超时标准,服务端口等信息,满足用户的检测需求。

下面简单介绍一下iRule

通过使用F5由事件驱动的iRule,可以定制全局流量的动态分配。GTM可以深入查看

DNS消息,向期望的数据中心、池或虚拟服务器分配应用流量。这一功能可以减少延

迟,加强针对恶意攻击的保护,并改进应用性能。在GTM中iRules主要使用在Wide

IP模块中,当我们定义了多个资源池的时候,可以设定iRule,让符合特定条件的流量

4 / 5

连接到特定的资源池进行处理。这里所指的特定条件可以是DNS查询请求发起者的IP

地址,也可以是URI这样的通用资源标识符。iRule规则使用的语法为TCL,目前GTM

可以支持TCL8.4版本的语法。

以下使用一个小例子来说明iRules的用法:

下面是一个简单的iRule

when DNS_REQUEST {

if { [IP::addr [IP::client_addr] equals 10.10.10.10] } {

pool my_pool

}

}

当我们为一个Wide IP添加了这样的iRule以后,每当这个Wide IP监听到DNS请

求发送者的IP地址是10.10.10.10,就会将这个请求包传递给my_pool来进行处理。

可见,使用iRule我们将可以更加灵活的定制智能解析策略。

使用智能解析时面临的问题

GTM是通过用户的来源IP来返回不同的解释IP,而实际上,并不是实际用户直接访

问我们的 DNS,而是用户所使用的DNS(比如说沈阳ADSL用户的默认DNS)负责

访问我们的DNS,如果用户自行修改了DNS,比如说电信的用户硬要用网通的DNS,

或者网通的用户使用国外的DNS(比如opendns之类的),就会导致判断失误。对于

这种问题,目前尚无较好的解决方法。

5 / 5


本文标签: 解析 用户 智能 线路 服务器