在家无聊的时候做了些实验,想到些关于Google自己IPv6 CDN原理的问题。。。
首先,家里IPv6网络是隧道,不是原生的。一条去HE的VA路由,另一条去NetAssist的Ukrine路由器。家里的DNS Server是台Relay服务器,不是递归DNS,上级DNS是2001:4860:4860::8888。IP和ASN的whois里面地址都是INDIANA的地址。
我先去家里路由器里把NetAssist那边的Announce和Input都prepend我自己AS 5次,劣化线路。然后“nslookup -query=AAAA google.com”,拿到的地址是Google在Chicago的地址,这样CDN没有任何问题。
然后我反过来,把HE那边的Announce和Input都prepend我自己AS 5次,确保走Ukrine的线路。然后,我“nslookup -query=AAAA google.com”,拿到的竟然还是Chicago的地址。。。我同时也“nslookup -query=AAAA google.com 2001:4860:4860::8888”这样来确保不是缓存问题。。。
之后我也想过,会不会是edns-client-subnet的问题,但是我在Fremont, CA那边Announce的地址就被正确引流到了附近的节点。
所以Google CDN引流背后的逻辑到底是什么呢?Google具体怎么知道用户真正的GeoLocation,如果我使用隧道的话。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.