Openswan和freeswan的区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Openswan和freeswan的区别?相关的知识,希望对你有一定的参考价值。

关于IPSec的软件,这两个的区别在什么地方?哪个好点?

  openswan采用的是ipsec技术实现的VPN,由于在IP层实现,效率高,历史悠久,网上相关的配置文章也多,稳定。可以实现p2p,p2net,net2net.
  openvpn采用SSL技术实现,由于主要工作在应用层,效率低,如果单位流量比较大,还是不要用这个了。另个他采用了SSL技术,也不是我们通常所说的SSL VPN。

  目前市场上比较流行的硬件VPN都是采用的ipsec技术。所以选择第一种对你以后更换硬件有帮助。
  基本上来说,市场上的硬件VPN产品很少采用openvpn这样的技术的。

  IPSEC工作原理
  --------------------------------------------------------------------------------

  虚拟专网是指在公共网络中建立专用网络,数据通过安全的“管道”在公共网络中传播。使用VPN有节省成本、提供远程访问、扩展性强、便于管理和实现全面控制等好处,是目前和今后网络服务的重点项目。因此必须充分认识虚拟专网的技术特点,建立完善的服务体系。 VPN工作原理
  目前建造虚拟专网的国际标准有IPSEC(RFC 1825-1829)和L2TP(草案draft-ietf-pppext-l2tp-10)。其中L2TP是虚拟专用拨号网络协议,是IETF根据各厂家协议(包括微软公司的PPTP、Cisco的L2F)进行起草的,目前尚处于草案阶段。IPSEC是一系列基于IP网络(包括Intranet、Extranet和Internet)的,由IETF正式定制的开放性IP安全标准,是虚拟专网的基础,已经相当成熟可靠。L2TP协议草案中规定它(L2TP标准)必须以IPSEC为安全基础(见draft-ietf-pppext-l2tp-security-01)。因此,阐述VPN的工作原理,主要是分析IPSEC的工作原理。
  IPSEC提供三种不同的形式来保护通过公有或私有IP网络来传送的私有数。
  认证——作用是可以确定所接受的数据与所发送的数据是一致的,同时可以确定申请发送者在实际上是真实发送者,而不是伪装的。
  数据完整——作用是保证数据从原发地到目的地的传送过程中没有任何不可检测的数据丢失与改变。
  机密性——作用是使相应的接收者能获取发送的真正内容,而无意获取数据的接收者无法获知数据的真正内容。
  在IPSEC由三个基本要素来提供以上三种保护形式:认证协议头(AH)、安全加载封装(ESP)和互联网密匙管理协议(IKMP)。认证协议头和安全加载封装可以通过分开或组合使用来达到所希望的保护等级。
  认证协议头(AH)是在所有数据包头加入一个密码。正如整个名称所示,AH通过一个只有密匙持有人才知道的“数字签名”来对用户进行认证。这个签名是数据包通过特别的算法得出的独特结果;AH还能维持数据的完整性,因为在传输过程中无论多小的变化被加载,数据包头的数字签名都能把它检测出来。不过由于AH不能加密数据包所加载的内容,因而它不保证任何的机密性。两个最普遍的AH标准是MD5和SHA-1,MD5使用最高到128位的密匙,而SHA-1通过最高到160位密匙提供更强的保护。
  安全加载封装(ESP)通过对数据包的全部数据和加载内容进行全加密来严格保证传输信息的机密性,这样可以避免其他用户通过监听来打开信息交换的内容,因为只有受信任的用户拥有密匙打开内容。ESP也能提供认证和维持数据的完整性。最主要的ESP标准是数据加密标准(DES),DES最高支持56位的密匙,而3DES使用三套密匙加密,那就相当于使用最高到168位的密匙。由于ESP实际上加密所有的数据,因而它比AH需要更多的处理时间,从而导致性能下降。
  密匙管理包括密匙确定和密匙分发两个方面,最多需要四个密匙:AH和ESP各两个发送和接收密匙。密匙本身是一个二进制字符串,通常用十六进制表示,例如,一个56位的密匙可以表示为5F39DA752E0C25B4。注意全部长度总共是64位,包括了8位的奇偶校验。56位的密匙(DES)足够满足大多数商业应用了。密匙管理包括手工和自动两种方式,手工管理系统在有限的安全需要可以工作得很好,而自动管理系统能满足其他所有的应用要求。
  使用手工管理系统,密匙由管理站点确定然后分发到所有的远程用户。真实的密匙可以用随机数字生成器或简单的任意拼凑计算出来,每一个密匙可以根据集团的安全政策进行修改。 使用自动管理系统,可以动态地确定和分发密匙,显然和名称一样,是自动的。自动管理系统具有一个中央控制点,集中的密匙管理者可以令自己更加安全,最大限度的发挥IPSEC的效用。
  IPSEC的实现方式
  IPSEC的一个最基本的优点是它可以在共享网络访问设备,甚至是所有的主机和服务器上完全实现,这很大程度避免了升级任何网络相关资源的需要。在客户端,IPSEC架构允许使用在远程访问介入路由器或基于纯软件方式使用普通MODEM的PC机和工作站。而ESP通过两种模式在应用上提供更多的弹性:传送模式和隧道模式。
  IPSEC Packet 可以在压缩原始IP地址和数据的隧道模式使用
  传送模式通常当ESP在一台主机(客户机或服务勤)上实现时使用,传送模式使用原始明文IP头,并且只加密数据,包括它的TCP和UDP头。
  隧道模式通常当ESP在关联到多台主机的网络访问介入装置实现时使用,隧道模式处理整个IP数据包——包括全部TCP/IP或UDP/IP头和数据,它用自己的地址做为源地址加入到新的IP头。当隧道模式用在用户终端设置时,它可以提供更多的便利来隐藏内部服务器主机和客户机的地址。

  虚拟专网的加密算法说明
  --------------------------------------------------------------------------------

  一、IPSec认证
  IPSec认证包头(AH)是一个用于提供IP数据报完整性和认证的机制。完整性保证数据报不被无意的或恶意的方式改变,而认证则验证数据的来源(主机、用户、网络等)。AH本身其实并不支持任何形式的加密,它不能保护通过Internet发送的数据的可信性。AH只是在加密的出口、进口或使用受到当地政府限制的情况下可以提高全球Intenret的安全性。当全部功能实现后,它将通过认证IP包并且减少基于IP欺骗的攻击机率来提供更好的安全服务。AH使用的包头放在标准的IPv4和IPv6包头和下一个高层协议帧(如TCP、UDP、I CMP等)之间。
  AH协议通过在整个IP数据报中实施一个消息文摘计算来提供完整性和认证服务。一个消息文摘就是一个特定的单向数据函数,它能够创建数据报的唯一的数字指纹。消息文摘算法的输出结果放到AH包头的认证数据(Authentication_Data)区。消息文摘5算法(MD5)是一个单向数学函数。当应用到分组数据中时,它将整个数据分割成若干个128比特的信息分组。每个128比特为一组的信息是大分组数据的压缩或摘要的表示。当以这种方式使用时,MD5只提供数字的完整性服务。一个消息文摘在被发送之前和数据被接收到以后都可以根据一组数据计算出来。如果两次计算出来的文摘值是一样的,那么分组数据在传输过程中就没有被改变。这样就防止了无意或恶意的窜改。在使用HMAC-MD5认证过的数据交换中,发送者使用以前交换过的密钥来首次计算数据报的64比特分组的MD5文摘。从一系列的16比特中计算出来的文摘值被累加成一个值,然后放到AH包头的认证数据区,随后数据报被发送给接收者。接收者也必须知道密钥值,以便计算出正确的消息文摘并且将其与接收到的认证消息文摘进行适配。如果计算出的和接收到的文摘值相等,那么数据报在发送过程中就没有被改变,而且可以相信是由只知道秘密密钥的另一方发送的。
  二、IPSec加密
  封包安全协议(ESP)包头提供IP数据报的完整性和可信性服务ESP协议是设计以两种模式工作的:隧道(Tunneling)模式和传输(Transport)模式。两者的区别在于IP数据报的ESP负载部分的内容不同。在隧道模式中,整个IP数据报都在ESP负载中进行封装和加密。当这完成以后,真正的IP源地址和目的地址都可以被隐藏为Internet发送的普通数据。这种模式的一种典型用法就是在防火墙-防火墙之间通过虚拟专用网的连接时进行的主机或拓扑隐藏。在传输模式中,只有更高层协议帧(TCP、UDP、ICMP等)被放到加密后的IP数据报的ESP负载部分。在这种模式中,源和目的IP地址以及所有的IP包头域都是不加密发送的。
  IPSec要求在所有的ESP实现中使用一个通用的缺省算法即DES-CBC算法。美国数据加密标准(DES)是一个现在使用得非常普遍的加密算法。它最早是在由美国政府公布的,最初是用于商业应用。到现在所有DES专利的保护期都已经到期了,因此全球都有它的免费实现。IPSec ESP标准要求所有的ESP实现支持密码分组链方式(CBC)的DES作为缺省的算法。DES-CBC通过对组成一个完整的IP数据包(隧道模式)或下一个更高的层协议帧(传输模式)的8比特数据分组中加入一个数据函数来工作。DES-CBC用8比特一组的加密数据(密文)来代替8比特一组的未加密数据(明文)。一个随机的、8比特的初始化向量(IV)被用来加密第一个明文分组,以保证即使在明文信息开头相同时也能保证加密信息的随机性。DES-CBC主要是使用一个由通信各方共享的相同的密钥。正因为如此,它被认为是一个对称的密码算法。接收方只有使用由发送者用来加密数据的密钥才能对加密数据进行解密。因此,DES-CBC算法的有效性依赖于秘密密钥的安全,ESP使用的DES-CBC的密钥长度是56比特。

  基于IPSec的VPN技术原理于实现

  摘要:本文描述了VPN技术的基本原理以及IPSec规范,在此基础上介绍了VPN技术的实现方法和几种典型应用方案。最后,作者对VPN技术的推广与应用提出了自己的看法。

  1.引言

  1998年被称作“电子商务年”,而1999年则将是“政府上网年”。的确,Intemet作为具有世界范围连通性的“第四媒体”,已经成为一个具有无限商机的场所。如何利用Intemet来开展商务活动,是目前各个企业讨论的热门话题。但将Internet实际运用到商业中,还存在一些亟待解决的问题,其中最重要的两个问题是服务质量问题和安全问题。服务质量问题在有关厂商和ISP的努力下正在逐步得以解决,而VPN技术的产生为解决安全问题提供了一条有效途径。

  所谓VPN(VirtualPrivate Network,虚拟私有网络)是指将物理上分布在不同地点的网络通过公用骨干网联接而成逻辑上的虚拟子网,这里的公用网主要指Interet。为了保障信息在Internet上传输的安全性,VPN技术采用了认证、存取控制、机密性、数据完整性等措施,,以保证了信息在传输中不被偷看、篡改、复制。由于使用Internet进行传输相对于租用专线来说,费用极为低廉,所以VPN的出现使企业通过Internet既安全又经济地传输私有的机密信息成为可能。

  VPN技术除了可以节省费用外,还具有其它特点:

  ●伸缩性椂能够随着网络的扩张,很灵活的加以扩展。当增加新的用户或子网时,只需修改已有网络软件配置,在新增客户机或网关上安装相应软件并接人Internet后,新的VPN即可工作。

  ●灵活性枣除了能够方便地将新的子网扩充到企业的网络外,由于Intemet的全球连通性,VPN可以使企业随时安全地将信息存取到全球的商贸伙伴和顾客。

  ●易于管理枣用专线将企业的各个子网连接起来时,随着子网数量的增加,需要的专线数以几何级数增长。而使用VPN时Internet的作用类似一个HUB,只需要将各个子网接入Internet即可,不需要进行各个线路的管理。

  VPN既可以用于构建企业的Intranet,也可以用于构建Extranet。随着全球电子商务热的兴起,VPN应用必将越来越广泛。据Infonetics Reseach的预测,VPN的市场分额将从今天的两亿美元增长到2001年时的119亿美元,其中VPN产品的销售收入就要占其中的十分之一。

  2.基于IPSec规范的VPN技术

  1)IPSec协议简介

  IPSec(1P Security)产生于IPv6的制定之中,用于提供IP层的安全性。由于所有支持TCP/IP协议的主机进行通信时,都要经过IP层的处理,所以提供了IP层的安全性就相当于为整个网络提供了安全通信的基础。鉴于IPv4的应用仍然很广泛,所以后来在IPSec的制定中也增添了对IPv4的支持。

  最初的一组有关IPSec标准由IETF在1995年制定,但由于其中存在一些未解决的问题,从1997年开始IETF又开展了新一轮的IPSec的制定工作,截止至1998年11月份主要协议已经基本制定完成。不过这组新的协议仍然存在一些问题,预计在不久的将来IETF又会进行下一轮IPSec的修订工作。

  2)IPSec基本工作原理

  IPSec的工作原理(如图l所示)类似于包过滤防火墙,可以看作是对包过滤防火墙的一种扩展。当接收到一个IP数据包时,包过滤防火墙使用其头部在一个规则表中进行匹配。当找到一个相匹配的规则时,包过滤防火墙就按照该规则制定的方法对接收到的IP数据包进行处理。 这里的处理工作只有两种:丢弃或转发。

  图1 IPSec工作原理示意图

  IPSec通过查询SPD(Security P01icy Database安全策略数据库)决定对接收到的IP数据包的处理。但是IPSec不同于包过滤防火墙的是,对IP数据包的处理方法除了丢弃,直接转发(绕过IPSec)外,还有一种,即进行IPSec处理。正是这新增添的处理方法提供了比包过滤防火墙更进一步的网络安全性。

  进行IPSec处理意味着对IP数据包进行加密和认证。包过滤防火墙只能控制来自或去往某个站点的IP数据包的通过,可以拒绝来自某个外部站点的IP数据包访问内部某些站点,.也可以拒绝某个内部站点方对某些外部网站的访问。但是包过滤防火墙不能保证自内部网络出去的数据包不被截取,也不能保证进入内部网络的数据包未经过篡改。只有在对IP数据包实施了加密和认证后,才能保证在外部网络传输的数据包的机密性,真实性,完整性,通过Internet进新安全的通信才成为可能。

  IPSec既可以只对IP数据包进行加密,或只进行认证,也可以同时实施二者。但无论是进行加密还是进行认证,IPSec都有两种工作模式,一种是与其前一节提到的协议工作方式类似的隧道模式,另一种是传输模式。

  传输模式,如图2所示,只对IP数据包的有效负载进行加密或认证。此时,继续使用以前的IP头部,只对IP头部的部分域进行修改,而IPSec协议头部插入到IP头部和传输层头部之间。

  图2 传输模式示意图

  隧道模式,如图3所示,对整个IP数据色进行加密或认证。此时,需要新产生一个IP头部,IPSec头部被放在新产生的IP头部和以前的IP数据包之间,从而组成一个新的IP头部。

  图3隧道模式示意图

  3)IPSec中的三个主要协议

  前面已经提到IPSec主要功能为加密和认证,为了进行加密和认证IPSec还需要有密钥的管理和交换的功能,以便为加密和认证提供所需要的密钥并对密钥的使用进行管理。以上三方面的工作分别由AH,ESP和IKE三个协议规定。为了介绍这三个协议,需要先引人一个非常重要的术语枣SA(Securlty Association安全关联)。所谓安全关联是指安全服务与它服务的载体之间的一个“连接”。AH和ESP都需要使用SA,而IKE的主要功能就是SA的建立和维护。只要实现AH和ESP都必须提供对SA的支持。

  通信双方如果要用IPSec建立一条安全的传输通路,需要事先协商好将要采用的安全策略,包括使用的加密算法、密钥、密钥的生存期等。当双方协商好使用的安全策略后,我们就说双方建立了一个SA。SA就是能向其上的数据传输提供某种IPSec安全保障的一个简单连接,可以由AH或ESP提供。当给定了一个SA,就确定了IPSec要执行的处理,如加密,认证等。SA可以进行两种方式的组合,分别为传输临近和嵌套隧道。

  1)ESP(Encapsulating Secuity Fayload)

  ESP协议主要用来处理对IP数据包的加密,此外对认证也提供某种程度的支持。ESP是与具体的加密算法相独立的,几乎可以支持各种对称密钥加密算法,例如DES,TripleDES,RC5等。为了保证各种IPSec实现间的互操作性,目前ESP必须提供对56位DES算法的支持。

  ESP协议数据单元格式三个部分组成,除了头部、加密数据部分外,在实施认证时还包含一个可选尾部。头部有两个域:安全策略索引(SPl)和序列号(Sequencenumber)。使用ESP进行安全通信之前,通信双方需要先协商好一组将要采用的加密策略,包括使用的算法、密钥以及密钥的有效期等。“安全策略索引”使用来标识发送方是使用哪组加密策略来处理IP数据包的,当接收方看到了这个序号就知道了对收到的IP数据包应该如何处理。“序列号”用来区分使用同一组加密策略的不同数据包。加密数据部分除了包含原IP数据包的有效负载,填充域(用来保证加密数据部分满足块加密的长度要求)包含其余部分在传输时都是加密过的。其中“下一个头部(Next Header)”用来指出有效负载部分使用的协议,可能是传输层协议(TCP或UDP),也可能还是IPSec协议(ESP或AH)。

  通常,ESP可以作为IP的有效负载进行传输,这JFIP的头UKB指出下广个协议是ESP,而非TCP和UDP。由于采用了这种封装形式,所以ESP可以使用旧有的网络进行传输。

  前面已经提到用IPSec进行加密是可以有两种工作模式,意味着ESP协议有两种工作模式:传输模式(Transport Mode)和隧道模式(TunnelMode)。当ESP工作在传输模式时,采用当前的IP头部。而在隧道模式时,侍整个IP数据包进行加密作为ESP的有效负载,并在ESP头部前增添以网关地址为源地址的新的IP头部,此时可以起到NAT的作用。

  2)AH(Authentication Header)

  AH只涉及到认证,不涉及到加密。AH虽然在功能上和ESP有些重复,但AH除了对可以对IP的有效负载进行认证外,还可以对IP头部实施认证。主要是处理数据对,可以对IP头部进行认证,而ESP的认证功能主要是面对IP的有效负载。为了提供最基本的功能并保证互操作性,AH必须包含对HMAC?/FONT>SHA和HMAC?/FONT>MD5(HMAC是一种SHA和MD5都支持的对称式认证系统)的支持。

  AH既可以单独使用,也可在隧道模式下,或和ESP联用。

  3)IKE(Internet Key Exchange)

  IKE协议主要是对密钥交换进行管理,它主要包括三个功能:

  ●对使用的协议、加密算法和密钥进行协商。

  ●方便的密钥交换机制(这可能需要周期性的进行)。

  ●跟踪对以上这些约定的实施。

  3.VPN系统的设计

  如图4所示,VPN的实现包含管理模块、密钥分配和生成模块、身份认证模块、数据加密/解密模块、数据分组封装/分解模块和加密函数库几部分组成。

  管理模块负责整个系统的配置和管理。由管理模块来决定采取何种传输模式,对哪些IP数据包进行加密/解密。由于对IP数据包进行加密需要消耗系统资源,增大网络延迟,因此对两个安全网关之间所有的IP数据包提供VPN服务是不现实的。网络管理员可以通过管理模块来指定对哪些IP数据包进行加密。Intranet内部用户也可以通过Telnet协议传送的专用命令,指定VPN系统对自已的IP数据包提供加密服务。

  密钥管理模块负责完成身份认证和数据加密所需的密钥生成和分配。其中密钥的生成采取随机生成的方式。各安全网关之间密钥的分配采取手工分配的方式, 通过非网络传输的其它安全通信方式完成密钥在各安全网关之间的传送。各安全网关的密钥存贮在密数据库中,支持以IP地址为关键字的快速查询获取。

  身份认证模块对IP数据包完成数字签名的运算。整个数字签名的过程如图5所示:

  图5 数字签名

  首先,发送方对数据进行哈希运算h=H(m),然后 用通信密钥k对h进行加密得到签名Signature= h key。发送方将签名附在明文之后,一起传送给接收方。 接收方收到数据后,首先用密钥k对签名进行解密得到 h,并将其与H(m)进行比较,如果二者一致,则表明数据是完整的。数字签名在保证数据完整性的同时,也起到了身份认证的作用,因为只有在有密钥的情况之下,才能对数据进行正确的签名。

  数据加密/解密模块完成对IP数据包的加密和解密操作。可选的加密算法有IDEA算法和DES算法。前者在用软件方式实现时可以获得较快的加密速度。为了 进一步提高系统效率,可以采用专用硬件的方式实现数据的加密和解密,这时采用DES算法能得到较快的加密速度。随着当前计算机运算能力的提高,DES算法的安 全性开始受到挑战,对于安全性要求更高的网络数据,数据加密/解密模块可以提供TriPle DES加密服务。

  数据分组的封装/分解模块实现对IP数据分组进行安全封装或分解。当从安全网关发送IP数据分组时,数据分组封装/分解模块为IP数据分组附加上身份认

  证头AH和安全数据封装头ESP。当安全网关接收到IP 数据分组时,数据分组封装/分解模块对AH和ESP进行协议分析,并根据包头信息进行身份验证和数据解密。

  加密函数库为上述模块提供统一的加密服务。加密 函数库设计的一条基本原则是通过一个统一的函数接口界面与上述模块进行通信。这样可以根据实际的需

  要,在挂接加密算法和加密强度不同的函数库时,其它模块不需作出改动。

  4.几种典型的VPN应用方案

  VPN的应用有两种基本类型:拨号式VPN与专用式VPN。

  拨号VPN为移动用户与远程办公者提供远程内部网访问,这种形式的VPN是当前最流行的形式。拨号VPN业务也称为“公司拨号外包”方式。按照隧道建立的场所,拨号VPN分为两种:在用户PC机上或在服务提供商的网络访问服务器(NAS)上。

  专用VPN有多种形式,其共同的要素是为用户提供IP服务,一般采用安全设备或客户端的路由器等设备在IP网络上完成服务。通过在帧中继或ATM网上安装IP接口也可以提供IP服务。专用业务应用通过WAN将远程办公室与企业的内部网与外部网连接起来,这些业务的特点是多用户与高速连接,为提供完整的VPN业务,企业与服务提供商经常将专用VPN与远程访问方案结合起来。

  目前刚出现一种VPN知觉的网络,服务提供商将很快推出一系列新产品,专门用于提供商在向企业提供专用增值服务时对扩展性与灵活性的需求。

  5.结束语

  总之,VPN是一项综合性的网络新技术,即使在网络高度发达的美国也才推出不久,但是已显示出强大的生命力,Cisco、3Com、Ascend等公司已推出了各自的产品。但是VPN产品能否被广泛接受主要取决于以下两点:一是VPN方案能否以线路速度进行加密,否则将会产生瓶颈;二是能否调度和引导VPN的数据流到网络上的不同管理域。

  在中国,由于网络基础设施还比较落后,计算机应用水平也不高,因此目前对VPN技术的需求还不高,大多数厂商还处在徘徊观望阶段,但是随着国民经济信息化进程的加快,特别是政府上网、电子商务的推动,VPN技术将会大有用武之地。

