󰅡收起

产品经理@雪豹

一位成长中的互联网产品经理正在记录着他的职业历程…

让Windows7优先使用IPV6访问Google,不用修改hosts

作者: 不详
分类: 系统
发布时间:2013-11-2 21:52:56
这个问题困扰了我两年有余,前不久终于解决了,在此分享给大家。
为什么要通过IPV6访问Google?因为Google搜索结果准确,还因为有个伟大的防火墙。目前网上流传的方法基本都是修改hosts,但是 Google的域名太多了,而且hosts文件不支持通配符,所以这种方法的灵活性很差。因此我就想了另一种解决方案:让DNS能解析出网站的IPV6地 址,并且优先使用该地址访问网站。

第一步:让你的电脑接入IPV6网络
这个网上教程很多,我使用的是teredo隧道接入。具体方法是在命令行里输入如下内容,
  1. netsh interface teredo set state enterpriseclient teredo.remlab.net  (nat环境用户)
  2. netsh interface teredo set state client teredo.remlab.net  (非nat环境用户)
复制代码
nat环境可以理解成内网,比如你通过路由器上网,那你就是在nat环境中。

然后ipconfig一下,看看有没有一个2001开头的IPV6地址,如下图所示:

系统一般每隔30秒尝试获取一次IP,如果过了1分钟还是没有获取到2001开头的IPV6地址,那么请把上面命令中的teredo.remlab.net换成下列任意一个服务器地址,重新执行,直到获得2001开头的IPV6地址为止。
  1. teredo.managemydedi.com
  2. teredo.remlab.net
  3. teredo.ngix.ne.kr
  4. teredo.trex.fi
  5. teredo2.remlab.net
  6. debian-miredo.progsoc.org
  7. teredo.ginzado.ne.jp
  8. teredo.iks-jena.de
复制代码
获得IP后,打开浏览器,访问 http://[2001:200:dff:fff1:216:3eff:feb1:44d7]/   如果能看到会动的乌龟,说明你已经成功接入IPV6.

第二步:使系统优先使用DNS解析出的IPV6地址
这才是本文的正题,具体分3点:
1、在注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Dnscache\Parameters下面新建一个DWORD值,名为AddrConfigControl,并将值设为0。

2、更改IPV6路由优先级。在命令行里执行如下命令:
  1. netsh int ipv6 set prefix ::1/128 50 0
  2. netsh int ipv6 set prefix ::/0 40 1
  3. netsh int ipv6 set prefix 2002::/16 30 1
  4. netsh int ipv6 set prefix ::/96 20 3
  5. netsh int ipv6 set prefix ::ffff:0:0/96 10 4
  6. netsh int ipv6 set prefix 2001::/32 5 1
复制代码
3、(可选)如果你用Firefox浏览器,那么将about:config里面的network.http.fast-fallback-to-IPv4值改成false。

以上步骤全部完成后,执行一下ipconfig /flushdns  ,然后ping www.google.com,看看是不是默认使用IPV6的地址了,下图是我的结果:

同样,访问其他支持IPV4和IPV6的双栈的网站也是默认使用IPV6的,比如wikipedia,blogspot等。

注意:youtube虽然也是Google旗下的,也支持双栈,但是伟大的防火墙对它使用了DNS污染,本文方法无效,需要结合TCP方式的DNS才能正常访问。

本文出自 产品经理@雪豹 ,转载时请注明出处及相应链接。

如果您觉得雪豹博客对您有所帮助,欢迎给雪豹打赏!