1、- 1 -本科毕业论文题 目:LINUX 系统 VPN(L2TP+IPSec)模块移植 IPSec 模块设计姓 名:学 院:软件学院系:软件工程专 业:软件工程年 级: 学 号:指导教师: 职称: 年 月- I -LINUX 系统 VPN(L2TP+IPSec)模块移植 IPSec 模块设计摘要虚拟专网是指在公共网络中建立专用网络,数据通过安全“管道”在公共网络中传播。使用 VPN 有节省成本、提供远程访问、扩展性强、便于管理和实现全面控制等好处,是目前和今后网络服务的重点项目。因此必须充分认识虚拟专网的技术特点,建立完善的服务体系。目前建造虚拟专网的国际标准有 IPsec 和 L2TP。其中
2、 L2TP 是虚拟专用拨号网络协议,是 IETF 根据各厂家协议进行起草的,目前尚处于草案阶段。IPSEC 是一系列基于 IP 网络(包括 Intranet、Extranet 和 Internet)的,由 IETF 正式定制的开放性 IP 安全标准,是虚拟专网的基础,已经相当成熟可靠。L2TP 协议草案中规定它(L2TP 标准)必须以 IPSEC为安全基础。IPSec 在 Linux 支持方面有两个主要的分类,一为 Frees/WAN,已经分裂为两个项目,Openswan 与 Strongswan。本文使用 Frees/WAN 实现 IPSec 的功能,并详细分析了 IPSec 的工作原理,配
3、置方法以及配置过程。最终把 Frees/WAN 移植到路由器的 CLINUX 系统中,使得移植后的系统稳定、功能完善,并且和 LINUX 操作系统以及 CISCO 的路由器VPN(L2TP+IPSEC)相兼容。最终保证通信加密,实现网络通信安全。关键字 虚拟专用网;IPSec;Frees/WAN;CLINUX- II -LINUX system VPN (L2TP + IPSec) module transplant IPSec module designAbstract Virtual Private Network is the private network that establish
4、ed in the public network, data is transmitting through the channel in the public network. There are advantages of cost savings, providing remote access, strong expansion, convenient to control, and other benefits when using a VPN. It is the key projects for current and future network services. There
5、fore we must fully understand the technical characteristics of virtual private network, establish, and improve the service system. At present, IPsec and L2TP are two international standards of constructing a virtual private network. L2TP, which is a virtual private dial-up network protocols and draf
6、ted according to the agreement of the manufacturers by IETF, is now at a draft stage. IPSEC is a series of open standard that for IP security basing on IP network (including the Intranet, Extranet and Internet), and is drafted by IETF. IPSEC is the foundation of virtual private network, and is quite
7、 mature and reliable. L2TP must be based on IPSEC ordained by L2TP draft agreement.There are two main classifications of IPSec supporting on LINUX. One is Frees / WAN, divided into two projects, Openswan and Strongswan. In this paper, we use Frees/WAN to realize IPSec, and furthermore it will analyz
8、e through about the working principle, the targeting methods and configuration process about IPSec. Frees/WAN will be eventually migrated to CLINUX system of the router. After the transplant, system should be stable, comprehensive, and make LINUX operating systems, routers and CISCO VPN (L2TP + IPSE
9、C) compatible. Eventually make sure that the communication is encrypted, the network is secure.Key words Virtual Private Network; IPSec; Frees/WAN; CLINUX- III -目录引言 1第一章 IPSec 基本思想 .21.1 IPSec 基本原理 21.1.1 IPSec 基本组件 21.1.2 IPSec 概念划分 31.1.3 IPSec 保护机制 41.1.4 IPSec 加密技术 41.2 IPSec 工作模式 61.3 IPSec 体系
10、模型 71.4 IPSec 配置步骤 .71.5 IPSec 工作过程 7第二章 Openswan 构建思想 102.1 Openswan 概述 .102.2 Openswan 的连接方式 .102.3 Openswan 的认证方式 .102.4 Openswan 的环境配置 .112.4.1 安装内核源代码 .112.4.2 下载相 Openswan 及相关补丁 112.4.3 选择需要的内核选项 .112.4.4 编译安装内核 .12第三章 Openswan 构建过程 133.1 安装 Openswan133.2 NET-TO-NET 方式配置 Openswan .133.3 Road W
11、arrior 方式配置 Openswan .163.4 安装监听网络 17- IV -3.5 几种捕获包格式 17第四章 建立编译环境与内核移植 204.1 建立编译环境 204.2 BLOB 移植 214.3 uClinux 针对硬件的改动 .224.4 uClinux 的移植 .244.5 网络监 听分析 31结 论 .35致谢 .36参考文 献 37- V -ContentsIntroduction 1Chapter 1 Basic Idea Of IPSec 21.1 IPSec Principles 21.1.1 IPSec Components 21.1.2 IPSec Conce
12、pts.31.1.3 Protention Machanisms Of IPSec.41.1.4 Encryption Technology Of IPSec.41.2 IPSec Mode 61.3 IPSec System Model.71.4 Configure IPSec 71.5 The Process Of IPSec7Chapter 2 Construction Thinking Of Openswan 102.1 Openswan Overview102.2 The Connection Way Of Openswan .102.3 The Certification Way
13、Of Openswan102.4 Configure Environment.112.4.1 Installation Of Core Source Code .112.4.2 Download Openswan and Related Patches 112.4.3 Choose The Core Option 112.4.4 Use Patches To Install The Kernel.12- VI -Chapter 3 Openswan Construction Process.133.1 Install Openswan 133.2 Configure Openswan Acco
14、rding To NET-TO-NET Way .133.3 Configure Openswan According To Road Warrior Way163.4 Install Network Monitoring Communication .173.5 The Format Of Catched Packets17Chapter 4 Establish Environment And Core Transplant 204.1 The Establishment Of Compiler Environment 204.2 Transplant BLOB214.3 Change uC
15、linux About Hardware 224.4 Transplant uClinux 244.5 About Network Monitoring31Summary35Acknowledgement .36References.37引言- 1 -引言IPSec(IP Security)是一种较老的也是采用的最为广泛的 VPN 技术,IPSec 可以让我们在不改变外部防火墙规则的情况下,在内核级别相当容易地做出安全处理,确保什么能通过隧道或什么不能;其在实现 NET-TO-NET 以及 HOST-TO-NET 的配置方面也表现出了很大的灵活性。但灵活也就意味着实现起来的困难,所以 IPSe
16、c 的配置运行相当有难度 。导入 IPsec 的目的主要有两个,一个是原来的 TCP/IP 体系中间,没有包括基于安全的设计,任何人,只要能够搭入线路,就可以分析所有的通讯数据。IPsec 引进了完整的安全机制,包括加密、认证和数据防篡改功能。二是 Internet 迅速发展,接入越来越方便,很多客户希望能够利用这种上网的带宽,实现异地网络的互连。IPSEC 协议通过包封装技术,能够利用 Internet 可路由的地址,封装内部网络的 IP 地址,实现异地网络的互通。在这里,IPSec 是通过 Frees/WAN 在 Linux 上实现的。Frees/WAN 可以提供自身的内核堆栈(kerne
17、l stack) ,称为 KLIPS,也可以用 2.6 内核中的堆栈代码。因为 IPSec 工作在网络层,所以需要系统内核态的支持,但 2.4 的内核没有实现内核堆栈,故必须打 KLIPS 补丁。为了实现 Frees/WAN,首先要装上 VMware.Workstation5.5,因为我们要通过安装两台内核版本为 2.4.20-8 的 RH LINUX 9.0 虚拟机,来实现我们网关的设计。另外还需要安装一台XP 或者 LINUX 虚拟机来实现对网关下通信的监听。在安装过程中,注意把关于内核开发的选项都选上,还要学习有关内核编译的相关命令,交叉编译等基础知识 。准备工作都做好了,下面可以开始用
18、 Frees/WAN 构建 IPSec VPN 的过程了。LINUX 系统 VPN(L2TP+IPSec)模块移植IPSec 模块设计- 2 -第一章 IPSec 基本思想1.1 IPSec 基本原理使用 IPSec 是解决网络安全问题的长久办法。它能针对那些来自专用网络和 internet的攻击提供重要的防线,并在网络安全性与便用性之间取得平衡。IPSec 是一种加密的标准,它可以在差别很大的设备之间进行安全通信。因此我们不仅可以利用 IPSec 来实现一般防火墙的功能。还可以将其用来为通信的对等端建立加密的、可靠的数据通道。1.1.1 IPSec 基本组件IPsec 通过验证包、加密包或同
19、时执行这两种操作来保护 IP 包。IPsec 在 IP 模块内部执行,刚好在应用层之下。因此,Internet 应用程序可以直接利用 IPsec,而不需要在应用层进行配置。如果使用恰当,IPsec 将成为保证网络通信安全的有效工具。IPsec 保护涉及的五个主要组件:1. 安全协议IP 数据报保护机制。AH(authentication header)对 IP 包进行签名并确保完整性。数据报的内容没有加密,但可以向接收者保证包的内容尚未更改,也可以向接收者保证包是由发送者发送的。ESP(encapsulating security payload)对 IP 数据进行加密,因此在包传输过程中内容
20、会被遮蔽。此外,ESP 还可以通过验证算法选项来确保数据的完整性。2. 安全关联数据库 (Security associations database, SADB)将安全协议与 IP 目标地址和索引号进行关联的数据库。索引号称为 SPI(security parameter index,安全参数索引) 。安全协议、目标地址和 SPI 能够唯一地标识一个合法的 IPsec 包。此数据库可以保证到达目的地的受保护包能被接收者识别。接收者还可使用数据库中的信息解密通信、检验包是否受到篡改、重新组装包并将包发送到其最终目的地。3. 密钥管理针对加密算法和 SPI,用来生成和分发密钥。4. 安全机制针对
21、 IP 数据报中数据的验证和加密算法。5. 安全策略数据库 (Security policy database, SPD)用于指定包的受保护级别的数据库。SPD 过滤 IP 通信来确定应该如何处理包。包可能被废弃,可能毫无阻碍第一章 IPSec 基本思想- 3 -地进行传送,或者也可能受到 IPsec 的保护。对于外发包,SPD 和 SADB 确定要应用的保护级别。对于传入包,SPD 帮助确定包的保护级别是否可接受。如果包受 IPsec 保护,将在对包进行解密和验证之后参考 SPD。1.1.2 IPSec 概念划分1. 数据流数据流是一组具有相同源网络地址/掩码,目的网络地址 /掩码和上层协议
22、的数据集。通常,一个数据流采用一个访问控制列表 acl 来定义,该 acl 允许通过的所有报文在逻辑上作为一个数据流。2. 变换集(Transform Set)变换集包括安全协议(AH 或 ESP) ,安全协议使用的算法(验证和加密算法) ,安全协议对报文的封装形式(隧道模式或传送模式) ,规定了把普通的 IP 报文转换成 IPSec报文的方式。变换集由安全策略引用。3. 安全策略安全策略由用户手工配置,规定对什么样的数据流采用什么样的安全策略。数据流的定义用上面的 acl 表示,所采用的安全措施则通过引用上面定义的变换集获得。4. 安全策略组安全策略组就是所有具有相同名字的安全策略的集合。安
23、全策略组是和使用 IPSec的接口一一对应的,从而可以在一个接口上同时应用一个安全策略组中的多个安全策略,实现对不同的数据流进行不同的安全保护。5. 安全联盟(Security Association)安全联盟是两个通信实体根据安全策略经协商建立起来的一种协定。他们决定了用来保护数据安全的 IPSec 协议,算法,密钥以及密钥的有效存在时间等。任何 IPSec 实施方案都会构建一个 SA 数据库(SADB ),由它来维护多个 IPSec SA 记录。SA 是单向的,输入数据流和输出数据流分别由输入安全联盟与输出安全联盟进行处理 。安全联盟可以通过手工配置和自动协商两种方式建立。以下三个元素唯一
24、地标识 IPsec SA:(1) 安全协议(AH 或 ESP)(2) 目标 IP 地址(3) SPI(安全参数索引) 。LINUX 系统 VPN(L2TP+IPSec)模块移植IPSec 模块设计- 4 -6. 安全参数索引(SPI)安全参数索引是一个 32 位的数值,在每一个 IPSec 报文中都携带该值。SPI 与 IP目的地址,安全协议结合起来,这个三元组可以唯一地表示一个特定的安全联盟。1.1.3 IPSec 保护机制IPsec 提供了两种用于保护数据的安全协议:1. 验证头 (Authentication Header, AH) 使用验证算法来保护数据。AH 为数据报提供了数据验证、
25、高完整性以及重放性保护。AH 插在 IP 数据包头和传输头之间。传输头可以是 TCP、UDP、SCTP 或 ICMP。如果使用的是隧道模式,则传输头可以是另一个 IP 数据包头。表 1-1 AH 下数据报格式 IPHdr AH TCPHdr2. 封装安全有效负荷 (Encapsulating Security Payload, ESP),使用加密算法和验证算法来保护数据。ESP 对其封装的内容提供了保密性,但是,ESP 只对它封装的数据报部分提供保护。ESP 也提供 AH 提供的服务,只是它的验证服务是可选的,因此我们可以对同一数据报结合使用 ESP 和 AH,而无需考虑冗余设置。表 1-2
26、ESP 下数据报格式IPHdr ESP TCPHdr1.1.4 IPSec 加密技术1. 数据加密标准(Data Encryption Standard)DESDES 是一种对称密钥算法,可以使用 4056 位长的密钥。同时 3DES 的加密策略也使用的是 DES 算法,但它并不只加密一次,而是先加密一次,再加密(解密)一次,最后做第三次加密,每一次加密都使用不同的密钥。不过在很大程度上,3DES 增加了解密数据的难度。第一章 IPSec 基本思想- 5 -2. RSA 算法RSA 是一种公开密钥算法。它不仅简化了对称密钥加密中的密钥交换过程,还可以用来产生数字签名。3. 散列函数散列(Has
27、h)函数是一种单向的算法,它提取任意长度的一段信息并产生固定长度的乱序摘要。摘要是文本的一个截取,只包含与文本最相关的部分,这就是 Hash 函数所产生的结果。Hash 值可以用于维持数据的完整性。如果我们发送一个消息给 B,并给B 消息的 Hash。B 可以使用同一 Hash 算法,并用计算得到的 Hash 值与 B 收到的 Hash值相比较。如果 B 发现根据消息计算出来的 Hash 与它收到的 Hash 值不同,就可以知道数据在传输的过程中出错了。4. 消息摘要(Message Digest 5)MD5MD5 是一种符合工业标准的单向 128 位的 Hash 算法,它可以从一段任意长的消
28、息中产生一个 128 位的 Hash 值。 (例如,质询握手身份验证协议 (CHAP)通过使用 MD5来协商一种加密身份验证的安全形式。CHAP 在响应时使用质询响应机制和单向 MD5散列。用这种方法,用户可以向服务器证明自己知道密码,但并不真的将密码发送到网络上,从而保证了密码的安全性。 )5. 安全散列算法(Secure Hash Algorithm)SHA-1SHA-1 是一种产生 160 位 Hash 值的单向 Hash 算法。它类似于 MD5,但安全性比MD5 更高。6. Hash 信息验证码(Hash message authentication codes)HMAC HMAC 可
29、以用来验证接收消息和发送消息的完全一致性。7. 数字签名标准(Digital Signature Standard)DSSDSS 是数字签名算法。数字签名(Digital Signature,DS)是一种用使用者的私有密钥加密的 Hash 值。它可以像正常签名一样用于认证,但它也可以用做与签名相关的信息完整性的认证。8. 认证授权(Certificate Authority)CACA 是一个实体,通常是一台计算机,它保存了一些公开密钥。事实上,它保存的是作为认证目标的用户或设备的信息,其中包括它们的公开密钥。认证包含某个公开密钥的所有者的认证信息,如:姓名、地址、公司等。认证的目的有两个:标志
30、一个用户或设备的公开密钥、确认假设的公开密钥的拥有者是公开密钥的真实拥有者。认证授权LINUX 系统 VPN(L2TP+IPSec)模块移植IPSec 模块设计- 6 -是一个记录了所有认证的第三方。使用 CA,用户可以有一个认证的集中贮藏处,它允许用户获得其他用户的公开密钥并认证那些用户。它提供了一个记录用户和设备公开密钥的集中存放点。它还提供了认证授权,当用户从 CA 中获得我们的公开密钥时,密钥确实是我们的而不是其他人的。9. OAKLEY 密钥决定协议Oakley 和 SKEME 各自定义了一种建立已认证密钥交换的方法,包括载荷的结构、所承载载荷信息、处理它们的顺序以及如何使用它们。O
31、akley 描述了一系列的密钥交换模式,提供密钥交换和刷新功能。10. 互连网安全联盟及密钥管理协议(Internet Security Association and Key Management Protocol)ISAKMPISAKMP 是一个定义在主机之间交换密钥和协商安全参数的框架。ISAKMP 定义密钥在非安全网络上交换的一般机制,ISAKMP 定义的信息包括报文中消息的位置和通信过程发生的机制,但没有指明使用的协议和算法。11. 互连网密钥交换(Internet Key Exchange)IKEIKE 是一种实现密钥交换定义的协议。IKE 是一种在 ISAKMP 框架下运行的协议
32、。它是从密钥交换协议 OaKley 和 SKEME 中派生而来的。IKE 用于在对等端之间认证密钥并在它们之间建立共享的安全策略。IKE 用于确认,比如标志一个要求加密会话的对等端,以及决定对等端使用何种算法和何种密钥。IKE 考虑了 IPSec 使用的所有算法交换秘密密钥的复杂性。通过将密钥管理函数替代普通的密钥管理协议,简化了将新的算法添加进 IPSec 协议的过程。IKE 使用公开密钥加密算法在非安全网络上安全地交换秘密密钥。1.2 IPSec 工作模式1. 传输模式在传输模式下,如表 1-3 所示,由外部头决定保护内部 IP 包的 IPsec 策略。表 1-3 传输模式下 IP 包格式
33、原 IP 头 IPSec 头 TCP 头 数据第一章 IPSec 基本思想- 7 -2. 隧道模式在隧道模式下,如表 1-4 所示,由内部 IP 包决定保护其内容的 IPsec 策略。表格 1-4 隧道模式下 IP 包格式1.3 IPSec 体系模型图 1-1 IPSec 模型图 1.4 IPSec 配置步骤1. 针对 IPsec 的两种模式对 Freeswan 的配置文件 ipsec.conf 进行配置。2. 在保证传输安全的对等端进行共享密钥的设置。3. 手工启动服务器端的 Freeswan 以实现 IPsec 。1.5 IPSec 工作过程IPSec 的工作过程主要分为外出和进入处理两部
34、分:1. 外出。当发送报文时,将在与发送接口相对应的安全策略组中按照从小到大的顺序号依次查找每一条安全策略。把报文与该条安全策略引用的访问控制列表进行匹配,如果返回结果为 permit,则使用这条安全策略对报文进行处理;如果返回结果为deny,则查找下一条安全策略。如果报文与所有安全策略引用的访问控制列表的比较结果都是 deny,则不使用 IPSec 协议保护,过程如图 1-2 所示。新的 IP 头 IPSec 头 原 IP 头 TCP 头 数据LINUX 系统 VPN(L2TP+IPSec)模块移植IPSec 模块设计- 8 -图 1-2 IPSec 外出包过程 2. 进入。在收到 IP 包
35、后,检测是否含有 IPSec 头, (查看 IP 头部中的协议值是否为50(ESP)或 51(AH))。如果有,IPSec 层将对 IP 包进行处理。IPSec 层从 IP 数据包中提取出 SPI,目的地址和协议值,查询 SA 数据库,进而确定相应的访问控制列表和交换集,并进行必要的验证,解密处理。如果验证通过,则将最后提取出的IP 数据包重新送入 IP 层转发处理,过程如图 1-3 所示。第一章 IPSec 基本思想- 9 -图 1-3 IPSec 传入包过程LINUX 系统 VPN(L2TP+IPSec)模块移植IPSec 模块设计- 10 -第二章 Openswan 构建思想2.1 Op
36、enswan 概述Openswan 是 Frees/WAN 的一个分裂项目,也是 IPSec 在 Linux 上的一种实现方法。因为 IPSec 工作在网络层,所以需要系统内核态的支持。Openswan 可以使用自身的内核堆栈(kernel stack) ,称为 KLIPS,但我们这里用的是 2.4 的内核,没有实现内核堆栈,故必须打 klips 补丁。2.2 Openswan 的连接方式1. NET-TO-NET 方式这种连接方式,可以将两个不同位置的网络连接成为一个虚拟专用网;连接建立后,两端的主机可以透明的互相访问。不过,两个网关间以及网关到对方子网内主机是不能实现透明访问的。因此产生第
37、二种连接方式 Road Warrior 。 使用这种方式必须满足以下条件:(1) 两个网络都有自己的 Linux 网关,且每个网关都安装了 Openswan。(2) 两端网络的 IP 地址不能出现叠加。在本地网关上可以安装 tcpdump,进行测试连接。2. Road Warrior 方式这种连接方式可以实现远程主机到本地网络的安全拨入,主要适用于经常出差的员工,使其可以远程安全的访问企业内部资源。这里强调的是,左右网关的配置不相同,而且可以实现网关到对方子网主机的透明访问。使用这种方式应该满足以下条件:(1)一个具有静态 IP 地址的 Linux 网关,安装了 Openswan。(2)一个安
38、装了 Openswan 的 laptop,可以是动态 IP 地址。2.3 Openswan 的认证方式1. RSA(RSA Signature )数字签名认证(1)生成一个新的 RSA 密钥对第二章 Openswan 构建思想- 11 -#ipsec newhostkey -output /etc/ipsec.secerts(2)获得 left 或 right 网关的公匙#ipsec showhostkey -left(或-right)- output 2. PSK 认证以左网关 IP 地址 右网关 IP 地址:PSK “secret shared by 5“的格式形成密钥。2.4 Opens
39、wan 的环境配置2.4.1 安装内核源代码1. 确保安装了 linux-2.4.20-8 的内核版本 。2. 检查/usr/src 目录下的 linux 和 linux-2.4 是否已链接到新近安装的内核源码。如果没有,使用下列命令创建:#ln -s linux-2.4.20-8 linux#ln -s linux-2.4.20-8 linux-2.43. 配置网卡 eth0,通过 vim /etc/modules.conf 命令去掉 eth0 的别名,避免名称冲突无法对网络进行设置 。4. 手动配置 eth0 的静态 IP 地址、默认网关,并激活。2.4.2 下载 Openswan 及相关
40、补丁1. 下载 openswan-2.4.7.tar.gz,及相应版本的 klips 和 nat-t 补丁。2. 使用虚拟机工具创建共享文件夹,通过 cd /mnt/hgfs/共享目录,即可实现 linux 和 windows 文件共享。并且鼠标可以在虚拟机和 windows 间自由切换,不需要按ctrl+alt。3. 将共享目录下的 openswan-2.4.7.tar.gz 复制到/usr/src 目录下,并把相关补丁拷贝到其解压缩后的 openswan-2.4.7 目录。2.4.3 选择需要的内核选项1. 清理源代码树,通过 make mrproper 命令确保源目录(/usr/src/
41、linux-2.4)下没有不正确的.o 文件,及文件的相互依赖。2. 通过 make menuconfig 生成内核源码。LINUX 系统 VPN(L2TP+IPSec)模块移植IPSec 模块设计- 12 -配置内核使用下面命令之一:(1)make config 基于文本的最为传统界面,不推荐使用(2)make menuconfig 基于文本选单的配置界面,字符终端下使用(3)make xconfig 需要有 x window system 支持3. 选择你所需要的内核选项,尽量不要把关于开发以及实验性的选项编译进来。选择相应配置时,三种选择:Y将该功能编译进内核 N不将该功能编译进内核M将
42、该功能编译成在需要时动态插入内核的模块4. 如果 Linux 是安装在 VMWare 之上的话,要确保 Ram Disk 驱动,文件系统,SCSI 驱动 (若是升级安装内核,BusLogic SCSI support 项亦必需设置为M),虚拟网卡 AMD PCnet32 驱动等选项做出了正确的选择。5. 通过 mkdir 建立新内核模块所需要的目录。2.4.4 编译安装内核1. 在/usr/src/openswan-2.4.7 目录下,通过 make nattpatch 命令应用内核补丁。2. 分别在/usr/src/linux 和/usr/src/linux-2.4 目录下,使用 make
43、dep bzImage编译内核。3. 编译并安装内核模块(1)Make modules 生成模块 。(2)Make modules_install 将模块拷到需要的目录,方便随时能正确地定位模块 。4. 使用 make install 安装内核 。5. 验证内核安装 。(1)检查/boot 目录 ,是否显示有以下三项:initrd-2.4.20-8custom.imgSystem.map-2.4.20-8customvmlinuz-2.4.20-8custom(2)移动 initrd-2.4.20-8custom.img 文件,并重新生成,避免因该文件引起错误。(3)检查/boot/grub/
44、grub.conf 文件,是否有新内核的相关资料 。(4)重启系统,进入新的内核 。第三章 Openswan 构建过程- 13 -第三章 Openswan 构建过程3.1 安装 Openswan1. 通过 uname r 命令确保启用了新的内核 。2. 安装生成 userland tools 和 ipsec 的可执行文件 ipsec.o 。(1)#make KERNELSRC=/usr/src/linux-2.4 programs module如果在过程中发现错误,只需找到相关目录,删除有错误的行即可 。(2)#make KERNELSRC=/usr/src/linux-2.4 install
45、 minstall3. 确保新内核的 ipsec 目录下有 ipsec.o 。4. 安装 Openswan。5. 修改 /etc/sysctl.conf 文件中参数的值,确保net.ipv4.ip_forward = 1 net.ipv4.conf.default.rp_filter = 06. 启用 sysctl.conf 文件 。7. 通过 service ipsec start 启动 openswan ,检查其状态。8. 再安装一台同版本的 linux 虚拟机系统,除了 eth0 网卡配置不同,其他部分均相同。3.2 NET-TO-NET 方式配置 Openswan1. 使用图 3-1
46、的网络模型建立 net-to-net 连接。图 3-1 网卡配置图2. 添加新的网卡,并按照模型图对网卡的静态 IP 地址,默认网关等进行设置激活。以便于在网关之间,网关与子网之间建立通信。LINUX 系统 VPN(L2TP+IPSec)模块移植IPSec 模块设计- 14 -3. 在左网关上编辑/etc/ipsec.conf,定义要建立的连接。(1)在 config setup 下添加 interfaces=%defaultroute (2)在 conn %default 下添加 authby=secret #设定 PSK 密钥compress=nokeyingtries=1 # 设置生命周
47、期 disablearrivalcheck=no #不可达时不检查(3)在# Add connections here 后面添加新定义的连接conn net-to-netleft=192.168.1.201 # 左网关外网 IPleftsubnet=192.168.10.0/24 # 左侧内网段right=192.168.1.202 # 右网关外网 IPrightsubnet=192.168.100.0/24 # 右侧内网段4. 在左网关上编辑/etc/ipsec.secrets,在其内容最后加上 192.168.1.201 192.168.1.202:PSK“密码” 。5. 永久性关闭防火墙
48、 chkconfig iptables off 。6. 通过 scp 命令将左网关的 ipsec.conf,ipsec.secrets 拷贝到右网关。两边建立相同的连接,和相同的认证方式。7. 本地网关自动启用 ipsec 连接。(1)在左右网关上编辑/etc/ipsec.conf在 conn net-to-net 下添加 auto=start (2)通过 ipsec setup restart 重新启动 ipsec,确定其状态。同时用 ifconfig 确定网卡是不是正确配置。(3)一切工作正常,使用 ipsec whack - status 查看“net-to-net”是否已经正确连接,如
49、图 3-2 所示。第三章 Openswan 构建过程- 15 -图 3-2 net-to-net 连接建立图 (4)使用 ipsec auto - up net-to-net 在本地网关启动连接,如图 3-3。 图 3-3 IPSec 自动启用图8. 本地网关手动启动 ipsec 连接 。(1)在左网关上编辑/etc/ipsec.conf在 conn net-to-net 下去掉 auto=start(2)配置网卡 ifconfig eth0 192.168.1.201(3)将虚拟网卡和物理网卡联系起来ipsec tncfg -attach virtual ipsec0 - physical eth0(4)配置虚拟网卡 ifconfig ipsec0 192.168.1.201 (5)启动守护进程 ipsec pluto pluto 是 openswan 的三个主要组件之一,是密钥管理工具,用来认证网关间的通信。(6) 查看 ipsec0 的添加情况 ipsec whack - listen (7)配置连接 ipsec whack - nam