Centos6.4 openswan 搭建使用方法

直接放图好像有点问题,上传了doc文件,有兴趣的可以下载看看

一.Openswan介绍

Openswan简介请自行百度。

二、openswan的配置介绍
  1. OpenSWan
主要配置文件
/etc/ipsec.secrets                
用来保存private RSA keys preshared secrets (PSKs)
/etc/ipsec.conf                  
配置文件(settings,options, defaults, connections)   2. OpenSWan主要配置目录
/etc/ipsec.d/cacerts              
存放X.509认证证书(根证书-"rootcertificates"
/etc/ipsec.d/certs                
存放X.509客户端证书(X.509client Certificates
/etc/ipsec.d/private              
存放X.509认证私钥(X.509Certificate private keys
/etc/ipsec.d/crls                
存放X.509证书撤消列表(X.509Certificate Revocation Lists
/etc/ipsec.d/ocspcerts            
存放X.500 OCSP证书(OnlineCertificate Status Protocol certificates
/etc/ipsec.d/passwd               XAUTH
密码文件(XAUTH password file
/etc/ipsec.d/policies            
存放Opportunistic Encryption策略组(The Opportunistic Encryption policy groups   3. OpenSWan连接方式
  OpenSWan
有两种连接方式:
     1) Network-To-Network
方式
顾名思义,Network-To-Network方式是把两个网络连接成一个虚拟专用网络。当连接建立后,每个子网的主机都可透明地访问远程子网的主机。
要实现此种连接方式,要满足以下两个条件:
        I.
每个子网各自拥有一台安装有OpenSWan的主机作为其子网的出口网关;
        II.
每个子网的IP段不能有叠加
     2) Road Warrior
方式
当使用Network-To-Network方式时,作为每个子网网关的主机不能像子网内部主机那样透明访问远程子网的主机,也就是说:
如果你是一个使用Laptop的移动用户,经常出差或是在不同的地点办公,你的Laptop将不能用Network-To-Network方式与公司网络进行连接。
        Road Warrior
方式正是为这种情况而设计的,连接建立后,你的Laptop就可以连接到远程的网络了。


4. OpenSWan的认证方式
     Openswan
支持许多不同的认证方式,包括RSA keyspre-shared keysXAUTHx.509证书方式


这里连接只是network-to-network方式。

        Roadwarrior方式不演示。

Top图:

spacer.gif


三、安装并使用openswan

构建,linux-to-linux ipsec ***方式:

1.安装openswan

   Yum安装需求环境包:

yum -yinstall gcc-c++ flex autoconf zlib curl zlib-devel bzip2 bzip2-develncurses-devel libjpg-devel libpng-devel libtiff-devel freetype-devel pam-devel

使用yum安装:

                  Yum–y install openswan (或者自己编译)

编译安装方法:

参考我的博客:

http://warcraft3.blog.51cto.com/6514883/1344479

2.安装完成后,编辑/etc/ipsec.conf文件

In 192.168.3.146:

Vim /etc/ipsec.conf

version 2.0

config setup

          protostack=netkey   //使用2.6内核内建模块netkey2.6一下是KLIPS模块

          nat_traversal=yes    //NAT-T NAT穿越

          virtual_private=

          oe=off                                   //默认配置不需要修改


conn  linux-to-linux                 //名称,可以随意取

        left=192.168.3.146         //local address,即用来和其他机器建立连接使用的地址

        leftsubnet=172.16.1.0/24  //自己的内网段

        leftid=@test1                    //id,可以随便填写,只是标识

        leftnexthop=%defaultroute  //使用默认的路由

        right=192.168.3.148        //remote address,即对端地址,需要主动去连接的主机

        rightsubnet=10.0.0.0/24   //对端的内网段

        rightid=@test2                  //id,可以随便填写,只是标识

        rightnexthop=%defaultroute   //对端使用默认的路由

        auto=add                             //add代表只是添加,但并不会连接,如果为start则代表着启动自动连接

对端配置一样即可,更改leftright的地址交换即可

编辑/etc/ipsec.secrets

格式为:

                  “Local Ip address”  “remote ip address” : PSK “your key”

这里我的设置为:

                  192.168.3.148 %any 0.0.0.0 :PSK “123”

即,从192.168.3.148到任何地址,都使用密钥为123的密码来进行ipsec验证,如果有需要,请修改remoteaddressIP段或者IP地址

对端配置参照,格式一致即可。

3.启动ipsec

          /etc/init.d/ipsecstart

4.检测ipsec可用性

执行ipsec verify:

得到信息:

spacer.gif

解决failed方法:

执行sysctl -a | egrep"ipv4.*(accept|send)_redirects"| awk -F"=" '{print $1"=0"}',将结果附加到/etc/sysctl.conf

spacer.gif

然后编辑/etc/sysctl.conf

将:

net.ipv4.ip_forward = 0

    net.ipv4.conf.default.rp_filter= 1

更改为:

 net.ipv4.ip_forward = 1

    net.ipv4.conf.default.rp_filter = 0

然后执行sysctl –p使修改生效。

重新执行ipsec verify检测

spacer.gif

没有failed即成功了

5.启动ipsec连接

执行ipsec auto –up linux-to-linux //即在ipsec.conf文件中conn后的标识符

即可启动ipsec连接,如果连接成功会有SAeshtablish的提示。

执行ipsec auto –status可以查看ipsec的状态

如果最后几行有下图中的提示即ipsec建立成功。

spacer.gif

6.测试连接。

***server ping对端内网client

spacer.gif

发现无法ping通,这是正常现象。我们使用自己内网的clientping对端内网的client机器:

spacer.gif

成功。

另外:如果ipsec *** server不是你的内网机器的网关,那么需要给client机器添加路由后才能访问对端内网:

Route add –netxxx.xxx.xxx.xxx/xx gw  your *** serveripaddress(内网)



使用RSA认证方法


1.生成一个rsakey

执行:

  Ipsec newhostkey –output/etc/ipsec.secrets

生成一个rsa key

如果失败,如果使用的是yum安装方法,先查看有没有/etc/pki/nssdb这个文件夹,确保这里面有数据库文件后。

执行rm –f /dev/random

Ln -s /den/urandom /dev/random  //这一步是为了生成key节约时间

然后执行:

  Ipsec newhostkey –output/etc/ipsec.secrets  –bits 1024 –verbose –configdir=/etc/pki/nssdb

生成一个rsa key

两边都要执行。

2.left server上执行ipsec showhostkey –left得到left server的公钥(即你认为的leftserver

Ipsec showhostkey –left

spacer.gif

right server执行ipsec showhostkey –right得到right server的公钥

spacer.gif

记住这2key

3.编辑/etc/ipsec.conf文件。

Left为本地端,right为对端,填写ipsubnet,并执行ipsec showhostkey –left

将值记录到文件中,执行ipsec showhostkey –right生成公钥给对端使用。

在对端执行相同操作。

注意leftright  ip值,对于ipsec而言,永远认为自己的内网是left端,对端为right端。


由于我执行rsa实验时在交换策略集失败,配置就不贴了。请各位自行研究。


另:附上linuxcisco设备做ipsec连接的配置

                  version2.0     # conforms to second version ofipsec.conf specification


# basic configuration

config setup

      # Debug-logging controls: "none" for (almost) none, "all" for lots.

      klipsdebug=none

      plutodebug="control parsing"

      # For Red Hat Enterprise Linux and Fedora, leave protostack=netkey

      protostack=netkey

      nat_traversal=yes

      #virtual_private=%v4:192.168.0.0/16,%v4:10.0.0.0/8,%v4:172.16.0.0/12,%v4:25.0.0.0/8,%v4:!10.254.253.0/24

      oe=off

      interfaces="%defaultroute"

      # Enable this if you see "failed to find any available worker"

      # nhelpers=0


#You may put your configuration (.conf)file in the "/etc/ipsec.d/" and uncomment this.

#include /etc/ipsec.d/*.conf

conn linux-to-cisco

      ike=3des-md5    //定义IKE策略

      esp=3des-md5    //esp加密策略

      type=tunnel

      keyexchange= ike  //交换密钥使用IKE策略

      pfs=no

      authby=secret    //认证方法是pre-share-key

      left=local address

      leftsubnet=local subnet network

      leftnexthop=%defaultroute

      right=peer addree

      rightsubnet=peer subnet network

      rightnexthop=%defaultroute

      compress=no    //压缩,no

      auto=start

ipsec.secrets:

“local address” “peer address” : PSK “yourpre-share-key”