FreeSWAN+结构框架
1 实现总体思想通过改造Linux的IP协议栈源代码,使得IP实现与IPSec实现完全整合。该实现按功能分,可以分为以下几个功能模块模块:安全策略库,安全关联库,AH协议处理,ESP协议
1实现总体思想 通过改造Linux的IP协议栈源代码,使得IP实现与IPSec实现完全整合。该实 现按功能分,可以分为以下几个功能模块模块:安全策略库,安全关联库,AH 协议处理,ESP协议处理,算法(加密卡的实现),日志、统计、配置与审计,面 向应用的接口。按处理过程分,还可以分为以下几个处理模块:进入IP层预处 理、IPSec进入策略处理、路由、本机对IP包处理、IPSec进入处理、转发处理、 本地IP包处理、IPSec外出处理、发送处理。 Ipsec协议实现与IP实现的整合思想:利用Netfilter的HOOK机制,在接受IP 包和发送IP包的过程中,在适当的处理位置调用相关的ipsec处理模块。 1.1Netfilter的HOOK机制的介绍 图1 Netfilter是linux2.4内核实现数据包过滤/数据包处理/NAT等功能的抽象、通 用化的框架。Netfilter框架包含以下三部分: 1、为每种网络协议(IPv4、IPv6等)定义一套钩子函数(IPv4定义了5 个钩子函数),这些钩子函数在数据报流过协议栈的几个关键点被调 用。在这几个点中,协议栈将把数据报及钩子函数标号作为参数调用 netfilter框架。 2、内核的任何模块可以对每种协议的一个或多个钩子进行注册,实现 挂接,这样当某个数据包被传递给netfilter框架时,内核能检测是 否有任何模块对该协议和钩子函数进行了注册。若注册了,则调用该 模块的注册时使用的回调函数,这样这些模块就有机会检查(可能还 会修改)该数据包、丢弃该数据包及指示netfilter将该数据包传入 用户空间的队列。 3、那些排队的数据包是被传递给用户空间的异步地进行处理。一个用 户进程能检查数据包,修改数据包,甚至可以重新将该数据包通过离 开内核的同一个钩子函数中注入到内核中。 IP层的五个HOOK点的位置如图1所示:(ipv4) 1.NF_IP_PRE_ROUTING:刚刚进入网络层的数据包通过此点(刚刚进行完 版本号,校验和等检测),源地址转换在此点进行; 2.NF_IP_LOCAL_IN:经路由查找后,送往本机的通过此检查点,INPUT包过 滤在此点进行; 3.NF_IP_FORWARD:要转发的包通过此检测点,FORWORD包过滤在此点进行;

