1
Rabbit52 2012-08-31 15:24:37 +08:00
虽不明,但觉厉
|
2
Livid MOD 接下来就需要各大 CDN 的迅速跟进了。
|
3
chuangbo OP @Rabbit52 亲,我来解释一下
你知道的,国内网络比较奇葩,不同运营商之间速度很慢。好的,这要从一个故事说起。。。 您运营了一个网站:diable3.com 你网站有2个服务器,每个服务器有一个IP,分别是 电信 1.1.1.1 联通 2.2.2.2 1. 小明 小明在北京,用电信宽带,他访问 sex.com ,由于 DNS 的随机性,他访问到了联通 2.2.2.2 这个服务器,非常慢,慢的不能忍受,以至于 i7 + 64G内存 + SSD + GTX560 都无数次卡死。 你就想,怎么告诉小明,他应该访问 1.1.1.1 ,这个对他来说才是最快的。 直到你遇到了 DNSPod。 DNSPod 可以给不同运营商的用户指定不同的服务器,你很高兴的注册了 DNSPod 的帐号,给按照线路,分配了两个IP地址,然后等待生效。。。终于生效了。。小明征服恶魔的战斗,再也不会被卡死了,他很快就60满级,回到了魔兽世界。 2. 小华 小华是小明对门儿,也用电信,是个自豪的程序员,他喜欢用新东西,他不屑于用运营商的 DNS,不屑于用 114.114.114.114,非要用 8.8.8.8。但是他悲剧了,DNSPod 不知道他是北京电信用户,以为他是国外用户,所以给他的IP,还是随机分配的,这次,分配到也是 2.2.2.2,但是他不知道是卡死的,因为 Mac 本来就很卡。 你没招了,这是 DNS 协议的缺陷,使用 8.8.8.8,最后到达 DNSPod 的是 Google 的地址,DNS 协议没有在传输过程中加入原始 IP 的信息,DNSPod 无法知道小华也是北京电信用户,只知道这是一个在使用 8.8.8.8 的用户。 3. edns edns 是一个 DNS 扩展协议,由 Google 起草的,改进部分很简单,就是在 DNS 协议中加入用户原始 IP,这样 DNSPod 就可以给小华提供准确、合理的地址了。 4. 难在哪? edns 只有 Google 的 8.8.8.8 支持了,而且只有加入了他们这个组织,向 Google 申请,Google 才正式开通 edns 协议,一般 DNS 还是不开放的。 |
7
andyliu 2012-08-31 17:00:25 +08:00
|
8
xavierskip 2012-08-31 17:11:42 +08:00
|
9
blank_dlh 2012-08-31 17:28:01 +08:00
@andyliu 你的 DNS 是8.8.8.8,如果 8.8.8.8 上没有个别处理正访问的域名(例如在8.8.8.8上把域名解析到了x.x.x.x.),那么根据 DNS 协议,是通过8.8.8.8去找到解析该域名的 DNS,也就是域名控制面板那里配置的那个(可以用 nslookup 查看)。
|
10
qq286735628 2012-08-31 17:55:20 +08:00
哇,这样子这个eDNS可给各大CDN帮大忙了
|
11
yava555 2012-08-31 19:13:43 +08:00
@chuangbo 有点小困惑,8.8.8.8每次都要带着用户ip都要向dnspod请求吗, 会不会有缓存?如果8.8.8.8有缓存,第一次电信请求,第二次联通用户怎么办?
|
12
nijux 2012-08-31 19:20:05 +08:00
很久以前就遇到设置了 8.8.8.8 然后访问Qzone 给出的ip不是最优的然后很慢 看了这篇文章才知道原来可以这样解决。
|
13
zern 2012-08-31 19:48:58 +08:00
LZ好文采啊
|
15
red 2012-08-31 20:52:08 +08:00
感谢LZ科普!edns 还是第一次听说
|
16
rongbin 2012-08-31 21:02:59 +08:00
这里头还有一个局限吧。例如人家域名并不是让dnspod来托管的,例如是万网或者新网,那这个时候,使用google的8.8.8.8还是会出现判断不准
|
17
chuangbo OP @andyliu 在 edns 以前,不能得到访问者的 IP ,只能拿到 Google 的 IP,所以跟你的外网 IP 没有关系。
@xavierskip 你可能有点误会,DNSPod 不是公众 DNS,是给网站用的,意思是,使用了 DNSPod 的网站或 CDN 才可以享受到 edns 的欢乐。 @yava555 我认为很难设计一个各方面符合 edns 要求的缓存,不知道 Google 是怎么处理的。 @zern 谢谢,其实写的很乱,许多地方不通顺,错别字也很多。 @rongbin 是的,所以据我所知,全球只有两种网站能享受到 edns 的便利,一是 Google 自己的网站,二是使用了 DNSPod 的网站。 |
18
wythe 2012-08-31 21:42:48 +08:00
|
20
rongbin 2012-08-31 22:33:32 +08:00
也许人家想着,绝大多数都是不会去特意修改dns解析的。是什么样的网络,就用什么运营商的DNS解析,才是合理的。
可能是因为修改DNS是属于小众人的缘故吧,故就懒得修改了。 而且,还是单独为了8.8.8.8 ^_^ |
22
shanks 2012-09-01 11:48:55 +08:00
感谢楼主科普,这学期深入学习计网,先预热一下
|
23
sm0king 2012-09-03 15:08:38 +08:00
DNSPOD好像没说使用的这种技术吧。
|
24
raptium 2012-09-03 15:14:28 +08:00
edns 的缓存想起来真复杂
其实本来 8.8.8.8 就有 anycast routing,不过估计 google 不会在国内部署 DNS 服务器,不然至少网通电信分清楚还是很容易的 |
27
ljbha007 2012-09-03 15:51:06 +08:00
为啥直接用电信的DNS就可以被DNSPod知道 访问者的IP呢 难道这种情况下DNS不是通过电信的DNS转发过来的吗?
|
28
raptium 2012-09-03 16:24:30 +08:00
@ljbha007 直接用电信的 DNS 就不用知道用户的 IP 了,因为看到是电信的 IP 所以就认为用户是电信用户,所以返回电信的 IP 了
|
31
mudkip 2012-09-03 20:58:07 +08:00
那剩下的问题是,如何告诉8.8.8.8我真实的IP地址?
为了获得纯净的DNS体验,8.8.8.8直接获得的是一个国外IP,我怎么让8.8.8.8知道我是网通用户(而不是日本或美国用户),从而使上游的DNSPod返回网通IP呢? |
32
jybox 2012-09-03 21:46:44 +08:00
@mudkip 楼上已经说过了
以前你查询一个域名对应的ip,是这样的流程 你向8.8.8.8询问,8.8.8.8向该域名的DNS服务提供商询问,然后将结果返回给你 这样的话,该域名的DNS提供商不知道你的IP,它只知道是8.8.8.8向它询问的,在EDNS中,8.8.8.8向域名的DNS提供商询问的时候,会把你的IP一同提供给DNS服务提供商。这样DNS服务提供商就可以为你选择更优的线路了 |
36
ketao 2012-10-19 14:50:18 +08:00
牛逼
|
37
tsing 2012-10-19 16:08:54 +08:00
|