某天用着QQ突然掉线,重连多次发现无补于事,还以为是OSX的客户端出了问题,原来大伙登录都出现『time out』的情况,于是决定找出问题所在。
0x01 事情描述
我校计算机机房基本集中在4、5楼,上机课经常出现一群人同时下LOL客户端..此等占用带宽现象确实令人发指,粗略猜测,这也是封掉QQ&某些域名的主要原因。
我身处的实验室处于4楼,假如4、5楼交换机进行某些屏蔽,实验室难逃一劫。社工后发现,3楼实验室不受限制,4、5楼实验室遭遇相同,于是整件事变得合情合理了。
难以置信的是,手机版QQ能畅通无阻访问,使用SS+sock5代理登录QQ的时候,发现发送接收照片功能已废,但之前提交过(缓存在腾讯服务器)的照片、表情可以正常接收。
0x02 抓包
通过charles抓包发现,登录QQ时,如果网络正常,只会连接一个登录服务器,默认选择TCP登录。tcpconn2.tencent.com:80
//默认TCP登录服务器
当网络不畅(QQ被屏蔽时)会遍历所有登录服务器(共6个域名)http://tcpconn.tencent.com - http://tcpconn6.tencent.com
图中可见,tcpconn六个服务器都成功连接,证明它并不是直接屏蔽域名和解析出来的ip来限制登录的。
接着,尝试输入错误密码,果然是会反馈密码登录错误,这又再次证明与登录服务器的TCP通讯是正常的。
0x03 尝试手机登录并抓包
选择更换登录的TCP_UDP服务器地址无果后,尝试了解为什么手机QQ可以登录。起初用Android同一网段抓包,但初步发现Android代理只能抓取自带浏览器的内容,其他软件数据不通过代理。于是用了基友的苹果肾机了
抓包发现,IOS版手机QQ并不通过tcpconn*.tencent.com访问,或者通过苹果的推送服务进行信息传输,但抓到这个,访问后发现是基于node.js的,用途不明(Offline估计是离线消息还是什么?)
0x04 找到被屏蔽路由
通过traceroute tcpconn2.tencent.com
返回信息发现,经过的第三个路由正是能正常登录QQ的三楼实验室的路由10.1.56.254
(蓝框),而我处在路由192.168.41.254
(红框),可见在路由192.168.24.253
处,QQ已被屏蔽。
0x05 开心大发现
偶然发现,四楼实验室和三楼实验室虽处于不同网段内,但可以ping通,可能是因为四楼路由要经过三楼的缘故吧。然而传递单向,三楼却ping不通四楼,构思着三楼可以搭一台prxoy server(又或者可以用无线路由做server..然后四楼用其proxy登录即可。
解决方案
1.使用代理...
2.使用WEB QQ..
3.三楼搭proxy..
5.咳咳...
由于SS+Sock5代理过于麻烦,而且看到小伙伴用的第三方免费代理好有安全性的问题,于是用COW在aliyun搭了个代理,配置如下
type:HTTP proxy
ip:proxy.pwfee.com
port:1234
user&&passwd:sys (实验室首字母)
Win版QQ配置如下
Dec 11更新:
在OSX环境使用并没有出现什么问题,但今天小伙伴反馈称,使用代理后,QQ传图等功能依旧无法使用。在Win下测试了一下,发现Win版QQ与OSX不同,Win版QQ客户端使用HTTP代理后,访问用户资料页面等操作依旧通过IE直连服务器来实现的。
访问用户资料页面出现错误提示
抓包显示以上域名无法访问(被屏蔽)
几番折腾之后,只能想到用Shadowsocks的PAC功能解决。
PAC->编辑本地PAC文件,然后打开pac文件。
1.查找"qq"会发现,有一行"@@||qq.com",即为将qq.com排除在代理访问名单之外,想让qq在代理访问之列,必须将其删除。
2.删除后添加".qq.com",即为*.qq.com都通过代理访问。
完
本人技术有限,错漏之处,敬请指出!