CDN加速

HTTPDNS

更新时间:2020-07-01 18:58:40

一. 功能简介

  常规的域名解析方式是根据DNS协议,由本地DNS服务器解析出域名对应的服务器IP。但是该方式完全依赖于本地DNS服务器,容易被运营商或者攻击者劫持。此外,在调度方式上,CDN厂商的DNS调度模式是基于本地DNS服务器的IP来识别其所属地和运营商,而非用户的真实IP,可能存在调度不准的情况。针对这些问题,网宿推出了HTTPDNS功能,由网宿HTTPDNS集群代替本地DNS服务器进行解析,有效防止劫持。而且,因其可以根据用户真实IP进行调度,调度更加精准。

二. 功能说明

2.1. 基本原理

  HTTPDNS是以HTTP的方式代替传统DNS协议传递解析结果,能够有效避开DNS层面的拦截和故障。客户端通过接口向网宿HTTPDNS集群发起“DNS查询”请求,网宿HTTPDNS集群根据请求携带的域名和IP信息,查询CDN内部调度策略,通过响应请求的方式,返回给客户端最优节点IP。客户端得到最优节点IP,通过在header中指定host字段,进行正常的业务访问。

2.2. 业务流程

网宿科技布局未来三年业务发展 研发是重中之重

  HTTPDNS业务流程描述如下:

  1. 客户端向网宿HTTPDNS服务器集群发起查询请求,携带用户域名(必选)和终端IP(可选)。

  2. 网宿HTTPDNS服务器集群查询CDN内部调度系统,获取最优访问节点IP。

  3. 网宿HTTPDNS服务器集群以HTTP响应的方式将最优节点IP和TTL时间传递给客户端。

  4. 若客户端向网宿HTTPDNS服务器集群请求失败,则启用备选走正常DNS解析过程,向LocalDNS服务器发起请求。

  5. LocalDNS服务器进行递归查询,最终返回DNS解析结果。

  6. 客户端拿到最优节点IP后,与最优节点建立连接,发起正常访问。

2.3. 使用说明

   网宿提供http(s)查询dns接口,分为加密和非加密方式:

2.3.1 非加密方式请求

  客户端采用http或https方式发起请求,请求URL包括要查找的加速域名和用户IP等。 网宿支持单域名dns查询,也支持多域名dns查询。

2.3.1.1 单域名查询请求URL示例:

https://服务器集群IP/?ws_domain=www.chinanetcenter.com&ws_cli_IP=1.1.1.1&ws_ret_type=json

URL参数说明:

  1) 服务器集群IP为网宿HTTPDNS服务器集群IP

  2) ws_domain为请求域名

  3) ws_cli_IP为客户端IP,可为空。若为空,则HTTPDNS自动获取建连IP作为客户端IP。

  4) ws_ret_type表示返回包的格式,若为json则返回包为json格式,若不带该参数则返回传统的IP TTL格式。

  HTTPDNS响应结果以json格式返回:

{

"retCode":"0",

"msg":" ",

"data":{

	"www.chinanetcenter.com":{

		"ips": [

			"36.251.248.178","36.251.248.179"

		],

		"ttl": 300

	}

}

}

  HTTPDNS响应结果以IP TTL格式返回:

36.251.248.178 300

36.251.248.179 300

2.3.1.2 多域名查询请求URL示例:

  网宿HTTPDNS支持多域名查询,即同一个HTTPDNS请求可以携带多个域名,多个域名之间用分号";"隔开。响应的时候则返回多个域名的解析A记录。URL形式为:

http://服务器集群IP/?ws_domain=www.chinanetcenter.com;www.wangsu.com&ws_cli_IP=1.1.1.1&ws_ret_type=json

  响应格式如下:

{

"retCode ":"0",
"msg":" ",
"data":{	
	"www.chinanetcenter.com":{
	"ips": [
	"36.251.248.178"
	],
	"ttl": 300
},
"www.wangsu.com":{
	"ips": [
	"139.214.134.28","60.13.41.72"
	],
	"ttl": 300
}
}

}

2.3.2 加密方式请求

  为更好地保障传输安全,避免客户端和节点IP暴露,网宿提供加密方案。

  网宿提供唯一KEY值,客户端通过该key值对请求内容、网宿响应内容进行加解密操作。加密的内容包括请求的加速域名、客户端IP,解密的内容包括响应的A记录地址,TTL时间。加密请求URL示例:

https://服务器集群IP/?des_str=C30D9246753997302E394F8F5F9A1AE6B662ECA757AE591909C7283B641F884AA3566F63E34F70EB37E8A32BD5533BE504C21B80FD515C498496CC1CE14871DC&encrypt

URL参数说明:

  1) 服务集群IPIP为网宿HTTPDNS中心集群的IP

  2) des_str为"ws_domain=www.chinanetcenter.com;www.wangsu.com&ws_cli_IP=1.1.1.1&ws_ret_type=json"加密后的字符串

  3)encrypt 用于加密标识,以区分非加密和加密方式

  客户端将收到一串经加密过的响应结果,用网宿提供的唯一KEY解密得到域名对应的最优IP和DNS记录缓存时间(TTL值)。
响应的加密结果示例:56472BFB7B60CC34B8D8166CDED525A036661A962B8265DB

三. 应用场景

  该功能适用于需要防DNS劫持,或对调度准确性有很高要求,或希望降低调度过程中平均时延等应用场景。

四. 注意事项

  1. 若需要进行测试,请联系网宿获取HTTPDNS服务器集群IP地址信息。

  2. 为防止某个服务器集群IP故障或变更对业务造成影响,建议客户端不要将服务器集群IP写死,而是动态获取并定期更新。

  3. 移动互联网用户的网络环境比较复杂,为了尽可能地减少由于域名解析导致的延迟,建议在本地进行缓存。缓存时间建议使用网宿httpdns返回的TTL值。

  4. 为减少用户在缓存过期后重新进行域名解析的等待时间,建议在TTL快过期时(例如达过期时间的75%时)就进行域名解析请求。

  5. 基于容灾考虑,建议保留使用运营商LocalDNS解析域名的方式作为备选方案。