现在的位置: 首页 > 综合 > 正文

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

2013年08月27日 ⁄ 综合 ⁄ 共 683字 ⁄ 字号 评论关闭

1.  linux下vpn简介


一般而言,
linux

VPN
按照实现的协议栈可以分为应用层和网络层的
VPN
,应用层的
vpn
实现常见的比如有
SSL vpn
,著名得的开源实现有
openvpn
,而网络层的常见的为
IPSec VPN

SSL VPN
文本将不作介绍,网络上关于
openvpn
资料也比较多,大家可以自行研究。



其实
linux2.6
内核实现了至少三种
VPN
,这三种
VPN
分别是
IPIP
协议,
IPGRE
协议和
IPSec
协议,在内核源代码中的文件分别是
ipip.c

ip_gre.c

xfrm
开头的文件当中。但如果加上著名的开源
IPSec VPN openswan
,就有四种了。这四种从实现原理上看可分为两种,一种是采用虚拟网卡建立隧道的方式,可以通过插入相应内核模块来运行,
linux2.6
内核的
IPIP
协议,
IPGRE
协议和
openswan

IPSec
协议,另一类是直接实现在内核里面,即内核实现的
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
协议开始。

 

抱歉!评论已关闭.