使用SSH实现iPhone自动代理


对于绝大部分国内网站,正常上网,对于twitter等,自动走SSH代理,无需手工切换,这即是所谓的“自动翻墙”,好处就是不影响国内网站的访问速度,不用来回切换网络。

IOS中最方便的翻墙方式是使用VPN,速度尚可,但PPTP和L2TP是不能像OpenVPN一样定义路由的,打开VPN后,所有流量均走VPN线路,浏览国内网站很慢,需要来回切换。windows下可以用脚本定义静态路由,使用Route设置脚本,实现国内网不经VPN搞定,但IOS下在cydia找了半天也没找到iptable这个命令包,所以还是用ssh吧。下面是具体使用方法:

1、越狱,并配置好ios的环境

如何越狱就不用我说了吧,随便一搜网上一大堆,越狱后如果你不知道如何ssh连接到你的ios设备可以参考我以前的一篇文章:为ipad2安装和配置gcc编译环境,当然这里没必要安装gcc环境,所以进行到第二步就OK了。

2、安装一些必须的软件包

如果你确定第一步你已经没有问题了,我们下面要继续安装一些必须的软件包。ssh连接到你的iPhone或者iPad后执行下面的命令:

sudo -i
apt-get install screen

然后你的ios设备上面将会安装好screen这个软件包,不知道screen是什么的同学可以参考这里

执行下面的命令:
screen –S autossh
ssh -D 1987 [用户名]@[ip地址]
#如果你自定义了ssh的端口号,记得使用-p 加你的端口号,如下:
ssh -D 1987 –p [端口号] [用户名]@[ip地址]
3、配置PAC,用来实现自动切换。
可以使用我的pac文件,http://wangheng.org/tools/autossh.pac。在iPhone的设置->WIFI->HTTP代理->自动->URL 里把它填上就可以了。
内容不多,如下:
function FindProxyForURL(url,host)
{
url = url.toLowerCase();
if(
shExpMatch(url, “facebook.com”) ||
shExpMatch(url, “googlecode.com”) ||
shExpMatch(url, “twitter.com”) ||
shExpMatch(url, “youtube.com”) ||
shExpMatch(url, “wordpress.com”) ||
shExpMatch(url, “appspot.com”) ||
shExpMatch(url, “.google.com”)
)
{
return “SOCKS 127.0.0.1:1987″;
}
return “DIRECT”;
}
return “DIRECT”;
}

好了,大功告成,享受你的无国界自由网络吧~