来源:http://honeonet.spaces.live.com/blog/cns!15BAC1A170471DB!15093.entry
我曾在过去的文章中提到过,由于购买的商业ssh服务器大多数只允许一个用户在一个机器上登录,因此如果你家里有超过2个电脑需要翻墙,又或者你的 iPhone或者iPod touch、PSP等和你的电脑位于同一个无线路由器下,你希望你的设备同样能分享主机的ssh -D连接。
前 文中我写到可以把代理服务器指向你已经创建ssh -D代理的主机,这样做在我的VM虚拟机里面是能够分享到宿主机Mac上的ssh -D连接。但是上个星期我购买了一款叫做Simplenote的软件,正当我想要同步Mac上的笔记到iPod touch上的时候发现同步失败。经过研究发现Simplenote同步需要连接Google appspot服务器,然而appspot在我所在的区域已经被“墙歼”了,于是我尝试在iPod touch上分享我Mac上的ssh -D连接,意外地失败了。测试手上的P1i通过wifi分享来自Mac上的ssh -D连接,同样失败。经过一番折腾,发现原来ssh -D默认是不响应来自远程主机发起的连接的,如果确实需要分享,你需要在ssh -D后面再加上一个-g的参数,如:
ssh -D 7070 -g username@ssh.yourdomain.com
用这个参数创建的连接能够顺利把ssh -D的代理分享出去,当然了,你可能还会遇到pac文件的烦恼,毕竟每个人所要求翻墙访问的站点都不同。下面我分享一下我的pac文件的写法:
// Flora AntiGFW PAC
// Version 5.0
// by LeaskH.com
// i@leaskh.comfunction FindProxyForURL(url, host)
{
// AntiGFW
var arrStrGFWSites = [
"appspot.com",
"honeonet.spaces.live.com",
"blogger.com",
"blogspot.com",
"w3schools.com",
"box.net",
"bit.ly",
"j.mp",
"vimeo.com",
"mediafire.com",
"wordpress.com",
"tistory.com",
"aol.com",
"aim.com",
"bebo.com",
"cnn.com",
"hellotxt.com",
"dougscripts.com",
"iphone-dev.org",
"dailymotion.com",
"yylyyl.co.cc",
"googlevideo.com",
"imageshack.us",
"cafepress.com",
"twitterfeed.com",
"hotspotshield.com",
"youtube.com",
"twitpic.com",
"mckaywei.com",
"mimima.com",
"no-ip.com",
"oikos.com.tw",
"////",
"ytimg.com",
"sesawe.net",
"freemorenews.com",
"theappleblog.com",
"chinagfw.org",
"chinadigitaltimes.net",
"dropbox.com",
"facebook.com",
"s.leaskh.com",
"sites.weborigin.co.nz",
"docs.weborigin.co.nz",
"calendar.weborigin.co.nz",
"google.com/search?*twitter",
"google.com/search?*@",
"google.com/search?*youtube",
"sites.leaskh.com",
"docs.leaskh.com",
"openvpn.net",
"simplenoteapp.com",
"code.leaskh.com",
"moderator.leaskh.com",
"calendar.leaskh.com",
"mail.weborigin.co.nz",
"mail.leaskh.com",
"yfrog.com",
"viewmorepics.myspace.com",
"messaging.myspace.com",
"http://*twitter.com"
];
// Block unsafe sites
var arrStrUNSSites = ["74.55.154.140"];
var strActProxy = "DIRECT";
for(var iAS = 0; iAS < arrStrGFWSites.length; iAS++)
{
if(shExpMatch(url.toLowerCase(), "*" + arrStrGFWSites[iAS].toLowerCase() + "*"))
{
switch (myIpAddress())
{// When I using Virtual Machine
case "172.16.49.133": // My Virtual Machine’s IP
strActProxy = "PROXY 127.0.0.1:8118"; // My Privoxy Proxy on VM shared from Mac’s ssh -D
break;
// When I using iPod touch
case "10.0.1.253": // My iPod touch’s IP
strActProxy = "SOCKS 10.0.1.254:7070"; // My iPod touch can visit my My by this IP
break;
// When I using Mac
default:
strActProxy = "SOCKS 127.0.0.1:7070"; // My real ssh –D
break;
};
};
};
for(var iAS = 0; iAS < arrStrUNSSites.length; iAS++)
{
if(shExpMatch(url.toLowerCase(), "*" + arrStrUNSSites[iAS].toLowerCase() + "*"))
{
strActProxy = "PROXY honeonet.spaces.live.com"; // Input a site which is already blocked by GFW
};
};
return strActProxy;
};
以上就是我的pac脚本,应该说用pac分配代理服务器是非常便利和强大的。pac配合ssh -D简直就是“奔向自由”的两件神器。我的pac主要有如下特点:
- 通过单独一个pac文件,管理你所有设备的代理服务器,不再需要为每个不同的设备配置不同的pac文件了;
- 把Twitter的适配URL写为:http://*twitter.com,区别于网上的写法,因为Twitter是能够通过https访问的(改host),当我们通过https访问的时候,我们不需要通过代理,对于Tiwtter重度使用者,这样能够节省下很大程度的ssh流量,这样写只有使用普通http协议访问的时候才会通过代理;
- 引入 google.com/search?*twitter 的写法,就是当你的Google搜索关键字包含“Twitter”的时候,也通过代理访问Google,这个写法是很有用的,当然了根据实际用途,你要把“Twitter”改为你关心的,被和谐了的关键字哦,例如“六四”等等(不许联想)。
- 引入 //// 的写法,就是加入一个网站你突然访问不到,你可以在URL地址后面加////,然后再尝试打开,那么这个地址就会通过代理访问了,那就不需要每次都改pac文件才知道站点是不是被墙了,十分便利哦;
- 引 入 google.com/search?*@ 的写法,由于Google出于私隐保护的需要,Email地址中的@符号是不会被Google索引的,所以@在搜索关键字中会被自动忽略,利用这一特性, 我们在搜索一个敏感关键字的时候在关键字中插入一个@符号,那么就会自动通过代理访问Google了,由于Google会自动忽略@,所以并不会影响你的 搜索结果,特别是在屏蔽比较多的图片搜索中,这个方法十分管用;
- 出于安全考虑,有一些站点虽然没有被墙但是我们是不愿意访问的,例如 带有病毒的站点或者钓鱼站点等,这些站点也能够利用pac文件来屏蔽,因此,我的pac脚本中带有两个数组,第一个是用来分辨是否被gfw墙的站点的,这 个数组叫做arrStrGFWSites,然而我还引入了另一个数组arrStrUNSSites,用来过滤不安全的站点,你把自己认为不安全的站点写在 里面就行了,脚本将把这个URL指向一个被墙的站点,达到过滤的目的。
本文的pac文件大家是不能直接用在自己的网络环境里的,写出来只是为了抛砖引玉,期待有喜欢折腾的高手写出更加智能的pac文件。
服务于生活,这正是编程的意义所在。今天就写到这里。
// 补充:如果你只需要在iPhone或者iPod touch上翻墙,那么由于iPhone OS基于Unix,是可以直接创建ssh链接的,只需要Cydia安装Openssh、Openssl和Mobile Terminal就可以了。基于Linux的设备也大同小异,例如Google的Android电话。
1 条评论:
请问ssh 教育网访问怎么样?
发表评论