参考资料:http://www.netsp.com.cn/Article/netsafe/VPN/200506/20050601121100.html

参考技术A openswan采用的是ipsec技术实现的VPN,由于在IP层实现,效率高,历史悠久,网上相关的配置文章也多,稳定。可以实现p2p,p2net,net2net. openvpn采用SSL技术实现,由于主要工作在应用层,效率低,如果单位流量比较大,还是不要用这个了。
另个他采用了SSL技术,也不是我们通常所说的SSL VPN。 目前市场上比较流行的硬件VPN都是采用的ipsec技术。所以选择第一种对你以后更换硬件有帮助。 基本上来说,市场上的硬件VPN产品很少采用openvpn这样的技术的。

openswan简介,安装,部署

1. OpenSWan介绍

1.1 OpenSWan概述

OpenSWanlinuxIpsecI2tp协议的一个不错的实现方案。他支持和ipsec相关的大多数的扩展(RFC+IETF drafts)。Openswan项目起源于FreeS/WAN 2.04项目,该项目的功能很强大,可以很大程度上保证数据在跨网传输中的安全性、完整性,特别是通过它,饿哦没可以很好地实现跨机房或异地办公场所实现局域网互联解决方案,如果和openvpn工具配合,可以实现将注入门户网站的多机房互访及vpn的各种强大解决方案

