本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

报码:【j2开奖】BadVPN详解之组网原理剖析

时间:2017-05-02 21:50来源:668论坛 作者:本港台直播 点击:
这可能是第一篇关于BadVPN原理的中文介绍,所以我恪守职责,希望能将BadVPN的原理阐述清楚,而不仅仅是为了欺世盗名取天下之先。 前言 我关注VPN已经多年了,有三类VPN让我觉得惊叹

  这可能是第一篇关于BadVPN原理的中文介绍,所以我恪守职责,希望能将BadVPN的原理阐述清楚,而不仅仅是为了欺世盗名取天下之先。

  前言

  我关注VPN已经多年了,有三类VPN让我觉得惊叹帮我理解了网络协议的体系结构。首先IPSec,I2TP,PPTP这种传统的VPN技术让我知道原来协议栈还可以如此的相互Over,然后就接触到了OpenVPN,如此一个简单的玩意儿竟然拥有如此强大的组网能力,我喜欢这个OpenVPN,一去就是三五年,期间这个玩意儿也为我带来很多现实的东西,比如金,比如加薪升职什么的,打心眼里,我觉得利用OpenVPN的理念,可以创造出世界第一等的VPN产品...直到我遇到了BadVPN!

  当然,最基本的VPN就是IPSec VPN,然而要想配置好一个多点的IPSec VPN网络及其复杂和费事,最终EzVPN弥补了这个不足,它通过一个所谓的中心节点简化了配置。然而这一切都是“官方”的方案。落实到普通程序员可以就地使用的方案,没几个。OenVPN是一个,BadVPN也是一个。

  我承认,前几年我被OpenVPN冲昏了头脑,竟然忽略了世界上还有一个叫做BadVPN的东西。都到了2017年了,我才第一次注意到它,这多多少少有点让自己觉得悲哀。

  BadVPN是另一个VPN

  为了能快速理解BadVPN的原理,我准备从OpenVPN开始,当你知道了OpenVPN有什么问题的时候,就会更加容易理解BadVPN是如何解决这些问题的了,而这些正是理解BadVPN的关键。我先来展示一个OpenVPN的结构图,假设使用TAP Bridge模式:

  

报码:【j2开奖】BadVPN详解之组网原理剖析

  可以看出,OpenVPN有一个所谓的“中心节点”,其它所有的子节点都连接到这个中心节点。OpenVPN的这个中心节点身兼两职:

  1. 提供总体的控制功能,负责与子节点密钥协商,分配虚拟子网的IP地址给子节点,推送策略给子节点等;

  2. 同时作为一个对等的VPN节点存在,和各个子节点所携带的子网互联互通。

  上述两点可以看出,第一点是控制平面的功能,第二点是数据平面的功能,二者完全在一个链路上传输,这意味着什么?这意味着要精心设计OpenVPN的协议,以区分到来的数据包包含的是控制信息还是数据。

  OpenVPN协议区分了数据是控制面的数据还是数据面的数据,然而这种区分是带内实现的,也就是说通过协议头的字段来实现的,姑且不说封装这个协议头会带来什么开销,仅仅在OpenVPN进程中去多路复用并行处理控制平面和数据平面就够复杂的了。

  按照传统的网络设计观点,中心节点即服务端就是一个交换机,而各个VPN子节点客户端就像是“该交换机端口的另一端”连接的各个主机或者级联交换机,这是一个典型的星型拓扑。然而按照SDN控制平面的观点来看的话,中心节点就是一个控制器,它控制了整个的VPN网络转发逻辑,所有的子节点要发送数据必须无条件转发到中心节点,让中心节点决定数据转发到何方,这意味着哪怕是子节点客户端之间互相通信,也必须经由中心节点来转发。

  不管站在什么立场上来看,OpenVPN的中心节点都是一个单点,不管是从效率还是从可用性上来权衡,这都不是一个优雅的方式。说点题外话,幸亏我个人精通Linux网络,可以通过iptables,iproute2,多线程改造OpenVPN,bonding TAP网卡,Keepalived等措施来破除这种限制,消除种种效率和可用性上的威胁,我才得以驾驭OpenVPN,不然的话,用OpenVPN来组网还真的限制多多。即便我有能力Hold住存在单点问题的OpenVPN,最终我还是失败了。我已经把OpenVPN堆积的不成样子了,迫切需要一个新的思路。

  OpenVPN的中心节点扮演了过于重量级的角色,这导致了任意建立VPN通道的节点之间的关系不可能是对等的,OpenVPN必须以主从方式建立VPN通道。这就主从结构的限制使得OpenVPN在组网方面很难构建多点对多点的网状拓扑。

  那么BadVPN有何不同呢?为了与OpenVPN做对比,我还是先来展示一个BadVPN的总览图:

  

报码:【j2开奖】BadVPN详解之组网原理剖析

  所有的节点综合起来构成了一个巨大的交换机,大家一起完成交换机的功能,各个VPN子节点(为了对比,我依然沿用OpenVPN中心节点,子节点的术语)就是交换机端口本身,而不再是“端口对端”连接的设备。其中,中心节点不再负责实际的数据转发,而仅仅作为一个“维护这个交换机组成部分”的控制器存在,中心节点负责以下的事宜:

  1. 记录该VPN网络中拥有多少节点主机,即“该大交换机中有多少端口”以及“端口的添加,删除以及通告”;

  2. 构建子节点与中心节点之间,子节点与子节点之间的TLS控制通道,协商子节点之间的通信密钥。

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容