2009年11月10日星期二

[GFW BLOG] 关于ssh -D翻墙分享的一些遗补(附pac文件的改进探索)

来源: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.com

function 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主要有如下特点:

  1. 通过单独一个pac文件,管理你所有设备的代理服务器,不再需要为每个不同的设备配置不同的pac文件了;
  2. 把Twitter的适配URL写为:http://*twitter.com,区别于网上的写法,因为Twitter是能够通过https访问的(改host),当我们通过https访问的时候,我们不需要通过代理,对于Tiwtter重度使用者,这样能够节省下很大程度的ssh流量,这样写只有使用普通http协议访问的时候才会通过代理;
  3. 引入 google.com/search?*twitter 的写法,就是当你的Google搜索关键字包含“Twitter”的时候,也通过代理访问Google,这个写法是很有用的,当然了根据实际用途,你要把“Twitter”改为你关心的,被和谐了的关键字哦,例如“六四”等等(不许联想)。
  4. 引入 //// 的写法,就是加入一个网站你突然访问不到,你可以在URL地址后面加////,然后再尝试打开,那么这个地址就会通过代理访问了,那就不需要每次都改pac文件才知道站点是不是被墙了,十分便利哦;
  5. 引 入 google.com/search?*@ 的写法,由于Google出于私隐保护的需要,Email地址中的@符号是不会被Google索引的,所以@在搜索关键字中会被自动忽略,利用这一特性, 我们在搜索一个敏感关键字的时候在关键字中插入一个@符号,那么就会自动通过代理访问Google了,由于Google会自动忽略@,所以并不会影响你的 搜索结果,特别是在屏蔽比较多的图片搜索中,这个方法十分管用;
  6. 出于安全考虑,有一些站点虽然没有被墙但是我们是不愿意访问的,例如 带有病毒的站点或者钓鱼站点等,这些站点也能够利用pac文件来屏蔽,因此,我的pac脚本中带有两个数组,第一个是用来分辨是否被gfw墙的站点的,这 个数组叫做arrStrGFWSites,然而我还引入了另一个数组arrStrUNSSites,用来过滤不安全的站点,你把自己认为不安全的站点写在 里面就行了,脚本将把这个URL指向一个被墙的站点,达到过滤的目的。

本文的pac文件大家是不能直接用在自己的网络环境里的,写出来只是为了抛砖引玉,期待有喜欢折腾的高手写出更加智能的pac文件。

服务于生活,这正是编程的意义所在。今天就写到这里。

// 补充:如果你只需要在iPhone或者iPod touch上翻墙,那么由于iPhone OS基于Unix,是可以直接创建ssh链接的,只需要Cydia安装Openssh、Openssl和Mobile Terminal就可以了。基于Linux的设备也大同小异,例如Google的Android电话。



--
Posted By GFW Blog to GFW BLOG at 11/10/2009 06:57:00 A
--~--~---------~--~----~------------~-------~--~----~
1、请点击www.chinagfw.org访问我们,订阅地址:http://feeds2.feedburner.com/chinagfwblog。2、需要Psiphon2注册邀请的朋友,请向english@sesawe.net发送电子邮件请求,说明 "can I have psiphon2 access" 并告诉您所在的国家。也可以使用Twitter Direct Messages或登陆Psiphon网站直接向Psiphon索取使用邀请。3、GFW Blog现提供最新翻墙工具下载(地址一、二、三),翻墙(突破网络封锁)方法介绍请见本站anti-censorship部分。4、本站热烈欢迎各位朋友投稿或推荐文章,请发邮件至chinagfwblog[at]gmail.com。5、敬请关注、支持、参与Sesawe和黑箱监管集体诉讼。
To unsubscribe from this group, send email to
gfw-blog+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/gfw-blog?hl=zh-CN
-~----------~----~----~----~------~----~------~--~---

1 条评论:

  1. As a horse ranch owner, I require tractors capable of arena upkeep, transporting materials, and clearing land. The john deere 750 stands out to me for its dependability, but I'm also eyeing the john deere 4840 due to its superior horsepower. For navigating around the stables, the kubota b2601 is excellent, whereas the john deere 2010 seems like a solid choice for managing pastures. Currently, I'm torn about whether the john deere 420 would be the most suitable for my everyday farm activities. Which one would you recommend?

    回复删除