OpenSWan也并不都是优点,首先,其官方社区还不完善,官方文档信息比较少

大中型企业最需要的方案-------跨公网实现多个机房通过局域网互联的重要生产应用场景(network-to-network or sete-to-site

OpenSWan由三个主要组件构成

a.配置工具(ipsec命令脚本)

b.Key管理工具(pluto

c.内核组件(KLIPS/26sec

更多的openswan信息可查看软件包下面的INSTALLREADMEDOCS

2. 安装环境与主机规划

主机名

网卡eth0(外网)

网卡eth1(内网)

默认网关

用途

Lserver1

192.168.1.80

192.168.2.80

192.168.1.1

Left1网关

Rserver1

192.168.1.81

192.168.3.81

192.168.1.1


Lclient1

192.168.2.180


192.168.2.80

Left1客户机

Rclient1

192.168.3.181


192.168.3.81

Right1客户机

1)提示:Lserver1Rserver1可以互相ping

2)Lclient可以pingLserver1,甚至可以pingRserver1的外网卡

3)Rclient可以pingRclient

4)Lclient可以pingrserver1,同时可以pinglserver1

5)lclient不能和rclient1互通。

6)最终目的就是lclient能和rclient1互通

 

1)在部署前进行主机规划的意义非常重大,它可以让我们思路清晰,避免走冤枉路

