当前,认证域名解析服务器判断用户位置的依据是 DNS 解析请求的来源——也就是用户所使用的 DNS 服务器的 IP 地址,而不是用户的 IP 地址。一般来说这些 DNS 服务器由你的 ISP 提供,这种情况相对较好,域名解析服务器会返回最适合你的 ISP 的服务器节点,基本也就是最适合你的节点。但是也有部分用户会选择 OpenDNS 或者 Google DNS 这样的第三方服务提供商,这种情况就比较麻烦。举个身边的例子来讲,如果你人在北京,使用 Google DNS 来访问谷奥的话,会产生如下效果:
我们先用 Google DNS 解析一下谷奥的域名:
nan-chens-macbook:~ gkp$ nslookup
> server 8.8.8.8
Default server: 8.8.8.8
Address: 8.8.8.8#53
> www.google.org.cn
Server: 8.8.8.8
Address: 8.8.8.8#53Non-authoritative answer:
www.google.org.cn canonical name = www.google.org.cn.fastwebcdn.com.
Name: www.google.org.cn.fastwebcdn.com
Address: 122.226.213.143
我们看看这个 IP 地址是哪里的
nan-chens-macbook:~ gkp$ whois 122.226.213.143
…
inetnum: 122.226.213.0 – 122.226.213.255
netname: JINHUA-TELECOM-LTD
…
role: CHINANET-ZJ Jinhua
…
答案是浙江金华,也就是说身在北京的我,却跑到了位于浙江金华的谷奥服务器节点上读取数据,速度当然不可能快起来。而 DNS 服务器返回的这个 IP 地址,正是因为 DNS 解析服务器以 Google DNS 的 8.8.8.8 为位置信息进行最佳路由计算的结果。
Google 提出的 DNS 协议改善正是为了解决这一问题:他们计划在 DNS 查询时将最终用户 IP 地址的前24位(简单来说就是 IPv4 地址的前三段)也一起发送到 DNS 解析服务器,这样 DNS 解析服务器可以更加准确的根据用户所在位置返回相应的节点信息,而且用户的隐私(准确的 IP 地址)也相对较为安全。
这个提议已经发到了 dnsext 的邮件列表,未来的几个月互联网各界人士将对此进行研讨和论证,如果一切顺利的话也许这个提议的内容会被纳入 Internet 的正式标准。最起码对于国内的 Google DNS 用户来说,是件大好事。
via googlecode