Login
中国大陆用户可能会因为网络被屏蔽而无法访问本网站或部分内容(文字/图片), 如遇到这种情况, 请翻墙访问:翻墙教程
Google Search Loading ...
Follow acette on Twitter Follow on Buzz
Tag Cloud Loading ...
Comments
Powered by Play Framwork Powered by Google App Engine

目前在PC上使用SSH tunnel翻墙是一个相当广泛使用的方案,国外SSH帐号的获取不是太难,购买起来价格也比VPN帐号要便宜。但是在智能手机上目前还不能使用SSH方案,只能用VPN。Android系统是基于Linux的,特别是root了之后,基本上要玩什么都随心所欲了。因此Android上是应该也可以使用SSH tunnel的。

先看看Windows上是怎样设置SSH翻墙的:

  • 首先需要有个支持dynamic port forwarding的SSH client,这个SSH client能开放出SOCKS服务
  • 如果浏览器(或者其他程序)支持使用SOCKS proxy,设置使用SSH client开放出来的SOCKS端口,就可以使用了
  • 如果浏览器(或者其他程序)不支持SOCKS proxy,只支持HTTP proxy,就需要再运行一个支持SOCKS的代理程序(例如Privoxy),将HTTP转成SOCKS

在Android上就要麻烦一点了,因为需要网络通讯的不仅仅是浏览器,很多Android application都需要访问网络,但是它们并不支持proxy——连HTTP proxy都不支持,更不用说SOCKS了。它们只会直接连接目标站点,如图中虚线所示,然后撞墙。

但是Linux有iptables,可以设置iptables规则(需要root权限),将HTTP/HTTPS请求forward到一个transparent SOCKS proxy去。transparent SOCKS proxy的作用是将任意TCP连接转成SOCKS连接,这样就可以走SSH tunnel出去了。我分析过几乎所有的Android应用访问网络都是走HTTP/HTTPS协议的,所有仅仅处理HTTP/HTTPS就够了。

Android上支持dynamic port forwarding的SSH client有ConnectBot,不过ConnectBot是一个有界面的应用,似乎不能由其他程序来控制,这样就不好做到翻墙软件的傻瓜化了。应该还是弄一个命令行的ssh client更合适。

在网上搜索了一下,开源的transparent SOCKS proxy有几个:transocks_evTranSocksredsocks。从文档上看,似乎transocks_ev比较适合。

但是,我现在面临的困难在于我不熟悉如何交叉编译Android平台程序(C语言),了解了一下如何搭建Android交叉编译环境,似乎挺麻烦(对我而言)。而且要让普通Linux上可运行的sshd和transocks port到Android上,也许还有一些代码要修改。不知道有没有Android系统高手能够帮忙?

9 comments
by 天方 2010-06-02
是啊,要是支持ssh就好了,便宜好多的
by biAji 2010-06-03
并不只是HTTP/HTTPS, Gtalk就走的5228端口。另外一些流媒体的更是乱。基本上不可能用iptables完成期望达到的效果。
呵呵,我是从自己需求的角度来考虑的,对我来说HTTP/HTTPS解决了就足够了。
刚才上网搜索,发现你就是CMWrap的作者,幸会!
by Wei 2010-06-03
实现应该是没有问题,ssh socks5经过一些处理再加上iptables应该和vpn一样用。但是问题是到最后还是只能根据ip来确定走不走ssh
by pangttou@gmail.com 2010-06-05
android为毛没有OpenSSH这么好用的东东
目前还没有人把OpenSSH port到Android上
by SOmeONe 2010-06-17
看了一下connectbot的代码,改一改,可以搞一个端口转发程序出来
by JerryChoi888@gmail.com 2010-06-24
您好,能否加我gtalk或者gmail,我有些事情想要跟您商量一下。我的gmail:jerrychoi888@gmail.com
by CyraSafia 2010-09-08
android版的tor,也就是orbot,可以指定某些应用的流量加密(可惜tor本身现在很难连上了),要做到傻瓜化翻墙可以参考这个思路。
大部分需要翻墙的应用都可以用独立的程序实现,比如youtube,twitter,facebook,foursquare
浏览器也可以额外装一个用作翻墙的
所以,恩,还要研究andord的api
开始做这个的时候就参考过orbot的代码。

浏览器可以设置proxy,其实做起来更简单一些。但全局翻墙工具用起来会比较方便,因为很多应用都需要访问网络。

tor的实用价值不大,难连上,也慢。
by CyraSafia 2010-09-09
不谈orbot的实用性,只是说可以借鉴他的思路
大多数时候并不希望所有应用的流量都走代理吧,没必要而且拖慢速度

p.s.从orbot的代码库里挖出来的
https://svn.torproject.org/svn/projects/android/trunk/asocks/README
by erics 2010-09-22
我看到有用GAE翻墙的,不知道楼主看到相关的没?他的思路是在android运行脚本。网址http://blog.chinaunix.net/u3/116533/showart_2290099.html
GAppProxy也是在本地运行一个HTTP/HTTPS代理服务器。
原文的方法只适用于浏览器,如果要用于其他应用,就要结合iptables。
Post a comment

Login with your Google account to post a comment