2)如无特殊说明,上述规划中的子网掩码均为24

3)上述中L表示leftR表示right

生产环境网段划分

技术分享


技术分享

技术分享

 

2.2 检查主机间的连接是否正常

7)Lserver1Rserver1可以互相ping

8)Lclient可以pingLserver1,甚至可以pingRserver1的外网卡

9)Rclient可以pingRclient

10)Lclient可以pingrserver1,同时可以pinglserver1

11)lclient不能和rclient1互通。

12)最终目的就是lclient能和rclient1互通

3. 安装技术软件及配置系统参数

3.1 安装基础软件包

yum -y install ipsec-tools

yum -y install gmp gmp-devel gawk flex bison

3.2 检查安装的基础软件包

rpm -aq gmp gmp-devel gawk flex bison ipsec-tools

3.3 配置内核参数

cp /etc/sysctl.conf /etc/sysctl.conf.$(date +%F)

sysctl -a | egrep "ipv4.*(accept|send)_redirects" | awk -F "=" ‘{print $1 "=0"}‘ >> /etc/sysctl.conf

强调:如果不进行内核调优,后面会出现问题

sed -i ‘s#net.ipv4.ip_forward = 0#net.ipv4.ip_forward = 1#g ‘ /etc/sysctl.conf

sed -i ‘s#net.ipv4.conf.default.rp_filter = 1#net.ipv4.conf.default.rp_filter = 0#g ‘ /etc/sysctl.conf

