Shell's Home

Oct 9, 2011 - 1 minute read

十月二日上

昨天果然迟到了,半夜一点才到。今早起来,早餐吃的还不错。有一个管家专门负责煮饭,专门的独栋小别墅。早餐大概十多道,东西很赞。说是五星级,还是有点道理的。今天导游换了一个,换成了云南当地的导游。丽江导游很特殊,全国唯一的公务员导游,工资超高。而且其他团到了丽江,必须换当地导游上去。我们的导游姓陈,父亲是藏族,本人是纳西族,说话很不客气,很拽。他也不怕你们投诉,只要不出大纰漏,这个公务员是铁定混下去的。云南为了打造精品旅游线路才搞出高价导游这么个思路,不过看来公务员制是最大的败笔。在最需要服务精神的旅游服务业,使用无法投诉的公务员制度,云南旅委的人脑袋被门夹过了吧。 早上导游忽悠我们借棉衣和氧气瓶,氧气要80,酒店只有20。棉衣要30,下面借只有20。估计导游和老板有关系。不过导游提到,上面的高山黑彝族很排外,发现是下面借的衣服可能给扒了。其实哪那么容易,下面租的和自己买的很难分。不过想想强龙不压地头蛇,zoomy同学自己出来玩也被当地藏人收了200。没必要得罪当地人,还是摸鼻子认了吧。 旅行的第一站是蓝月河峡谷,到了峡谷后全部要换电瓶车和环保车,以避免污染。从环保角度来说,还是很有道理的。不过全程电瓶车50,环保车20,大缆车152,很贵。比背包客栈上面列出的价格高了很多,我也不知道为什么,是国庆涨价还是通货膨胀,无法确认。 蓝月河是一条很短的河流,导游介绍说,平时碧蓝,阴天浅绿,下雨时间长了,就是乳白。我们去的时候,正好下雨,河水颜色是浅绿接近乳白。山在两侧,云就从山上飘过,仿佛林中起烟,又像神仙降于地上。玉龙这里的山顶,都是藏在云中的。每次抬头,都能看到隐隐约约的山峰,和望不见的山顶。 蓝月谷出来,电瓶车把我们送到环保车站。这里的环保车是绿色的,导游笑称是青蛙车。先到先坐,不是每个人都有座位。第二站是印象丽江,老谋子导演的。一贯风格,人很多,很震撼。不过我看不懂,导游也说,他也看不懂。出来就是坐大缆车上玉龙雪山了。首先要说明的是,雪山不是什么时候都有雪的。每年11,12,次年1月,能看到。不过见鬼的冷,条件恶劣,我们还要过春节,人少的很。我们上去的时候,什么雪都没有,而且还下着细雨,走在山上就像走在云里。这里要特别感谢微型摄像机的卖家,在这种恶劣环境下,还是录到了将近两个小时的像。 山下面的商店有卖烤牦牛肉,还有鸡腿什么的,很好吃。不过脂肪类食物对高原反应不利,因此求保险的可以那里买一条巧克力吃。东西不错,就是贵了点。大索道挺值得一去,大概有五分钟的时间里面,都是在索道上面晃荡。我们去的时候刚好在下雨,就如同云海泛舟一样。 至于高原反应,大家可以不用想的太可怕。贝壳上去后,就是有点头晕。身体反应大约相当于健身房里面登山机,六级到七级的阻力运动20分钟以上后。稍大运动量会产生喘气,但是休息半分钟就没事了。氧气瓶完全用不上,用过的人也说没作用。实际上由于是从3300米瞬间升高上去的,所以人体血液氧至少可以保持非剧烈运动5-10分钟。如果上去就反应了,绝对是吓出来的。在雪山上适应后,贝壳甚至可以唱歌。不过也不要轻视高原反应,一天以上在4000以上,或者晚上住在3500以上绝对是有风险的。一小时没事不代表一天没事,所以不要大意。 路走到一半,猫咪就不行了,喘气,心跳加速,有点高原反应的症状。所以我们走了四分之三就不再往下走了。下栈道的时候,右腿外侧肌肉酸痛,判断是缺氧状态下强剂量运动导致的急性肌肉反应,坐坐就会没事。可惜下雨,栈道上没地方坐。下山的时候,还出现了嘴唇发白和紫斑,看起来吓人。不过贝壳的判断是,心理性因素居多。至于贝壳本人,只有偶尔头晕,不影响行走,呼吸一下就消失。拉着猫咪走了一路,什么事情都没有。

