使用SSH突破移动WAP网关封锁
上次说到使用Openvpn通过移动WAP网关来使得电脑上网,现在某些地方的移动网关已经进行了屏蔽,可以想象,现在只是还没有大量的企业应用,一旦有了真正的移动企业应用,比如一直在推广的黑莓,SSL隧道是不可能被完全屏蔽的,下面我要说的是,使用另外一种方法通过移动的WAP网关来使得电脑可以上网,此方法通常被用在安全连接远程局域网应用中,比如,在VNC没有对协议进行加密之前,网络管理员不得不使用SSH端口转发来使得远程连接VNC变得更为安全,这样,VNC的数据传输都是通过SSH转发的,不会有对外暴露VNC端口的危险,那么,很显然,我们可以使用这种方法,将HTTP代理服务器的端口转发到本地,也就是SSH tunnel,移动的WAP网关屏蔽了代理服务请求,但是它不能屏蔽加密协议通过,因为它没有办法知道传输的是什么,要达到上述的目的,需要以下条件:
1,一台公网服务器
2,公网服务器安装有SSH服务器
3,公网服务器安装有代理服务器,squid,tinyproxy等
4,居家旅行杀人越货必备软件putty
首先,当然是使用putty进行设置,通过移动的WAP网关10.0.0.172:80,然后设置转发端口,例如,在公网服务器上代理服务器的端口是8080,我们想通过SSH隧道把它转发到本地的8080端口,如图所示:
设置完成之后,即可登录服务器,如果没有意外发生的话,我们可以在putty的日志中看到如下字样:
2008-01-19 12:41:32 Allocated pty (ospeed 38400bps, ispeed 38400bps)
2008-01-19 12:41:34 Started a shell/command
2008-01-19 12:41:41 Opening forwarded connection to localhost:8080
这表示端口已经打开,你可以使用浏览器设置代理服务器为localhost:8080,然后就可以上网浏览啦,网上盛传的多是修改浏览器UA以达到欺骗移动WAP网关从而浏览网页的目的,经过处理,移动WAP网关输出的网页头均带有WML标记,使得浏览器无法正常显示,当然,还可以修改mime type使得浏览器能够正常显示,这对于一般用户来说基本上是很困难的,而使用SSH进行端口转发,也只是极少数网络管理员可以使用的方法,对于大多数人没有意义,这里只是提出一种方法,这种方法被大规模的应用,是在一个不太合适用来表述的环境中,我们说到,加密的协议,是无法被网关识别的,显然,网关知道是一些加密的数据通过,但是网关不可能知道这些数据是什么,也就无从进行屏蔽,这种方法,被广泛应用在XX功的破网软件上,即使是GFW也不能检测到,因为它不是明文的,我一直在猜测这些个软件的工作原理,大致如下,以工作步骤为序,大家可以探讨:
1,使用境外DNS对动态域名进行解析,通过SSL隧道得到若干通知服务器地址,这些通知服务器都是各国动态IP。
说明:国内DNS对一些境外网站进行了屏蔽,特别是一些不听话的动态域名服务商,例如较为著名但迅速在国内销声匿迹的no-ip,使用境外DNS能得到准确的地址。
2,根据通知服务器返回的地址,得到正在工作的SSL隧道内容服务器地址,这些内容服务器当然也是各国的动态IP。
说明:可以屏蔽域名,也可以屏蔽IP,但是不能屏蔽动态IP,不能屏蔽DSL线路上的IP,如果IP地址在这个星球上刚好够用,才能解决这个问题,无论IP地址是缺乏,还是剩余过度,都不可能进行准确的屏蔽,使用SSL隧道是必须的,因为GFW会直接过滤掉明文的非法内容使得链接断开,也就无法继续下面的通信。
3,使用内置的stunnel对内容服务器的ssl隧道转发到本地某个端口,使得浏览器只需打开类似于http://127.0.0.1:1234 这样的链接即可浏览内容服务器上的内容。
说明:直接调出ssl内容服务器的IP地址带有风险,会使得网监人员的封锁变得有目的性,而普通用户也会困扰于浏览器因为错误的证书弹出的提示,使用stunnel转发,给普通用户一个较为友好的界面,我认为这才是最主要的目的。
下面我们讨论一下屏蔽的可能性,在第一步,屏蔽境外DNS是不可行的,当年169工程就是试图建立一个完全国内的网络,不过很快就被证明是失败的,只要在第一步没有办法屏蔽境外DNS对动态域名进行的解析,后面的就没有办法了,屏蔽对特定的动态域名解析是可行的,但是只要不把境外的动态域名服务商都屏蔽掉,这基本上没有太大作用。走向第二步,就没有什么办法可以屏蔽了,全是加密过的IP链接。至此,我实在是想不出来什么办法可以屏蔽这样的一个过程,可以考虑从源头着手,重点屏蔽通知服务器,不过,如果这些通知服务器和内容服务器都是在一起的,互相之间可以通知网络的变化,连成一个随时变化的动态网络,那就没办法了,综上,唯一可以屏蔽的地方就是在使用境外DNS对动态域名进行解析的地方,这是没有经过加密的数据。