egrep "rp_filter|forward" /etc/sysctl.conf

sysctl -p

4. 安装OpenSwan软件

4.1 下载编译并安装

wget https://download.openswan.org/openswan/openswan-2.6.40.tar.gz

mkdir -p /home/yan/tools

cd /home/yan/tools

tar -xf openswan-2.6.40.tar.gz

cd openswan-2.6.40

make programs

make install

4.2 验证安装结果

[[email protected] ~]# ipsec --version

Linux Openswan U2.6.40/K(no kernel code presently loaded)

See `ipsec --copyright‘ for copyright information.

[[email protected] ~]# ipsec verify

4.3 启动服务

/etc/init.d/ipsec start

ipsec_setup: Starting Openswan IPsec 2.6.40...

ipsec_setup: No KLIPS support found while requested, desperately falling back to netkey

ipsec_setup: NETKEY support found. Use protostack=netkey in /etc/ipsec.conf to avoid attempts to use KLIPS. Attempting to continue with NETKEY

4.4 检查服务

[[email protected] ~]# /etc/init.d/ipsec status

IPsec running  - pluto pid: 15141

pluto pid 15141

No tunnels up

 

[[email protected] ~]# ipsec verify

Checking if IPsec got installed and started correctly:

 

Version check and ipsec on-path                   [OK]

Openswan U2.6.40/K2.6.32-431.el6.x86_64 (netkey)

See `ipsec --copyright‘ for copyright information.

