问个关于 Google IPv6 CDN 的问题

2015-07-24 00:38:23 +08:00
 lty1993

在家无聊的时候做了些实验,想到些关于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,如果我使用隧道的话。

2500 次点击
所在节点    互联网
3 条回复
jasontse
2015-07-24 06:38:35 +08:00
是不是你的 DNS 先请求了 IPv4 的 8.8.8.8。找台 Route Server 看看确定路由生效后分别 +trace 试试。
lty1993
2015-07-24 15:28:19 +08:00
@jasontse

DNS我确定是请求了IPv6的8888。我的Relay Server上根本没有配置IPv4的8888。

理论上来说Google DNS是根据我连接到的不同地理位置的Anycast的服务器,然后用服务器所在地IP做递归查询的。以上的测试我都是mtr过+level 3 looking glass确保正反向也都生效了的。

Ukrine线路:![Ukrine](https://lolicon.me/p/8.png)
lty1993
2015-07-24 15:29:26 +08:00
Ukrine线路:
![Ukrine](https://lolicon.me/p/8.png)

HE线路:
![HE](https://lolicon.me/p/9.png)

Fremont MTR:
![FMT](https://lolicon.me/p/10.png)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/207926

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX