1.七层代理模式还是IP层VPN
很多人会问,我到底是使用代理模式呢,还是使用VPN模式,如果我想数据在中间不安全的链路上实现加密保护的话。
这个问题有一个背景,那就是,你想保护你的数据,可以使用VPN,但是有时候,第七层的代理模式或许更好,比如SSL卸载器,比如内置SSL处理的代理,分为正向代理和反向代理。
正向代理:代理的是访问者。一般位于访问者一端,访问者能意识到代理的存在,直接访问代理,由代理向服务器发起访问。
反向代理:反向代理代理的是被访问者。位于被访问者一端,访问者意识不到代理的存在,访问者访问代理,由代理将请求重定向到真正的服务器。
且
看上述区别的后半段,完全相同,这也是最容易引起迷惑的地方,但是我现在的解释不关注这些,如果单看TCP层以及IP层的访问模式,会发现上述的正向代理
和反向代理没有任何区别-你会发现TCP层和IP层的封包是一样,因此区别正是体现于第七层-重点是实际访问客户端是否设置代理,体现在HTTP头。当我
们已经屏蔽了第七层的区别后,仅仅看TCP层的访问模型,你会发现一个事实,即不管是正向代理还是反向代理,在TCP看来都用相同的方式卡在了路径中央,
客户端和代理建立TCP连接,代理和服务器建立TCP连接。
现在明白什么时候用代理什么时候用IP层VPN了吗?答案在于数据流的方向!如果再深挖一下,如果数据流始终都是从你这里发起的,有一个代理声称可以替你
完成你要求的事务,还可以提供安全加密服务,未尝不可啊,如果另一个代理对服务器声称,它可以汇集成千上万的客户端的访问请求,那也行啊。但是代理对数据
流的发起方向有要求,反过来就难了,对于服务端而言,它要主动发起一个到某个客户端的访问,如何使用代理,这意味着代理必须显式知道客户端的位置,而这几
乎是不可能。此时需要一个新的方案,那是什么呢?那就是将整个反向的访问流封装于一个正向建立的隧道内,这个隧道是长连接的,除非显式拆除,它会一直存
在。这是什么?这就是IPSec
VPN,PP2P,L2TP,OpenVPN等三层以及三层以下的VPN。当然,使用三层以及三层VPN的代价就是你将不能处理所有的四层以上特别是七层
的信息,比如你不能解析过境包的HTTP头(做这件事远远比你想的困难,首先你要识别出这是一个TCP的HTTP数据包,也许只是一个IP分片,你要实现
重组,也许是一个乱序的TCP段,你要实现TCP的按序逻辑...更现实的,也许一个HTTP头会分在多个TCP段中,....人生苦短,为何如此折磨自
己,使用安全代理吧)...
如果你能保证数据流都是从客户端主动发往服务端的,且你需要更细的基于七层信息的控制粒度,且百折不扣地使用TCP代理。
如果哪怕有一类从服务端反向的连接,或者存在诸如UDP等协议的数据流,请考虑IP层VPN。
我们可以看到,使用IP层VPN始终是一种备选方案,是这样的,这是现实,也是趋势。请看看FTP的现实吧,FTP存在反向的连接,但是依然存在安全的
FTP代理,如果你觉得FTP不够复杂,那么请看看标准的信令/数据分离的SIP协议,市面上也有了很多的可以处理SIP协议的安全代理,这些都不是IP
层的VPN。最终,IP层VPN仅仅剩下了一块保留地,那就是保持多个物理位置分离的子网之间的虚拟专用性(安全连通性)。这块保留地才是真实的IP层
VPN的领域,事实上,很多其它方面的使用IP层VPN技术进行单点接入的系统都是一种误用!对于单点接入系统以及单点访问系统,链路的加密只是一个基本
不能再基本的安全需求,更多的访问控制,接入控制,AAA等很难集成在IP层VPN以内,即便OpenVPN提供了强大的push机制,客户端也是可以拒
绝任何push reply的。
2.大便骑沟便沟内
这是什么含义?
还记得以前那种中央一条沟的厕所吗?在沟的一端墙壁上面有一个水箱,一拉绳子,水就冲下来,一冲一条沟,如下图所示:
请
看错误的方式,尿不会落在大便池中,而是会洒在蹲位上,有时,如果角度没对准,大便也不会落在池中,而是会落在蹲位的另一边,这会引起连锁反应,后来的人
只能采用蹲在同一边的错误方式,因为便池的另一边有屎..于是我们的宿舍管理员李大爷再也忍不住了,用毛笔在宣纸上写下赫然几个大字,张贴于男厕所的墙壁
上,上面写着“大便骑沟便沟内”,是的,书法手笔不错...