解决TP-LINK TD-W89541G的上网问题
TP-LINK TD-W89541G 是一款二合一的无线路由器,兼有无线路由与ADSL猫的功能,这是我去年为家里买的一台AP。自从给父母买了3G上网卡之后,它就一直被束之高阁,直到今天,才把它又拿出来重新使用。
安装一个AP是很easy的事情,麻烦的是后期的调试。等一切轻车熟路都连接好了之后,才发现可是该通的地方却不通。打开CMD窗口,发现无线网卡已经获得到了IP地址,可上网速度很慢,ping了一下网关,娘啊,丢包率27%,这还能叫局域网么?于是上网搜索解决办法,找到这里(http://club.360buy.com/review/140595-2-1-0.html),发现有人曾遇到过相似的问题,后来刷了新固件解决问题。查看了路由器的固件,果然是很老的版本(2009年的),便来到www.tp-link.com.cn寻找新的固件。
在TP-LINK的官方网站上找到有两款适合我的路由器的固件,分别叫“标准版”和“特制版”,其中“特制版”针对某些省市的ISP封堵路由器的情况作出了特别优化,至于做了什么优化,我也不知,于是down下这款固件,准备升级。
“特制版”固件的说明
很快就升好了固件。再次连接,打开CMD窗口,开始ping网关,这次好了,一个包都没有丢,问题应该已经解决了,WAN口在进行了MAC地址克隆之后,也获得了IP地址,似乎一切都OK了。
升级成功,固件版本变为2010年4月6日
然而,没想到的是,麻烦还在后边。
首先,发现MSN无法登录了,打开MSN之后,很快就会卡死在那里,只有在任务管理器中把进程杀掉才可结束;接着,又发现自己的这个网站没办法登录了(以前用浏览器保存过密码);再后来,发现Hotmail里边自己设置的样式什么的也都没有了。
百思不得其解,由于刚升级了固件,还是把排错的重点放在路由器上。先是修改了WAN口的MTU,由1500改为1492, 改完之后才想起来WAN口是以太网直连,并非PPPoE,改了也是白改。查看了路由器的防火墙设置,所有的设置都是关闭的,但还是不死心,把自己的这台电脑放在DMZ中与广域网直连,结果可想而知,一点效果都没有。 重装MSN,换浏览器(IE、Firefox、Chrome三个轮番上)都没用,换一台电脑,还是没用=_=!
实在是想不通了,于是干脆拔掉猫(广电猫)上的网线,直接连接到电脑上,结果一切正常了!!
这说明问题的确出在这个新固件上!我想到了刷第三方的开源固件,什么DD-WRT,Tomato,Open-WRT,WRT-X等等,全都查了一遍,结果没有一款软件能够支持我这台AP,眼泪哗哗的。T_T
继续打开IE,搜搜看有没有什么解决办法,突然发现我的Google英文首页变成了中文的,不对呀,我是设置好了的直接进入google.com,而不是google.hk的,这是为什么呢?
点击Google首页的“Google.com in English”,结果跳出来了这个页面:
没有允许Cookie?
在Chrome里边,我已经把Google设置为首页了,可是打开之后,它还是提示我把Google设为首页:
奇怪,路由器的防火墙我是关了的,本机我也没有开防火墙,而且已经设置允许所有的Cookie了,为什么还会提示没有允许Cookie呢?而且,本来已经登录的Google账户,在这里却变成了“Sign in”(未登录的状态)。
我已经允许所有的Cookie了
看到这些,我忽然有了一点头绪了——应该是Cookie引起的问题,Google中文首页、Google账户登录、自己这个网站的管理登录、MSN登录、Hotmail自定义格式等等,都应该是因为Cookie引起的,可是为什么这个固件会带来Cookie的问题呢?想到这里,我忽然恍然大悟,在以前研究电信劫持HTTP会话的时候,曾经看过一系列的文章,讲的是所谓的“网络尖兵”的防范原理,其中介绍了运营商判断是否多台电脑共同上网的算法,其中就有Cookie记录访问这样一种技术,难道,这种所谓的“特制版”的固件,里边加上了Cookie访问拦截技术?这样一来,运营商访问不了机器上的Cookie,也就实现了厂家所宣称的绕过运营商封堵的功能。
为了验证这一想法,我决定请出万能的抓包工具。立即从wireshark.org下载了最新版的wireshark进行抓包。
加了HTTP过滤器之后,我对登录网站这一过程进行抓包,如图:
可以很明显的看出,标号为①的数据包在使用HTTP Post提交验证数据,username,password都在里边,第②个数据包,是服务器的回应,可是得到的回应是什么呢——HTTP 302,HTTP 302是什么东西????经过Google,查到的答案为:“302错误表示被请求的资源暂时转移(Moved temporatily),然后会给出一个转移后的URL,而浏览器在处理服务器返回的302错误时,原则上会重新建立一个TCP连接,然后再取重定向后的URL的页面;但是如果页面存在于缓存中,则不重新获取。”(来源:http://hi.baidu.com/rockyou303/blog/item/30bbd651eaaf772142a75b30.html)。再打开这第二个数据包看一下:
看看吧,服务器要使用set-cookie在客户端创建cookie,却没有成功——资源暂时转移,我的理解是路由器固件中的某个filter禁止了这个动作,这样导致了上面的那一系列问题。
原因找到了,现在要做的就是换回那个“标准版”的固件,很快,下载下来之后,我又重新刷新了路由器:
这个标准版的固件的版本日期为2010年3月24日
刷新之后,登录网站、MSN、hotmail,Google首页等等,均恢复正常,问题得到解决。
实际上,运营商的技术并没有想象中的那么高深莫测,有些运营商直到今天还在使用非常SB的认证技术。至于这种绕开路由器封堵的方法,一个MAC地址克隆技术,就足够让他们头疼的了,像TP-LINK在firmware中过滤掉Cookie功能,实在是多此一举,不仅作用不大,反而还给用户带来了极大的干扰,纯属脱了裤子放屁,在这里向无良运营商和TP-LINK的开发人员竖起中指。