Checking for IPsec support in kernel              [OK]

 NETKEY: Testing XFRM related proc values

         ICMP default/send_redirects              [OK]

         ICMP default/accept_redirects            [OK]

         XFRM larval drop                         [OK]

Hardware random device check                      [N/A]

Two or more interfaces found, checking IP forwarding[OK]

Checking rp_filter                                [ENABLED]

 /proc/sys/net/ipv4/conf/eth0/rp_filter           [ENABLED]

 /proc/sys/net/ipv4/conf/eth1/rp_filter           [ENABLED]

Checking that pluto is running                    [OK]

 Pluto listening for IKE on udp 500               [OK]

 Pluto listening for IKE on tcp 500               [NOT IMPLEMENTED]

 Pluto listening for IKE/NAT-T on udp 4500        [OK]

 Pluto listening for IKE/NAT-T on tcp 4500        [NOT IMPLEMENTED]

 Pluto listening for IKE on tcp 10000 (cisco)     [NOT IMPLEMENTED]

Checking NAT and MASQUERADEing                    [TEST INCOMPLETE]

Checking ‘ip‘ command                             [IP XFRM BROKEN]

Checking ‘iptables‘ command                       [OK]

 

解决方法:

echo 0 > /proc/sys/net/ipv4/conf/lo/rp_filter

echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter

echo 0 > /proc/sys/net/ipv4/conf/eth1/rp_filter

4.5 查看pluto端口

[[email protected] ~]# netstat -ntlpu | grep pluto

udp        0      0 127.0.0.1:500               0.0.0.0:*                               29543/pluto         

udp        0      0 192.168.1.81:500            0.0.0.0:*                               29543/pluto         

udp        0      0 192.168.3.81:500            0.0.0.0:*                               29543/pluto         

udp        0      0 127.0.0.1:4500              0.0.0.0:*                               29543/pluto         

udp        0      0 192.168.1.81:4500           0.0.0.0:*                               29543/pluto         

udp        0      0 192.168.3.81:4500           0.0.0.0:*                               29543/pluto         

udp        0      0 ::1:500                     :::*                                    29543/pluto

 

5. 配置OpenSwan

5.1 Openswan主要配置文件

/etc/ipsec.secrets用来保存private RSA keys preshared secrets PSKs

/etc/ipsec.confOpenSWan主要配置文件(settings, options, defaults, connections

5.2 Openswan主要配置说明

/etc/ipsec.d/cacerts存放X.509认证证书

/etc/ipsec.d/certs存放X.509客户端证书

/etc/ipsec.d/crls存放X.509证书撤销文件

/etc/ipsec.d/private存放X.509认证私钥

/etc/ipsec.d/ocspcerts存放X.509 OCSP证书

/etc/ipsec.d/policies存放Opportunistic Encryption 策略组

5.3 OpenSWan连接方式

1Network-to-Network

条件:

每个子网各自拥有一台安装有Openswan的主机作为其子网的出口网关

每个子网的IP段不能有叠加

2)Road Warrior方式

