当你身在洞里,你不可能看到真相

两个礼拜前在朋友圈里我发了个路由器的照片,配文说“折腾一天的结果是把它变成了砖”。当时干的事情是先刷了DDWRT,然后又刷OpenWRT,结果路由器就不能用了。后来我找万能的某宝,直接买了一个刷好OpenWRT的路由器,想配置配置软件总是方便,结果这俩礼拜的周末都在折腾路由器了,但到现在还是没完全搞定,一方面感叹自己这IT是白干了,另一方面也为牛X的网络环境而折服。

那咋就这么难折腾呢,周末我给乐妈做了一段尽量通俗的解释。

上网干的事情就是根据名字知道地址(DNS服务),然后再找到一条通往该地址路。先说查地址服务,比如英国首相府(相当于谷歌),在唐宁街10号(一串IP地址),前者是名字,后者是地址,我要邮局帮我送封信给英国首相,邮局得知道它的地址。由于每天都会拆楼盖楼,名字和地址的对应关系时刻在变,各邮局之间信息需要同步,我们肯定会选就近的邮局提供服务,只可惜邮局提供的可能是假地址(DNS污染);那如果邮局不可信,我换个英国当地可信的邮局行不行,当然行,但是还可能碰到个国内的骗子邮局(DNS劫持);或者再给你增加打电话咨询真实邮局的难度,10次断9次(丢包),慢慢拖死你。等你千辛万苦终于查到地址后,信总算寄出去了,你又惊奇地发现此路不通,比如说两岸通邮前的信都需要经香港转。所以这时你还得找个在香港的亲戚,建立一个私人通道(VPN),先把信寄给他,然后再让他帮你把信转寄到英国。还有等到私人通道建立后,不幸的是你发现所有寄出的信都先到香港去兜了一大圈,包括你同城的信件,所以还得想办法自己在做个分拣工作,什么信从香港走,什么信不走香港。

在这个过程中,你需要斗智斗勇,层层剥离其中的陷阱。要在以前乐妈肯定会觉得折腾,搞这玩意干啥,上网不是好好的嘛!微信、QQ、百度(由于其无耻精神渐渐被淘汰)、淘宝、亚马逊、优酷,该有的也都有,facebook, twitter, youtube传说中的网站她本来就没听说过。但实际上作为一个普通的家长,在你认真地陪孩子学习中,由于网络的便利会给你带来更广阔的视野,更优秀的教育服务。即使抛开Google搜索,维基百科不说,就拿孩子学英语来说:
Raz-kids有很好的分级阅读教材,但国内访问很慢,经常发现QQ群中父母们交流如何翻墙;
Vocabulary.com 一个很好用的英英翻译,提供原汁原味的例句,整理的单词列表还可以做选择题测试,也是时用时不能用;
Voicetube 台湾的一个英语学习视频网站,在斯莱特林英语学习时,我较多选择了其中的内容,但它的视频都来自Youtube,常规是根本看不到的。

于是一个个普通的家庭干起了“翻墙”的勾当,学起了更复杂的IT知识,而他们的本意只是希望能快速地访问一个英语应用。网络创造了便利,而我们却神奇地发现前方有一道不可逾越的墙。

当然还是很多朋友会说:“折腾它干什么呢?即使不翻墙不也是好好的嘛。”

正好晚上给小乐念《极简欧洲史》,说到了柏拉图的经典比喻,我把给小乐念的一部分摘了过来。

直到今天,柏拉图依然是一个哲学核心问题的起点:我们的感官经验是不是真能引导我们走向真实?柏拉图相信,我们在世间的所见所感,只是存在于另一个崇高灵魂界中的完美形体的影子。世界上有普通的桌子,但有一张完美形体的桌子一直存在于某个别处。即使是个抽象的观念,例如正义和良善,也是以完美的形体存在于某个他处。人类便是来自那个灵魂界,必须透过心智和精神的锻炼,才能重新发现这个完美。

很抽象哦,没关系,柏拉图还有一个生动有力的比喻,这个才是重点。

想象一群人,被囚禁于一个幽暗洞穴之中,而且全部被锁链绑住手脚。他们背对高墙镇日坐着,看不到背后,只能面对另一面的穴壁。洞穴外头有一条路,路的尽头有一个大火炬,路上若有其他人、动物和车辆经过,火炬就会将这些东西的影子投射在他们面对的穴壁上。这些穴居人看到的唯一事物就是这些影像;他们替阴影命名、品头论足;针对它们推理辩论;他们相信,这些影子是世间真实的存在。 后来,其中一人意外被解开锁链,从山洞走到露天处。一开始,强烈的光线照得他睁不开眼,等他看到阳光下五彩缤纷、美好的立体世界,不禁又惊又疑。可是,他说,在山洞里,我们以为…… 没错,当你身在洞里,你不可能看到真相。

“没错,当你身在洞里,你不可能看到真相。”

还记得许巍的《蓝莲花》吗?“没有什么能够阻挡,你对自由的向往。”人总是向往自由的。我们受的教育不是说,老一辈无产阶级革命家抛头颅,洒热血,所要争取的不就是这一点嘛。

在MAC翻墙遇到的问题

原先有ssh的账号,在mac上翻墙倒也不麻烦,下了个secret socks,略微配置一下连上usassh。

直接勾选“Update network settings”,提示输入root口令后,就会直接修改网络中的设置以sock方式访问。这时打开safari就可以翻墙了。
不过这种方式的缺陷还是所有的站点访问都会走ssh,国内很多站点的访问速度会有影响。还是想能改成智能点的,只有自己需要的站点访问就好了。
采用PAC的方案,我把原先chrome中的proxy switchy设置的列表导出成一个pac文件,然后在网络中设置代理方式为“自动代理配置”,同时提供配置文件。
google的结果来看都说很简单,这样就ok了,可是俺死活没搞通。瞎折腾了半天,要么都访问不了,要么就是走的ssh通道。
奇了个怪了!
后来忽然想是否我的pac文件不对,于是自己写了个最简单的pac文件:
function FindProxyForURL(url, host)
{
        return “SOCKS 127.0.0.1:1080”;
}
换了个思路,也就找到了问题的根源。才发现是犯了两毛病:
1. 我最开始在代理配置文件中的URL提供的是“file://”形式的地址,采用了“选取文件”的按钮,貌似lion不支持“file://”形式。嗯,这个就启用网络共享,提供http的访问形式。
2. 从chrome导出的pac文件采用的sock地址形式都是”SOCKS5 127.0.0.1:1080”,而不是SOCKS。规格的说法应该是提供SOCKS。一字之差害死人啊。
终于在晚上睡觉前搞定了,可以安心睡觉了。

SSH代理帐号

之前一直用免费的SSH帐号,cjb不稳定了,dailiav的没有了,shellmix也是时好时坏,太折腾人了。想想还是买一个算了,刚好那天听维靖的推荐,在usassh上注册买了一个。年付70,打6折,也就是42元一年,直接用支付宝付款,还是挺方便的。速度感觉也不错。
推荐一下吧。有需要的可以点我的邀请链接,还有个优惠码是xbin999,可以打7者。不过貌似我采用的“11月末促销优惠码:201011”,还是6折的。

BTW. 开始写这篇文章的时候没能连上ssh,看服务器状态是忙,写完之后发现已经恢复。