OpenVPN的Linux内核版,鬼魅的残缺 Prelude

首先向James yonan致敬!
其次吐个槽,这都12月份了,还打雷,看来这股冷空气威力不是一般的大啊,大气环流和气压都被它改变了,我仿 佛看到了热空气和雾霾被这股异常强大的寒潮挤压得像难民一样背井离乡....这对于我而言,意义十分重大,从下周一开始,我将告别短袖T恤,穿上衬衫 了...再次重申,我这个时候穿短袖真的不冷,我能坚持到5摄氏度穿短袖,真的不冷,我在7摄氏度的时候偶尔穿一次长袖是因为压力实在太大...
       OpenVPN不好,代码简单却不好读,逻辑清晰却不好改,你明明知道该怎么改了,却迟迟下不了手...但是它对于我个人而言,有着不一般的意义。在我 2006年毕业以来(其实我那也不算什么毕业,和蓝翔差不多,可能还不如...)可以说只有两个和计算机网络技术相关的东西让我觉得意义重大,一个是 iptables,一个是OpenVPN,其它的都是延伸!
       对于iptables而言,顺着它我摸到了Netfilter,进而是IP处理,ip_rcv,很简单的一个函数,netif_receive_skb, 这是顺着下去自然找到的,我不是科班出身,所以我不是那种死跟代码的人,因此要务就是学习怎么用它们,以及它们的发展历史,比如在0.01版本中它们是什 么样的,自然而然,IP路由便是囊中之物了,使用iproute2 utils也如探囊取物,iptables更是不在话下了,现在虽不能任性地说自己在Netfilter方面除了Rusty的圈子外舍我其谁,但起码自己 写module,甚至可以实现Yet another stack了...对于OpenVPN,和iptables一样,引着我到了很多平时到不了的地方,在现实意义上,甚至比iptables的意义还大,起 码我现在住的房子以及我那可爱漂亮乖巧个性喜欢朵拉爱吃甜点的小小都和这个叫做OpenVPN的东西有关...不管怎么说,路都是一步步走出来的。
       2007年,我和老婆还在长春,她参加了一个东北亚投资贸易博览会,担任翻译,拿来两瓶酒,从来没见过的酒,结果那种酒一喝就是好多年,这就是真露。后来 她去上海替人家考试(按照我写此文的环境,我应该用‘来上海’),回长春的时候,带回去了瓶沈永和黄酒,后来到了上海,只要出去吃饭,必然喝一瓶黄 酒...总之,路是一步步走出来的,加之我本来就是个特别怀旧念情的人,走过的路才显得弥足珍贵。
       有的时候,离开一个情景,是一件很痛苦的事情,比如突然不喝酒,比如老丈人走了,吃火锅时明显快了很多,感觉像吃东北炖菜或者吃面...比如当年离开长 春,比如更远些,当年离开哈尔滨,离开星宇名座去南湖大路,离开154路公交车改坐轻轨...我是一个适应性很强的人,对周围的新环境不在乎,但是我确实 是一个对老环境忘不了的人,就在国庆前夕,我还让老婆开车带我去之前刚到上海时的住处去看了一下那里的物是人非,也许如果我到了意大利,会超越爱德华.吉 本吧,希望能,我看能。
       时间啊时间,不够用,时间都TMD去哪了,此时是凌晨两点四十分,明显感觉时间不够...昨晚折腾OpenVPN折腾到4点,然后早上很早就起来去买菜 了,发誓做一次真正的火锅,结果做多了,没吃完,然后发誓一定要学会Python...Python要比OpenVPN好玩的多。不过在折腾Python 之前,还是先把OpenVPN弄进内核再说!
       傻比一样的人发明了保护模式,同样智商的一批人将操纵系统划分为了用户态和内核态。当人们将越来越多的东西从内核态移植到用户态的时候,我反其道而行之, 我将OpenVPN这样的东西弄回内核态去...世界本来就是平坦的,事实证明等级划分与权限划分带来的不是安全而是愤怒。根本就不应该有什么内核态,用 户态,因此我将OpenVPN移植到内核态去实现其实只是一种优化方案罢了。正是由于分类才有了排他性,才使得一切好像都不能融会贯通,同时有了跨界这一 说,然而对于大多数人来讲,隔行如隔山,即便都是编程的,也分为搞应用的,写类的,写库的,写驱动的...
       人们为何不喜欢IPSec,难道就因为它是内核实现的,维护成本高?NO!NO!NO!很显然,IPSec崩溃会将操纵系统一起带崩溃,但是频繁崩溃的 IPSec产品是怎么进入市场的呢?很显然,操纵系统升级要伴随IPSec升级,而用户态程序的生命周期会更长久,但这只能说明iPSec具体的实现在适 配方面做得不好,退一万步说,不是也可以在用户态实现IPSec吗?...根本原因是什么?我也不知道。但是我知道的是,OpenVPN在用户态实现以及 可以及时编译运行是一个优势,这导致了它极大的受众。然而将其移植进内核呢?那简直糟糕透顶啊,那将依赖内核,OpenVPN不是号称自己可以一套代码编 译在Linux,WinXP,Win7/8,XXXXBSD,MacOS,Android,iOS吗?它们的内核可都不一样啊...可是这对单台的服务器 而言又有何关系呢?一台高性能的服务器能服务5位数的用户,而我们触动的只有一台运行OpenVPN的机器以及其内核而已,算上热备,算上集群又如何,不 会超过10台机器吧,我们不会去碰触OpenVPN客户端实现,也不管它们是跑在Android手机,iPhone还是笔记本上,不管它是不是另一个网络 的出口...我将OpenVPN弄进内核的目的是为了让其更优化,这简直是一个正反馈系统!!因此,我又有什么错?!I am right!别忘了,OpenVPN有一个天生的优势,那就是其server模式,它不是像IPSec那样的完全对等的节点,二是分出了主从,任何一个 OpenVPN组网方案中,只有一个中心服务器,这里面本来就蕴藏着很多的故事,能否挖掘出来就看个人了。这个不对等的关系完全可以造就像蚁后那样的 being,而进入内核的OpenVPN服务器,首先进入了候选名单。
       如果庞然大物已经向你走来,那么就要拿起你的鞭子了...

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。