回家后,用上了那个WRT54G,上了ddwrt+chnroutes+DNSMASQ不能用交大的isatap隧道了,不过Teredo隧道又可以正常稳定的使用,但是发现一些奇怪的问题,比如,使用nslookup可以解析到ipv6.google.com,但是ping,一直提示“Ping request could not find host ipv6.google.com. Please check the name and try again.” 无法解析域名。但是直接ping google的IPV6地址确实是通的。证明IPV6链路正常。
一开始以为是其他隧道的干扰,关闭了其他隧道,还是老样子.而且使用gogo6的Tunnel broker也这样。放Google搜索了半天,找到了这个解释 微软脑残:
http://ipv6-or-no-ipv6.blogspot.com/2009/02/teredo-ipv6-on-vista-no-aaaa-resolving.html
Vista doesn't look up AAAA at all when it's on Teredo. It's intended behavior -- stupid, perhaps, but it's intended. See http://technet.microsoft.com/en-us/library/bb727035.aspx for all the details.
解决方法就是控制注册表设置如下,保存问reg文件,导入即可
1 2 3 4 |
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Dnscache\Parameters] "AddrConfigControl"=dword:00000000 |
好像导入是立刻生效的。我导入后,立刻可以解析ipv6.google.com了。
使用Tunnel Broker也恢复正常。
但是,发现国内的IPV6 PT一个都打不开,比如cgbt.cn 使用nslookup看,都正常,但是ping,就提示不能解析。当时想半天,本机dns一换成8.8.8.8,全部正常了,猜想到我在网关上放了DNSMASQ区分国内外DNS解析线路。而cgbt.cn和其他众多IPV6 PT都是cn结尾的,被DNSMASQ转向了电信DNS进行解析。这倒也没啥,关键是我针对电信的DNS劫持做了设置,就是启用了DNSMASQ的bogus-nxdomain=202.102.110.205屏蔽了包含202.102.110.205这个IP的A记录返回的解析结果。
使用电信DNS解析的返回结果解析CGBT.CN是这样的。
nslookup cgbt.cn 221.228.255.1
Server: b.center-dns.jsinfo.net
Address: 221.228.255.1Non-authoritative answer:
Name: cgbt.cn
Addresses: 2001:da8:205::100
202.102.110.205
CGBT.CN在校外没有这样的IPV4 A记录,这个IP是电信针对没有A记录的域名投毒,污染为自己的广告IP。DNSMASQ发现这个广告IP在bogus-nxdomain里面。于是直接回答:域名不存在。导致ping不能解析。也没啥好办法Patch DNSMASQ吧,这个DNSMASQ泡在路由器上,没ARM的交叉编译环境。只能暂时在DNSMASQ里面手动设置CGBT.CN和其他EDU.CN使用Google DNS解析了。
哈哈哈,在家和公司又可以爽了。