iPhone通过ssh tunnel翻墙小记

最近突然没了vpn用,这对于一个热心关注水深火热的外国人生活的文明用语丝是个不小的打击,于是立马研究起解决方法。 思路大概就是用autossh建立个长期的ssh tunnel转socks5的连接,然后用3proxy把socks5转成http proxy,最后在iphone的网络设置里把本机的http代理填上就搞定了。 听起来感觉挺麻烦,其实设置一次后就一劳永逸了。 过程:

首先在cydia里把必要的几个工具装上

Openssh

Autossh

Vi Improved

3proxy

MobileTerminal

Debian Utilities  (一些常用unix命令行软件)

然后搞定免验证ssh到服务器上的东西,这部分不详细描叙。(关键字:ssh rsa key 自动登录) 命令行打上 /usr/bin/autossh -M 0 -fN [email protected] -p 22 -D 0.0.0.0:8087 这样就搞定了ssh tunnel的部分,建立起一个8087的socks5代理,超时断线的时候autossh会帮你自动重连。不过iphone默认不支持用socks5代理,所以要用3proxy把socks5转成http。 接下来在iphone里找个顺眼的地方新建一个3proxy.cfg文件,写入下面的内容: #!/usr/bin/3proxy daemon auth iponly log /var/log/3proxy.log D rotate 5 fakeresolve internal 127.0.0.1 allow * 127.0.0.1 * parent 1000 socks5+ 127.0.0.1 8087 proxy -p8088 -a -i127.0.0.1 这个是3proxy的配置文件,用来告诉3proxy怎么运行。 内容大概就是让3proxy后台执行、只允许本机连接、把本机8087端口的socks5转发到8088端口的http。 (想要测试3proxy有没运行成功的话可以把设置里的daemon去掉)

然后命令行打上

3proxy 3proxy.cfg 让3proxy跑起来了 最后在设置里把搭好的http proxy填上就完工了。

ssh-tunnel

主要缺点: 1. 所有连接都走代理的路线,国内网站有点慢,不过这个可以通过配置pac来解决。 2. autossh的超时反应不太灵活,有时连接不顺畅会卡住几十秒。 3. iphone重启之后要重新运行一下autossh和3proxy,这点可以写个自动启动的脚本解决(闲麻烦,pass)

这个方案用了几天后感觉不怎么爽后来抛弃掉了。 -o-