Oct 8, 2011 - 1 minute read

九月三十日

上午本来要坐春秋航空的9c8953航班从虹桥一号航站楼出发,结果居然碰到改机场,改到了浦东飞。当然,航班也肯定延迟的了。果然啊,航班延迟了!(这句是猫咪说的)不过还算运气,到了浦东后没有什么等待就起飞了,基本只延迟了一个小时,权当地面延迟算了。 到了昆明,已经是将近一点。我饿的厉害,就查了查点评,叫门口的黑车师傅送我们到一家叫做乡村小榭的馆子。他们的菜非常赞,药膳鸡汤(好像是天麻炖鸡汤,老板说的不清楚,贝壳也没吃过,吃不出来),还有胡椒叶子炒牛肉都很好吃。量也比较足,三个菜,三人吃正好,两个人太饱。凉拌核桃也不错,就是小贵,在昆明要四十。 下午去了滇池,十月份的滇池池水还比较清澈,没有传闻中绿藻长满水面的可怕。旁边的西山如刀削,云从山的那边涌过来,让山顶始终处于朦胧仙境之中。 然后,猫咪的同学就过来了。云南局的同学很客气,带着我们满昆明的兜圈子。先去了正义路的步行街,还有景星街花鸟市场。那里有很多奇奇怪怪的东西,例如水烟筒和烟丝。水烟筒是一个竹筒,里面放水。上面放烟丝点着,吸烟的时候烟气就通过水,进行过滤。猫咪好像对这玩意很感兴趣的样子,一路大惊小怪的。两旁全是老建筑,据说原来还要多还要大,不过街道改造,很多都拆掉了。而且上面是老建筑,下面是一个借影碟的地方。感觉上下很不搭调。不过到了丽江我们才知道,比这个更不搭调的有的是。市场里面还有很多漂亮的木雕和银饰,牛角梳子,玉石琥珀什么的。本着不懂不买的宗旨,我们就不掺和了。 然后我们看到了一只聪明的狗狗,毛色金黄,很漂亮。会算算术,认钞票,和游人一起摆pose合影。摆pose的时候还会跟着游人的动作调整姿势在那里臭美。合影每次一块,表演也没有讨要,就在那里放个盆而已。云南局同学的老婆说,还看到过这只狗狗和他的主人去买菜,狗狗叼着个篮子在后面跟着。估计是主人养的爱犬,只是没事时出来挣钱而已,不是专门训练了赚钱的。 昆明的小吃很好吃,可惜都有点偏辣。有一种大米压成的薄饼,烧热了夹上酱料,还可以夹油条什么的,叫做烧洱块。趁热吃,很不错。这里的土豆用油炸过,加上花椒辣椒姜黄拌一下,也很不错。后来我们去吃了过桥米线,很正宗,汤很鲜。不过据说当地人吃的都是另一种,叫做小锅米线的。过桥米线是用带油的鸡汤保温,烫熟米线来吃,属于外卖送饭的吃法。不过注意,真的外卖时间长,烫熟烧熟过的米线还好,但是烫肉片就不安全了。小锅米线是用调料和米线一起在锅里煮,一口小锅只出一碗米线。味道酸辣开胃,和过桥米线截然不同。当地的笋很嫩,烤鱼也很好吃。唯一的问题就是烤鱼佐料。没有鲜艳的红色,入口也不辣。但是吃过几分钟,尤其再喝一口米线的热汤后,嘴巴里面又麻又辣,犹如针扎火烧一般。上次碰到这么厉害的辣椒已经是高中时候吃杨健的韩国泡椒,吃进去几秒就有反映。这次却迟了两分钟,又喝了口热汤,吃了个暗亏。 晚上大家聊了一下旅游里面的注意事项,到哪里买什么东西什么的,就由人家送我们回酒店。真是太感谢他们了。

