最近在广州批发市场附近住,出租屋只能安装长城宽带(垄断,不允许 电信、联通进来),没得选择(当然,可以选择不上网)。

用了几天发现上网速度极差,上淘宝之类经常出现您的登陆异常,或者访问出错之类,有时候连 Baidu 都打不开。做了一番网络检查和分析,长城宽带实在是太无耻了,居然同时做 DNS 劫持 和 HTTP 劫持。还好我是做技术的,这种把戏难不倒我,下面是记录怎么突破 长城宽带 的这些劫持,实现正常上网的方法。

 

1. DNS 劫持

什么是 DNS 劫持?

就是,比如你访问 www.baidu.com ,它的DNS给你解析到一个它自己的 IP  211.162.61.236 ,这个 IP 地址给你弹出一个广告,然后给你 iframe 输出 百度,于是不管你上什么网站都哗啦啦的出来一片广告。更甚至,它把地址解析到一个有问题的IP上面,你就彻底上不了这个网站了。

DNS 劫持 处理起来也容易,我用的是一个普通路由器,在路由器里面设置一下就可以了,如下图:

登陆你的路由器(xxx-Link 的设置都差不多), 网络参数 —>WAN 口设置 —> 高级设置  手动设置DNS服务器,设为 114.114.114.114 就可以了。

 

aa

 

 2. HTTP 劫持

我操长城宽带xxxxx(由于政策原因,部分内容不予以显示),这是我第一次见过居然做 http 劫持的运营商(好吧,我之前只用过 电信、联通的宽带)。

什么是 HTTP 劫持?

就是,比如你访问 www.baidu.com , DNS 解析是正确的指向了 Baidu 的 IP 地址,但是你访问的时候会发现收到一个Redirect跳转,然后让你去了另外一个服务器,这个服务器提供了百度页面给你。

为什么要这么做呢?

中国上网骨干线路基本上都是电信、联通,像长城宽带这种公司,他们也是租用电信、联通的线路,然后再把这些线路 “二次销售” 给你。比如它从 电信租了个 100MB 的线路,然后来你们小区,给你们每家安装一个 10MB 的宽带,总共安装了 200 家。 看出问题来了吗?  10MB x 200 家 = 2000 MB 宽带,但是它们其实只买了 100MB 的电信宽带, 看出问题来了吧,你们的所谓 10MB 其实是缩水打折版的。

如果带宽差了这么多,这样访问岂不是很慢?是的,很慢,非常慢。于是它们就要想法子了啊,不然网速太慢你们来朝他要退款怎么办呢。法子很简单,它们自己搭建一个 “缓存服务器”,这 200 家人, 你会上百度、隔壁也会上百度, 你会到新浪去看新闻,隔壁也会到新浪去看新闻, 于是 只要第一个人访问 百度,它把页面保存到这个缓存服务器上, 当第二个人也访问百度的时候,它压根不去访问百度,而是让你去访问缓存服务器,这样 “第二个感觉网络好快啊”, 因为他压根访问的就不是百度,而是缓存。

  1. 搭建一个缓存服务器,用户只要访问过的网站都保存下来
  2. 所有用户上网,一律 劫持HTTP 访问,让用户访问缓存服务器,而不是真实的网站
  3. 第一个用户访问 Baidu,被劫持到 缓存服务器, 缓存服务器抓取百度页面,返回给这个用户,同时服务器自身也保存一份
  4. 第二个用户访问 Baidu,被劫持到 缓存服务器,缓存服务器直接返回 缓存的百度页面就可以了
  5. 第三个用户访问 Baidu, ………….

从上面的方法你可以看到,他 100MB 带宽就可以为你们 200 家服务了,因为你们压根没上网,而是访问它的缓存。而我遇到的情况更糟糕,他们的缓存服务器缓存没做好,缓存了不该缓存的东西,同时状态更新也不正确,结果就是 上淘宝 动不动就  “登陆非法”  “状态非法”  “服务器出错” … 我操xxxxx(由于政策原因,部分内容不予以显示)

我们做电商的,淘宝访问不正常等于杀了我们, 得想辙!

我用 Firefox + HttpFox 监控网络访问请求,发现只有 http 会被劫持,其它比如vpn,  ssh, qq … 都不会被劫持,看来长城宽带的技术也是小白级别的,还好。

aa

 

解决方法 ——– 翻墙

因为长城宽带只对 http 访问做劫持,所以解决方法也容易,就是我们上午在长城快带这段别走 http 协议,使用 VPN 或者 SSH 通道出去,这样由于是加密数据,长城宽带没法解析加密数据,也就没法劫持我们了。还好我们做电商的,有自己的服务器,所有也就有自己的 SSH 账号,用 SSH 通道最容易。

之前的网络访问:

你的电脑  http 请求 —— 长城宽带  劫持  —->   长城宽带的缓存服务器  —–>  www.baidu.com

解决之后的网络访问:

你的电脑  http 请求 —— MyEnTunnel SSH 加密通道 —   长城宽带  无法劫持  —–> 你的 SSH 服务器  —->  www.baidu.com

注意:使用本文方法前提是,你有一个自己的 SSH 服务器(Linux 服务器),或者最起码有一个可以用的 SSH 账号,否则下面走不下去。

1. 下载 MyEnTunnel

下载地址自己 Google / Baidu,我就不贴了

2. 安装,配置 MyEnTunnel ,如下图配置

aa

3. 连接 SSH ,看到下面的消息表明你的 SSH 通道建立成功了。如果不成功,请检查你的 SSH 配置是否正确(用户名密码对不对,端口设置对不对)

aa

 

4. SSH 通道建立之后,等于有了一个可以使用的  Socket v5 代理,现在你需要做的是让你的浏览器使用这个代理

Firefox 可以使用 Fox Proxy 插件, Chrome 可以使用 Proxy SwitchySharp 插件, 这些自己安装就行。

下面是 Firefox 使用 Fox Proxy 的配置,给这个配置取名叫 “SSH”  下面的启用里面就会有 “SSH” 可以选择:

aa

 

5. 启用 Fox Proxy ,注意:上面给这个配置取名 “SSH” , 所以才有这个 SSH 选项

aa

 

有了这些配置,现在打开你的浏览器,访问  ip138,看看 IP 地址是不是已经变成  SSH 服务器的地址了?

到此为止,你成功实现了 “翻X墙”,长城宽带 也无法劫持你的 HTTP 请求了,而你可以顺畅的使用真正的带宽, 而不是长城宽带的那个问题多多的缓存服务器了

 

2013年10月23日   写于 广州沙河服装批发市场

 

 

 

 

转载请注明:棒主妇开源,bzfshop » 突破长城宽带的 DNS劫持 和 HTTP 劫持

相关文章

我来说说

发表评论您必须先登录