Linux内核VPN实现源码分析(一)

来源:互联网 发布:婚礼宣传片制作软件 编辑:程序博客网 时间:2024/06/06 18:20

1.  linux下vpn简介

一般而言,linuxVPN按照实现的协议栈可以分为应用层和网络层的VPN,应用层的vpn实现常见的比如有SSL vpn,著名得的开源实现有openvpn,而网络层的常见的为IPSec VPNSSL VPN文本将不作介绍,网络上关于openvpn资料也比较多,大家可以自行研究。


其实linux2.6内核实现了至少三种VPN,这三种VPN分别是IPIP协议,IPGRE协议和IPSec协议,在内核源代码中的文件分别是ipip.cip_gre.cxfrm开头的文件当中。但如果加上著名的开源IPSec VPN openswan,就有四种了。这四种从实现原理上看可分为两种,一种是采用虚拟网卡建立隧道的方式,可以通过插入相应内核模块来运行,linux2.6内核的IPIP协议,IPGRE协议和openswanIPSec协议,另一类是直接实现在内核里面,即内核实现的IPSec VPN。因此,前面的三种实现是非常相似的。


对于Linux2.6内核中自带了IPSec的实现(注明:linux2.4内核可以通过打补丁的方式来支持),本文将不作任何分析,因为已经有前辈做了很好的分析,参见http://blog.chinaunix.net/u/12313/showart_313220.html,可惜的是,这位大牛前辈的blog已经很久没有更新的。Linux2.6内核中自带了IPSec可以通过开源的工具IPSec tool来进行配置。


本文现在将开始循序渐进的方式分析linux2.6.30内核实现基于虚拟网卡的VPN的源码,首先从最简单的IPIP协议开始。

 

原创粉丝点击