好你个中国电信!

这两天上各种网站,常常被转到search.114.vnet.cn,搜索乱七八糟的东西。明显这个不是病毒的问题(哪个病毒这么好心,专门往电信的互联星空网站跑?),再加上现在乱输网址都会跑到sh.vnet.cn,遂怀疑中国电信不干好事。

首先,看nslookup。用nslookup查各个网站(im.qq.com, www.ethereal.com)等倒是没有问题,但是涉及到错误的网址么:

> a

Server: ns-pd.online.sh.cn

Address: 202.96.209.133

Non-authoritative answer:

Name: a

Address: 218.83.175.154

而218.83.175.154和sh.vnet.cn

Name: sh.vnet.cn

Address: 218.83.175.138

是同一个局域网的。难道有叫a的网址…… 而且输b,c,d,aa,…..都一样。

这个也就算了,反正我很少输错网址的~

但是,下面这个问题严重了。比如,我上mobile.qq.com:

注:202.96.209.5 上海的一个DNS

202.96.209.133 上海的另一个DNS

***** From Ethereal (www.ethereal.com) Output ******

(My IP)->202.96.209.5 DNS Standard query AAAA mobile.qq.com

202.96.209.5->(My IP) DNS Standard query response, Server failure

(My IP)->202.96.209.133 DNS Standard query AAAA mobile.qq.com

202.96.209.133->(My IP) DNS Standard query response, Server failure

(My IP)->202.96.209.5 DNS Standard query AAAA mobile.qq.com.HenryPC.org

// 1秒以后

(My IP)->202.96.209.5 DNS Standard query AAAA mobile.qq.com.HenryPC.org

// 又1秒

(My IP)->202.96.209.133 DNS Standard query AAAA mobile.qq.com.HenryPC.org

202.96.209.133->(My IP) DNS Standard query response A 218.83.175.154

// 就是这一行,搞来一个错误的IP

(My IP)->218.83.175.154 HTTP GET / HTTP/1.1

// 当中有host: mobile.qq.com, 说明我的机器把这个IP当作mobile.qq.com了!

218.83.175.154->(My IP) HTTP/1.1 200 OK (text/html)

返回的html:

<script>

s=String(window.location.href);

var KeyList = new Array(273);

KeyList[0] = “\262\312\301\345”

KeyList[13] = “mp3”

KeyList[77] = “msn”

KeyList[78] = “dj”

KeyList[79] = “nba”

KeyList[95] = “s.h.e”

KeyList[273] = “\267\277\262\372”;

t=”http://search.114.vnet.cn/search_web.html?id=596&fm=pro&kw=”+KeyList[myradom()]+”&s=83″;

//t=”http://218.30.64.194/response.asp?MT=”+mylocal+”&srch=5&prov=&utf8″;

document.location.href = t;

</script>

也就是这个HTML,导致浏览器跑到search.114.vnet.cn去了……

后面的纪录就是从search.114.vnet.cn获取网页的过程了……

关键也就是先解析mobile.qq.com不给回答,然后解析mobile.qq.com.HenryPC.org(假如原来的不行,Windows会加上默认的本地域名,我的机器上是HenryPC.org),这个原本应该给出NXDOMAIN(无此域名)的查询,竟然返回了电信的广告网站,问题就这样出现了……

所以说,完全是因为电信的DNS的胡作非为导致了这个问题!

经过用nslookup试验,发现:

当我用A方式查询(也就是IPv4的模式),DNS基本正常,但是NXDOMAIN变成了广告页面。

但是当我用AAAA方式查询(IPv6的模式,一般网站还没有这个模式),电信DNS对普通域名返回SERVFAIL(Server Fail),而对不存在的域名也返回广告!

现在的WindowsXP支持IPv6,所以先用AAAA方式查普通域名,出错;然后用AAAA方式查加上了本地域名的IP,正常应该返回没有或者不支持,然后再用A模式查域名,就好了,但是电信竟然返回了一个广告IP!…… 就这样,XP被误导了!

暂时的解决方式有把域名和对应IP放到C:\WINDOWS\SYSTEM32\DRIVERS\ETC\hosts里面,或许关掉IPv6更好……

缺乏竞争就是不好…… 等这一段过了就去用长城宽带!……

PS: 运行ipv6 uninstall后,问题暂时解决…… XP开始用A查询了……

原理解释:

我们平时打的网址(www.google.com等),其实都是为了帮助记忆,就像寄信寄到市少客站一样。但是,邮递员并不可能光靠这个来投信(特别敬业的除外),所以要知道地址,而在网上,这个就叫IP地址,是四个数字(10.0.0.1这样的),用以表明某台机子/网络。DNS服务器的作用,就是用你给的网址(域名),查询对应的IP,并告诉你结果。如果查不到,应该返回找不到!

Microsoft KB815768:

根据 RFC 1034 的 6.2.4 小节(请参见“参考”),如果 DNS 服务器上存在“A”记录,则当查询“AAAA”记录(或任何非“A”记录)时,DNS 服务器不应返回 NXDOMAIN 或 NAME_ERROR 响应。如果 DNS 服务器没有识别出“AAAA”名称查询,它应该返回 NODATA 或返回无错误 (RCODE 0) 以及一个空的回复部分。

Old Blog Link: http://computer.mblogger.cn/henryhu/posts/62479.aspx

One Comment

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.