Oct 6, 2011 - 3 minute read

航空和铁路事故对比

[]() 老婆经常说怕坐飞机,因为飞机比铁路更加不安全。作为一个在机场长大的家伙,我对此嗤之以鼻。不过作为死理性派,我还是列出数据,对比一下。 中国民用航空原属空军,后来分离为民航(东方,北方,南方,还有几个记不清了,加上飞国际的国航),时间是1982年。在82-97年的15年间,没有发生过有记载的空难。但是基于历史问题和意识形态问题,在91-95年,海峡上空发生过多次劫机飞往台湾的事件,还有劫机犯解送回大陆的飞机再被劫持的奇闻。当然,鉴于没有空难,也没有官方新闻,我们当八卦听就好。为了统一时间,我们从1985年开始计算。 1997年5月8日 中国南方航空3456号班机空难 35人死亡/共35人 1998年9月10日 中国东方航空586号班机事故 0人死亡/9人受伤/共137人 2002年4月15日 中国国际航空129号班机空难 128人死亡/共166人 2002年5月7日 中国北方航空6136号班机空难 112人死亡/共112人 2004年11月21日 中国东方航空5210号班机空难 55人死亡/共55人 2010年8月24日 河南航空8387号班机空难 42人死亡/共96人 全部空难共计6次,601人,372人死亡,229人生还。 而中国的铁路事故呢?原始链接大家猛击[这里](http://zh.wikipedia.org/wiki/%E4%B8%AD%E5%9B%BD%E9%93%81%E8%B7%AF%E4%BA%8B%E6%95%85%E5%88%97%E8%A1%A8)。 \ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------- ------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ --------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------- ----- --------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [1986年](http://zh.wikipedia.org/wiki/1986%E5%B9%B4 "1986年")[1月15日](http://zh.wikipedia.org/wiki/1%E6%9C%8815%E6%97%A5 "1月15日") [京广](http://zh.wikipedia.org/wiki/%E4%BA%AC%E5%B9%BF%E9%93%81%E8%B7%AF "京广铁路") [广东省](http://zh.wikipedia.org/wiki/%E5%B9%BF%E4%B8%9C%E7%9C%81 "广东省")[韶关市](http://zh.wikipedia.org/wiki/%E9%9F%B6%E5%85%B3%E5%B8%82 "韶关市")[乐昌县](http://zh.wikipedia.org/wiki/%E4%B9%90%E6%98%8C%E5%8E%BF "乐昌县") 247([武昌](http://zh.wikipedia.org/wiki/%E6%AD%A6%E6%98%8C "武昌")—[广州](http://zh.wikipedia.org/wiki/%E5%B9%BF%E5%B7%9E "广州")) 爆炸 犯罪分子作案 7 38 [1987年](http://zh.wikipedia.org/wiki/1987%E5%B9%B4 "1987年")[7月18日](http://zh.wikipedia.org/wiki/7%E6%9C%8818%E6%97%A5 "7月18日") [京广](http://zh.wikipedia.org/wiki/%E4%BA%AC%E5%B9%BF%E9%93%81%E8%B7%AF "京广铁路") [河南省](http://zh.wikipedia.org/wiki/%E6%B2%B3%E5%8D%97%E7%9C%81 "河南省")[漯河市](http://zh.wikipedia.org/wiki/%E6%BC%AF%E6%B2%B3%E5%B8%82 "

Oct 4, 2011 - 1 minute read

阿宅程序员的故事——说不清

有人问阿宅,为什么自己的机器装了linux后可用空间很小。阿宅回答: 阿这个要看你是怎么挂载你的硬盘的,还有你的分区是怎么做的,你有做配额么?文件系统是什么系统? 结果人家一头雾水,老兄,我是香港人,你讲的我听不懂阿。阿宅想了想,回答: OK, 这个要看你怎么mount你的hard disk的,还有你的partation是怎么做的,有没有加quota?filesystem是哪个? 结果人家还是一头雾水——我的电脑和山(mountain)有什么关系?为什么还有引用(quote)? ——阿宅的英文,只能用读和写处理,不能用听和说的,大家切记…

Oct 2, 2011 - 1 minute read

lxde使用观感

前一段时间,雨苍问我有没有功夫参加台湾的lxde开发,做志愿者。不巧今年结婚装修,事情比较多。除了给debian贡献几个包练习一下,没有什么别的计划,就给推了。不过推归推,当时就看到了lxde的桌面,还挺不错的。 前几天,xfce又一次大升级,整个系统加了N多功能出来,顿时感觉太庞大臃肿了。贝壳喜欢的是精简有效的桌面,不是庞大的怪物——否则我不会用gnome/kde阿?尤其是贝壳的三台纯linux,一台上网本,一台atom的低功耗机,都是低资源量的。其余系统都是虚拟机。于是就策划换掉xfce4。替代品有两个,一个是lxde,还有一个是enlightenment,两个都是以轻量级而出名的桌面。不过杯具的是,enlightenment在做vnc测试的时候总是死机,所以压根没法用。所以目前的系统就花落lxde了。 关于enlightenment,有几点补充说明。一个是,这个东西在debian下的包叫做e17,不要直接找enlightenment。另外,他的bug是,在vnc下面可以用,但是如果进行setup,就会找不到模块,然后SEG FAULT。我试过用bugreport去汇报错误,但是邮件发不出去,现在还在找为什么。 好吧,题归正传,lxde做桌面,至少有以下几点好处。 轻量。我看到的内存消耗是20M,CPU消耗很低。简洁。整个系统没有太多废物组件,也没有满天飞的各种插件。除了有限的几个组件外,其余都是自己配置的。可变。目前我用terminator替代lxterminal作为标准term,用的挺好。 OK,下面简单说一下lxde使用过程中的几个心得。 pcmanfm不支持树形目录结构。这个太坑爹了。据说版本库中的已经改出来了,debian testing还得等等。所以我觉得还可以观望一下。lxlauncher不起作用。不过幸好我也不需要这个。这个据说是为了平板或上网本做的启动系统。我现在用的是launchy,是为键盘控设计的,挺不错。快捷键不支持编辑。需要你手工修改~/.config/openbox/lxde-rc.xml。具体可以参考这个。他里面提到的两个连接是openbox的wiki,分别是Bindings和Actions。注意,wiki上有些资料是错的!下面我会讲一下哪些需要修正。没有mail notification。我自己装了一个mail-notification,还不错。可惜没有邮件的时候,托盘区图标经常失踪,不知道为啥。反正来了邮件是会出现的。自动启动不自动。可以把desktop文件放入~/.config/autostart中。也可以在~/.config/lxsession/LXDE/autostart中写,每行一个程序名,不用&结尾,不是bash脚本。我用的是后者。 下面是快捷键的一些错误。 ToggleMaximize应当写成ToggleMaximizeFull。Desktop指令下面的to标签应当是desktop标签。

Oct 1, 2011 - 1 minute read

Vnc动态调整分辨率

vnc可以调整分辨率,这个很简单。 vncserver -geometry HxV 就可以设定纵横分辨率了。 但是vnc怎么动态调整分辨率呢?RDP可以根据连接时参数来调整分辨率,vnc好像没有这个功能吧? 最近贝壳需要在电脑上和上网本上同时使用一个桌面,于是碰到了这个问题。经过寻找,这个问题的答案是这样的。 vncserver -geometry 1600x1000 -geometry 1440x900 -geometry 1024x600 然后,在进入系统后,输入xrandr,可以看到你启动时设定的多个分辨率。再用xrandr -s N,就可以选择合适的分辨率了。 这个是X的randr扩展,需要vncserver版本在4以上。我的环境是debian testing,vnc4.1.1。欢迎大家测试。

Sep 29, 2011 - 1 minute read

又撞了

我都不好意思说什么了,中国网民都是预言帝阿。 大概看了一下新闻,我整理出来几个有关的新闻,按照时间线排列。 2009-12-22 上海地铁一号线一日内连发4起事故 2011-07-23 2011年甬台温铁路列车追尾事故 2011-07-28 上海地铁10号线列车开错方向 2011-09-27 地铁10号线追尾 我觉得比较值得关注的有以下几个问题: 上海地铁,一号线出过问题,10号线又出问题,加上温州动车,据说信号系统供应商是同一家,这是不是一个巧合? 地铁据说是改为电话闭塞后出现的问题,为什么?不会又像温州事故一样说不清原因了吧。 本次问题,温州动车,都是信号系统故障后人力操作导致的问题。人力操作会出错我们都知道,那么,信号系统损坏概率有多高?(很多时候,损坏后人力操作,没事我们就完全不知道了)平均可用时间标准能达到多少? 人工操作的指令是谁下达的?在下达前是否有过对调度室工作能力的评估?调度室是否有相关演练和经验?如果有,为什么会出错? 这次的事故赔偿机制怎么算?不能因为只伤不死就算了吧? 上次一号线事故后,上海地铁是否分析过问题,结论是什么,采取过什么措施。 十号线开错方向后,是否分析过问题,结论是什么,采取过什么措施。 这家信号系统供应商,还有提供哪些线路的信号系统,是否应当公开?(关于这点,可以看这个,上海地铁一,三,四,十,十二,十三是他们供应的) 地铁的安检系统是否还有必要,看起来地铁比乘客的包更不安全。 要保证系统的安全性,有两种思路。一种是自动系统保证绝对安全,不相信人的作用。如果自动系统出现故障,就全部停止运行。这个思路的要求是系统的工业级稳定性,例如电话系统。基本接近99.999%可用,合一年停机不超过5分钟。这个标准是妖怪,从二十到三十年的周期上看,可停机时间只有1小时多点。AT&T的工业级黄金标准好像也出现过6小时的停机——直接用光了70年的配额。所以现在基本都是只能保证到99.995%。 另一个思路,是保证机械自动系统出问题后通过受培训的人紧急处理,例如供电系统。大家知道供电系统损坏概率远远高于电话,而且稳定供电的成本太高。所以大部分政府都是提供停电预案,在紧急区域(医院,学校,部分宾馆)提供备用电源,在停电期间提供巡逻,等等。大家都知道停电的时候要拔掉电器设备,留一盏灯,等待供电恢复。 最稳定的思路,是同时使用两者。即保证自动系统的绝对安全,也持续培训人,例如火警系统。即使平时碰不上,也持续的训练如何处理对应,保证万无一失。 中国的铁路系统是哪个?中国的铁路系统是自动系统出问题后,用未经培训的人来替代。为什么不用培训过的?因为不出问题就没机会培训阿。

Sep 28, 2011 - 1 minute read

python内存不释放原理

在maillist里面看到无数次的有人问,python速度为什么这么慢,python内存管理很差。实话说,我前面已经说过了。如果你在意内存/CPU,不要用python,改用C吧。就算C不行,起码也用个go或者java。不过今天还是说说,python的内存为什么不释放。 首先,python的初始内存消耗比C大,而且大很多。这个主要来自python解释器的开销,没什么好解释的。用解释器,就得承担解释器运行开销。然后,python中的每个对象,都有一定的对象描述成本。因此一个long为例,在C下面一般是4个字节(不用int是因为int在不同平台下是变长的),而python下面至少是16个字节。如果你生成100W个对象,那么C的内存消耗是4M,python的是16M。这些都是常规内存消耗,搞不明白的就别问了,不再解释。 下面解释一下python的内存释放情况。 如果是C,通常是用long array[1024 * 1024]的方法来生成1M个对象空间。当然,实际这样是不一定能运行的。因为linux的默认栈空间是8M,而Windows默认栈空间只有1M。所以代码在linux下可以通过,而windows下会跑爆掉。怎么办?下面说。当这个函数执行完毕后,当RET的时候,会自动退栈,空间就会自动释放掉(虽然在逻辑上这部分空间还是保留没有释放的,然而空间不活跃了,不过统计的时候还是占用的)。当然,更好的办法是使用malloc。malloc会从系统中自动提取和管理空间,free自动释放。这样无论是linux还是windows,都没有栈空间不足的问题。free后就会自动交还系统(4M已经超过了交还的最大阀值,一般glibc不会自己闷掉不交给系统的)。如果你忘记free,这部分内存就会一直占用,直到进程退出未知,这就是很有名的内存泄露。 python下的情况更加复杂一些,python没有直接使用malloc为对象分配细粒度内存,而是使用了三层堆结构,加上三色标记进行回收。所谓三层堆,细节我们不说了,在源码阅读笔记里面写的比较详细。但是有一点需要我们记住的——当我们分配某个大小的内存的时候,内存管理器实际上是向上对齐到8字节,然后去对应的内存池中切一块出来用的。也就是说,如果我们运气比较差,申请了10个对象,偏偏每个对象大小差8字节。这样系统就要给我们分配10个堆,而不是刚刚好。如果你的对象粒度都比较散,那么内存开销比较大也不奇怪。 python下还有一个更坑爹的事情,也是大部分内存不释放的根本原因。在int/str等对象的模块中,有个模块级别的对象缓存链表,static PyObject * free_list。当对象释放的时候,压根不会还到池中,而是直接在free_list中缓存。根据我的搜索,python内部没有地方对此进行干预。就是说,一旦你真的生成了1M个数字对象,然后释放。这1M个对象会在free_list链表中等待重用,直到天荒地老,这16M内存压根不会返还。而且,int的对象缓存链表和str的还不通用。如果你又做了1M个str对象,他的开销还是会继续上涨。几乎所有的内建对象都有这种机制,因此对于大规模对象同时生成,python会消耗大量内存,并且永不释放。 解决的机制,基本只有用yield来将列表对象转换为生成器对象。列表对象会同时生成所有元素,从而直接分配所有内存。而生成器则是一次生成一个元素,比较节约内存。

Sep 27, 2011 - 1 minute read

uwsgi under debian

好了,debian官方的uwsgi总算出来了。包已经到了testing,stable暂时别指望了,等下一次release吧。这次打的包,比贝壳打的复杂多了。贝壳自己只打了python专用的包,debian官方的包将多个语言分别打成了plugins。 下面说说,使用debian官方的包如何做uwsgi发布,还是vhost模式哦。 首先安装uwsgi,uwsgi-plugin-python这两个包。uwsgi-plugin-greenlet-python也可以考虑,装不装看你的需求。 然后在/etc/uwsgi/apps-available/sites.xml下面写一个文本文件,内容如下: <uwsgi> <vhost/> <no-site/> </uwsgi> 再从/etc/uwsgi/apps-enabled/sites.xml链接过去,重启uwsgi服务,事情就搞定了。 默认的配置在/usr/share/uwsgi/conf/default.ini,可以看看是否都满意了。一般来说,master和no-orphans都建议打开,chmod-socket最高660,改成600应该也可以工作。贝壳的机器负载小,只用一个worker就够了,所以完整的配置是这样的: <uwsgi> <plugins>greenlet,ugreen</plugins> <workers>1</workers> <reload-on-as>128</reload-on-as> <vhost/> <no-site/> </uwsgi> nginx里面如此设定: location /asdf { include uwsgi\_params; uwsgi\_param UWSGI\_PYHOME /usr; uwsgi\_param UWSGI\_CHDIR /var/web/hosts; uwsgi\_param UWSGI\_SCRIPT main; uwsgi\_pass unix:/run/uwsgi/sites/socket; } 其中,我的程序放在/var/web/hosts底下,使用系统环境来运行(而不是virtualenv),主脚本(带applications那个)是main.py。unix socket和上文default.ini里面的socket正好对应上。 同理,我们其实还可以开多个uwsgi应用,只要放置多个xml配置就好。不过既然都采用了vhost模式,何必还开多个呢?这毕竟不是虚拟网站,要给其他人使用的。

Sep 26, 2011 - 1 minute read

合用两个路由器的几种方案

为什么用两个路由器?最常见的理由是延长信号。在超级大的场地中,中间放一个路由器,用四根线连接到周围的几个路由器上面,信号覆盖整个场地。这是最常见的理由。也有可能是因为你的主路由器LAN接口不足了。当然,也可能是因为蛋疼,或者其他原因。不论如何,为了在多个路由器上达到同时上网的目的,你有以下几个选项。桥接模式,路由模式,双层NAT模式。 我先解说一下一些基础的环境。我假定你有一个互联网线,有一个路由器的WAN口接到了互联网上面,这个路由器称为M。其他路由器分别称为S1,S2…。直接连接到M的LAN口的电脑称为ML1,ML2…,通过无线连接的就称为MW1,MW1…。同样,连接到路由器S1的LAN和无线的分别叫做S1L1,S1W1,类推。 1.桥接模式 这是你第一个应当尝试的模式,连接方法是路由器S1的LAN口直接连接路由器M的LAN口。这个模式不一定能够配通,原因是因为要求路由器S必须支持桥接模式。基于某些理由,很多路由器并不支持桥接。一般来说,有可能LAN口支持桥接而WIFI不支持。因此S1L1支持桥接成功的概率比S1W1支持桥接成功的概率高。如果你需要一台支持桥接的路由器,TP-LINK的TL-WR*系列路由器好像大多支持。希望大家补充哪款路由器支持桥接或者不支持。 桥接是将路由器S完全的作为一个交换机使用,所以你的ML1和S1L1在同一个网段,两者可以互相ping通,发送各种包,也可以看到对方的广播。这种模式一旦连接成功,连接模式是透明的。因此,应当关闭DHCP,只启用一台路由器的DHCP功能。或者最好手工分配IP。 严格来说,只有S是一个无线路由的时候,这个模式才叫做桥接。如果只做有线连接,这个模式应当叫做交换模式。 2.路由模式 路由模式,是一个比桥接复杂,效果好,但是用途相对比较窄的方案。接法是路由器S1的WAN口连接路由器M的LAN口,并且为S手工指定IP,再关闭S的NAT功能。M的网段和S的网段必须不为同一个网段,例如M配置为192.168.0.0/24网段,S配置为192.168.1.0/24网段。S的WAN口手工指定为192.168.0.2。然后在M1上配置人工路由,将192.168.1.0的所有包交由路由器192.168.0.2处理。并在S1上配置默认路由为192.168.0.1(M的地址)。 这个模式是将路由器S和M作为路由器使用。当S1L1发送包时,会被S1转发到M去处理。而M收到要发送给S1L1的包时,会交由S1处理。这一模式能够工作的基础是你能够控制M的路由表,并且S可以关闭NAT。通常情况下,这个S最好是OpenWRT/DDWRT。这也是为什么用途比较窄的原因,毕竟支持桥接的路由器好找,OpenWRT/DDWRT就相对小众了。 当这个模式连接完成后,ML1和S1L1在不同网段,但是两者可以互相ping通,发送各种包,却无法看到对方的广播。因此这种模式的效果比桥接好一些,因为地址范围更大,而且很容易隔离广播风暴。这种模式一旦连接成功,连接模式是透明的。 3.双层NAT模式 如果上两种模式都不工作,你就必须使用双层NAT模式。这种模式保证一定工作,但是在使用上比较麻烦,需要用户自行计算访问规则。 接法是路由器S1的WAN口连接路由器M的LAN口,并且将S配置为DHCP。M的网段和S的网段必须不为同一个网段,例如M配置为192.168.0.0/24网段,S配置为192.168.1.0/24网段。 S的数据包会被NAT两次再发到互联网上,要进行端口转发也必须配置两次。性能相对比较差,而且无法做NAT穿透。 当这个模式连接完成后,ML1和S1L1在不同网段,S1L1可以ping通ML1,但是反过来不行。因此,S1L1可以主动连接上ML1,而反过来不行。这种模式不是透明的,两者进行连接时必须考虑网络转换和端口转发。