返璞归真的OpenVPN的p2p模式

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                曾几何时,OpenVPN的server模式蒙蔽了人们的双眼,被视为是一个巨猛的革新,于是一个OpenVPN服务器可以支持多个OpenVPN客户端了,server模式下的c2c模式更是加剧了我们向server模式的靠拢,以至于到了现在,很多人已经遗忘了OpenVPN的p2p模式,而只记得server模式了。于是问题来了

1.OpeVPN的单进程问题

如今硬件们都已经是SMP的了,可是OpenVPN还是单进程的。启动一个server模式的OpenVPN服务器,N多个OpenVPN客户端连接过来,一个CPU利用率已经100%了,然而其它CPU还空闲着,于是你开始抱怨OpenVPN的scalable不好,于是想出了运行多个OpenVPN实例,然而又要面对复杂的负载均衡问题,绑不绑CPU本身也是一个问题。
        事实上,这不是OpenVPN的错,而是你用错了它,使用p2p模式就可以了。运行多个p2p模式的OpenVPN,等同于构建了多条VPN隧道,靠内核自身的进程调度机制来优化性能,而不是麻烦你自己。

2.OpenVPN的push功能

OpenVPN可以将路由等信息push到对端,这个功能看似很不错,然而一旦误用就会引来很大的麻烦。如果在一台物理机器上启用多个server模式的OpenVPN进程,某些是客户端,剩下的是服务器,推送的路由以及自己配置的路由如何被应用于系统将会很复杂,特别是在c2c开启的时候,越是复杂的策略将越使事情难办。
         不要抱怨OpenVPN,实际上仍然是你用错了它,使用p2p模式就好了。运行多个p2p模式的OpenVPN,等同于构建了多条VPN隧道,每条隧道只有自己和唯一的对端,路由只在这二者上配置,只对二者负责,应用多个配置文件将会比公用一个配置文件更加使问题条理化。

3.OpenVPN奇怪的组网模式

OpenVPN分为三层模式而二层以太网模式,这使得组网复杂了,另外又有一个internal route的概念使得访问控制更加不对称且难以控制。这仍不是OpenVPN的错,可能是你自己把问题复杂化了。
        事实上,有一条真理需要提一下:你的问题和解决问题的方案必须阻抗匹配。就是说复杂的解决方案解决的是复杂的问题,这样当你面对复杂问题的时候,你就不会觉得方案复杂了。

4.OpenVPN不能和IPSec的网络拓扑相兼容

这个就不多说了,毕竟IPSecVPN的组网模式是对等的,而server模式下的OpenVPN是不对等的。面对“好用”的c2c,人们总是要问:难道不能在两个客户端之间直接建立隧道吗?得到的回答往往是:这是OpenVPN的机制决定的。而实际上只要使用p2p模式,这个问题便可以迎刃而解。

p2p模式的OpenVPN

这又是一个被人遗忘的角落,起码是被我遗忘了。使用p2p模式的OpenVPN的结果就是“它看起来和IPSecVPN的配置方式一样”。只要配置一个本端和对端即可,如果能抛弃push这种高级特性的话,效果就更好了,毕竟VPN只需要告诉系统哪些流量需要进入隧道即可,OpenVPN可以使用配置静态路由简单的做到这一点,配置如下:
本端:
到对端网络的流量路由到tap/tun
对端:
到本端网络的流量路由到tap/tun

十分简单,剩余的事情就是维护上述配置和OpenVPN进程之间的对应即可。最简单的方式就是将其写入到每个OpenVPN进程对应的单独的配置文件中。使用p2p模式的OpenVPN最显著的效果是它可以自动解决SMP的利用问题,比如你在一台机器上启动了10个OpenVPN进程(p2p模式下虽然也有服务器端和客户端之分,然而这种区分只在连接建立时有意义),那么让内核自己来在N个CPU上调度这10个进程吧-如果你信任内核调度器的话-榨取SMP性能还得靠内核调度器自身,而不是靠自己去做几于偏执的复杂开发与配置(比如CPU绑定,tap/tun的网卡bonding,多OpenVPN进程共享虚拟网卡之类的),虽然这种工作确实能证明自己是一个还算优秀的研发人员。
        随着软硬件越来越复杂,功能越来越全,性能越来越高,能把工作塞给它们的就不要自己来。但是永远不要把复杂的策略塞给它们,如果真的需要这样,那就好好的设计一个协议来完成这些,千万不要凭空的实现...这也是Cisco的做法,Cisco的很多高级功能是配置出来的,而不是它自动生成的,然而Cisco确实也实现了很多做这种本应该由人来完成的协议。
        只需要记住,在真正的人工智能还没有之前,做事的只有计算机,权衡如何做事的只有人,人不要把策略交给计算机,也不要帮计算机完成重复的底层机制,因此有时候抛弃OpenVPN的server模式以及push功能并不能说明你在倒退,相反它是一种理性的回归,一种返璞归真的理性回归。特别是路由这种东西,要么你自己配出来,要么靠成熟的路由协议来配置出来,我觉着这才是一款高鲁棒性产品的根本,花哨的东西统统下课。
           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

这里写图片描述

猜你喜欢

转载自blog.csdn.net/gdfhhj/article/details/83934933
P2P