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

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 协议开始。

 

阅读更多
个人分类: linux内核
想对作者说点什么? 我来说一句

PPTP详解,很难找的一个东西

2010年08月17日 245KB 下载

PPTP源码(Linux and FreeBSD)

2010年08月18日 79KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