当使用Network-to-Network方式时,作为每个子网网关的之际不能像子网内部主机那样透明访问远程子网的之际,也就是说:如果你是一个使用笔记本电脑的移动用户,经常出差或是在不同的地点办公,你的PC将不能用Network-to-Network方式与公司网络进行连接。

Road Warrior方式正是为这种情况而设计的,连接建立后,你的pc就可以链接到远程的网络了

5.4 使用RSA数字签名(RSASIG)认证方式配置openswan

1)Lserver1Rserver1上分别生成新的hostkeys

备份:

cp /etc/ipsec.secrets /etc/ipsec.secrets.$(date +%U%T)

ipsec newhostkey --output /etc/ipsec.secrets (有时候长时间没反应,需要多等下)

2)Lserver上执行下面的命令获得leftrsasigkey(即Lserver的公钥Public Key

[[email protected] ~]# ipsec showhostkey --left

[[email protected] ~]# ipsec showhostkey --left >tmp.log

3)Rserver上执行下面的命令获得leftrsasigkey(即Lserver的公钥Public Key

[[email protected] ~]# ipsec showhostkey --right

[[email protected] ~]# ipsec showhostkey --right >tmp.log

4)编辑配置文件ipsec.conf

模板文件cat /usr/local/share/doc/openswan/ipsec.conf-sample

vim /etc/ipsec.conf

两边重新启动

/etc/init.d/ipsec restart

/etc/init.d/ipsec status

IPsec running  - pluto pid: 15761

pluto pid 15761

8 tunnels up

some eroutes exist

不出意外,已经配置正确

5)对每个子网IPNAT映射

所有主机都通过openswan网关出网

Lserver1:

iptables -t nat -I POSTROUTING -o eth0 -s 192.168.2.0/24 -j MASQUERADE

echo iptables -t nat -I POSTROUTING -o eth0 -s 192.168.2.0/24 -j MASQUERADE >> /etc/rc.local

(此时Lclient可以上网了)

Rserver1:

iptables -t nat -I POSTROUTING -o eth0 -s 192.168.3.0/24 -j MASQUERADE

echo iptables -t nat -I POSTROUTING -o eth0 -s 192.168.3.0/24 -j MASQUERADE >> /etc/rc.local

(此时Rclient可以上网了)

6. 启动OpenSwan服务

6.1 分别重启OpenSwan服务

/etc/init.d/ipsec restart

此时Lclient 192.168.2.180Rclient 192.168.3.181 ping能通,目标完成

 

7.

技术分享 

 

7.2 通过route实战解决跨机房间的故障

此类问题,最多的就是排查路由的问题,因为有些服务器的网关并不是openswan网关的地址,即不符合本文开头的约定。

此时就需要route命令为网关地址不是openswan网关的地址的客户端添加特定路由。

7.3 通过tcpdump实战解决跨机房间的故障

tcpdump检查实际上是对数据包去和回进行跟踪,然后采取措施纠正其错误

 技术分享

tcpdump -nnn -i eth0 -s 10000 | grep ICMP

 

如果是多机房下面增加一段配置

7.4

1)大中型公司代码上线的解决方案

2)IDC机房或办公室vpn拨号访问解决方案

3)跨机房跨办公场所互联解决方案(vpnipsec)  <==修路搭桥

4)拨号到一个主机房,然后直接方案其他机房的内部服务器方案(借助23

5)跨机房的数据同步方案(文件同步rsync,inotify,unsion,csync<==跑汽车,火车

6)跨机房的数据同步方案(m-s

7)跨机房之间的业务访问解决方案

a.要尽可能多的本地访问,少量异地访问,例如,A机房的web原来是访问B机房的DB(开发人员的思路)改成远程写B机房的数据库,然后都本地的数据库(从对端把主库数据同步到A端从数据库中)

思想:远程写,本地读(包括图片文件和数据等)

8)跨机房通过队列异步同步数据(A机房写消息队列里QB机房消费A机房的消息队列Q

9)tcpdump排查故障的思路思想

10)统一认证解决方案(服务器\FTPSAMBAVPNPOSTFIXSVNHTTPJIRAGIT

11)跨机房业务的高可用可用方案(VPNIPSEC


以上是关于Openswan和freeswan的区别?的主要内容,如果未能解决你的问题,请参考以下文章

AWS 的站点到站点 OpenSWAN *** 隧道问题

Openswan 和 strongSwan 相比,各有啥特点

CentOS 6安装Openswan问题求助

网络重启后Openswan隧道不工作

Python 上的 io.open() 和 os.open() 有啥区别?

open与load_workbook的区别