`
peterwanghao
  • 浏览: 128443 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

CentOS6.3下使用OpenSWAN做IPSecVPN的RoadWarrior模式

 
阅读更多

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就可以连接到远程的网络了。


OpenSWan主要配置文件
/etc/ipsec.secrets 用来保存private RSA keys 和 preshared secrets (PSKs)
/etc/ipsec.conf 配置文件(settings, options, defaults, connections)
OpenSWan主要配置目录
/etc/ipsec.d/cacerts 存放X.509认证证书(根证书-"root certificates")
/etc/ipsec.d/certs 存放X.509客户端证书(X.509 client Certificates)
/etc/ipsec.d/private 存放X.509认证私钥(X.509 Certificate private keys)
/etc/ipsec.d/crls 存放X.509证书撤消列表(X.509 Certificate Revocation Lists)
/etc/ipsec.d/ocspcerts 存放X.500 OCSP证书(Online Certificate Status Protocol certificates)
/etc/ipsec.d/passwd XAUTH密码文件(XAUTH password file)
/etc/ipsec.d/policies 存放Opportunistic Encryption策略组(The Opportunistic Encryption policy groups)


在本例中我实现了Road Warrior 模式,环境描述如下:

VPN client(192.168.136.93) <---> VPN server(双网卡:192.168.136.197 10.1.5.254) <---> 子网客户机(10.1.5.110)


Openswan支持许多不同的认证方式,包括RSA keys、pre-shared keys、XAUTH、x.509证书方式。

在本例中我实现了RSAsig认证和x.509证书认证。下面分别描述如何配置:


RSAsig认证方式配置

生成一个新的RSA密钥对

#ipsec newhostkey --output /etc/ipsec.secert

按left或right格式生成RSA Sig

#ipsec showhostkey --left(或--right)

分别记录好left和right的RSA Sig

分别编辑 client和server的/etc/ipsec.conf文件。

VPN client 的ipsec.conf文件内容:

version	2.0	# conforms to second version of ipsec.conf specification

# basic configuration
config setup
	interfaces=%defaultroute
	dumpdir=/var/run/pluto/
	virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:25.0.0.0/8,%v4:!10.1.5.0/24,%v6:fd00::/8,%v6:fe80::/10
	oe=off
	protostack=netkey
	plutostderrlog=/var/log/pluto.log

conn %default
	authby=rsasig
	compress=yes

include /etc/ipsec.d/examples/no_oe.conf
conn road
	left=192.168.136.93
	leftnexthop=%defaultroute
	leftid=@left
	leftrsasigkey=0sAQOvt。。。 
	right=192.168.136.197
	rightsubnet=10.1.5.0/24
	rightid=@right
	rightrsasigkey=0sAQ。。。
	type=tunnel
	auto=add
VPN server 的ipsec.conf文件内容:

version	2.0	# conforms to second version of ipsec.conf specification

# basic configuration
config setup
	interfaces=%defaultroute
	dumpdir=/var/run/pluto/
	nat_traversal=yes
	virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:25.0.0.0/8,%v4:!10.1.5.0/24,%v6:fd00::/8,%v6:fe80::/10
	oe=off
	protostack=netkey
	plutostderrlog=/var/log/pluto.log

conn %default
	authby=rsasig
	compress=yes

include /etc/ipsec.d/examples/no_oe.conf
conn road
	left=192.168.136.197
	leftid=@right
	leftsubnet=10.1.5.0/24
	leftrsasigkey=0sAQOvt。。。
	rightnexthop=%defaultroute
	right=%any
	rightid=@left
	rightrsasigkey=0sAQ。。。
	type=tunnel
	auto=add

配置完毕后需要将两台机器上的ipsec重启

#ipsec setup restart

在VPN client机器上启动建立隧道

#ipsec auto --up road

可通过命令查看是否启动成功

#ipsec setup status

IPsec running - pluto pid: 11101
pluto pid 11101
1 tunnels up

在VPN client机器上可ping 10.1.5.110 应该是成功的。


x.509证书认证方式配置

使用openssl来创建证书

首先需要装上openssl(现在的Linux基本自带,没有的www.openssl.org下一个装上)。
#openssl version
OpenSSL 1.0.0-fips 29 Mar 2010

创建证书的命令

建立CA
#openssl req -x509 -newkey rsa:1024 -out cacert.pem -keyout cakey.pem -days 3650
#cd /etc/pki/CA
#touch index.txt
#echo "01" > serial
#echo "01" > crlnumber

生成吊销列表
#openssl ca -gencrl -out crl.pem -cert cacert.pem -keyfile cakey.pem

生成服务端私钥
#openssl genrsa -des3 -out serverKey.pem 1024
生成请求
#openssl req -new -key serverKey.pem -out serverKey.csr
签发
#openssl ca -in serverKey.csr -out serverKey.crt -cert cacert.pem -keyfile cakey.pem

生成客户端私钥
#openssl genrsa -des3 -out clientKey.pem 1024
生成请求
#openssl req -new -key clientKey.pem -out clientKey.csr
签发
#openssl ca -in clientKey.csr -out clientKey.crt -cert cacert.pem -keyfile cakey.pem

在VPN client 机器上需要做的:

1)拷贝cacert.pem到 /etc/ipsec.d/cacerts

拷贝crl.pem 到 /etc/ipsec.d/crls

拷贝clientKey.crt,serverKey.crt 到 /etc/ipsec.d/certs

拷贝clientKey.pem 到 /etc/ipsec.d/private

2)配置ipsec.secrets文件,在文件尾加上

: RSA /etc/ipsec.d/private/clientKey.pem "生成私钥时的密码"

3)配置ipsec.conf文件

version	2.0	# conforms to second version of ipsec.conf specification

# basic configuration
config setup
	interfaces=%defaultroute
	dumpdir=/var/run/pluto/
	virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:25.0.0.0/8,%v4:!10.1.5.0/24,%v6:fd00::/8,%v6:fe80::/10
	oe=off
	protostack=netkey
	plutostderrlog=/var/log/pluto.log

conn %default
	authby=rsasig
	compress=yes

include /etc/ipsec.d/examples/no_oe.conf
conn roadwarrior
	left=192.168.136.93
	leftnexthop=%defaultroute
	leftcert=clientKey.crt
	right=192.168.136.197
	rightcert=serverKey.crt
	rightsubnet=10.1.5.0/24
	pfs=yes
	type=tunnel
	auto=add
	rekey=yes

在VPN server 机器上需要做的:

1)拷贝cacert.pem到 /etc/ipsec.d/cacerts

拷贝crl.pem 到 /etc/ipsec.d/crls

拷贝clientKey.crt,serverKey.crt 到 /etc/ipsec.d/certs

拷贝serverKey.pem 到 /etc/ipsec.d/private

2)配置ipsec.secrets文件,在文件尾加上

: RSA /etc/ipsec.d/private/serverKey.pem "生成私钥时的密码"

3)配置ipsec.conf文件

version	2.0	# conforms to second version of ipsec.conf specification

# basic configuration
config setup
	interfaces=%defaultroute
	dumpdir=/var/run/pluto/
	nat_traversal=yes
	virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:25.0.0.0/8,%v4:!10.1.5.0/24,%v6:fd00::/8,%v6:fe80::/10
	oe=off
	protostack=netkey
	plutostderrlog=/var/log/pluto.log

conn %default
	authby=rsasig
	compress=yes

include /etc/ipsec.d/examples/no_oe.conf
conn roadwarrior
	left=192.168.136.197
	leftsubnet=10.1.5.0/24
	leftcert=serverKey.crt
	right=192.168.136.93
	#right=%any
	rightnexthop=%defaultroute
	rightcert=clientKey.crt
	pfs=yes
	type=tunnel
	auto=add
	rekey=no
配置完毕后需要将两台机器上的ipsec重启

#ipsec setup restart

在VPN client机器上启动建立隧道

#ipsec auto --up roadwarrior

可通过命令查看是否启动成功

#ipsec setup status

IPsec running - pluto pid: 11101
pluto pid 11101
1 tunnels up

在VPN client机器上可ping 10.1.5.110 应该是成功的。


在这里引用了一个文件include /etc/ipsec.d/examples/no_oe.conf 意为关闭Opportunistic Encryption在你不知道它到底做了什么之前,还是关掉它为好。默认情况下此文件不存在,可手工创建。其文件内容如下:

conn block
        auto=ignore

conn private
        auto=ignore

conn private-or-clear
        auto=ignore

conn clear-or-private
        auto=ignore

conn clear
        auto=ignore

conn packetdefault
        auto=ignore

遗留的问题

在Road Warrior模式下由于服务端不知道是那个客户端来接入,所以需要right=%any。但在证书认证方式时如果这么配置会出错:no suitable connection for peer '192.168.136.93'。因此必须指定right的IP地址和证书。这样感觉好像不太对,但目前还没找到具体原因。





分享到:
评论

相关推荐

    centos 6.3 64位下载

    标题中的“CentOS 6.3 64位下载”涉及到的是Linux操作系统的一个特定版本——CentOS 6.3的64位安装镜像。CentOS(Community ENTerprise Operating System)是基于Red Hat Enterprise Linux(RHEL)的开源免费操作...

    CentOS 6.3 网络配置

    在 CentOS 6.3 中,默认的网络配置文件位于 /etc/sysconfig/network-scripts/ 目录下,其中 ifcfg-eth0 文件是我们需要编辑的文件。使用 vim 编辑器打开该文件,首次打开时会出现默认的配置信息。我们需要修改两个...

    CentOS 6.3 安装VMTools

    ### CentOS 6.3 中安装 VMTools 的详细步骤与注意事项 #### 一、VMTools简介 VMTools 是由 VMware 公司开发的一款增强工具包,主要用于改善 VMware 虚拟机内的性能,并加强宿主机与虚拟机之间的交互能力。通过安装 ...

    CentOS6.3

    总结来说,关于"CentOS6.3"的主题,我们可以期待了解到如何安装和管理这个操作系统,如何从源代码编译软件,以及使用各种系统工具进行日常维护和故障排查。如果"mobilyblocks"是相关的一部分,那么可能还涉及到解压...

    Centos6.3 yum安装lamp架构

    Centos6.3 yum安装lamp架构

    centos6.3版本的安装于配置

    主要是针对配置centos6.3版本的安装、python26的安装、python26模块的安装、nginx服务的安装、hg安装、解决乱码问题及ftp问题,centos6.3版本的安装与配置,安装过程中的配置,安装包选择

    安装CentOS6.3系统

    ### 安装CentOS 6.3系统的详细指南 #### 一、准备工作 在开始安装CentOS 6.3之前,我们需要确保已经准备好了必要的工具和资源。首先,需要从官方镜像站点下载CentOS 6.3的ISO镜像文件。根据提供的链接: - **下载...

    centOS6.3镜像种子

    centOS6.3-DVD-IOS的下载种子.

    CentOS6.3安装nginx操作指南

    本指南将详细解释如何在 CentOS 6.3 环境下安装 Nginx,以及涉及到的源码编译与工具使用。 首先,确保系统是最新的。打开终端,输入以下命令更新系统软件包: ```bash yum update -y ``` 接下来,安装必要的构建...

    远程安装CentOS6.3

    2. 安装 CentOS 6.3:使用系统安装盘成功引导之后,出现如下界面: * Install or upgrade an existing system:安装或升级现有的系统 * Install system with basic video driver:安装过程中采用基本的显卡驱动 *...

    CentOS 6.3下mysql的卸载与安装全过程.

    在CentOS 6.3上,确保你遵循最佳实践来管理和维护MySQL,包括定期备份、更新安全补丁、监控性能和资源使用情况。同时,了解如何使用`mysqldump`进行数据备份,以及在遇到问题时如何使用`mysqladmin`和`mysql`客户端...

    CentOS6.3 Linux操作系统安装教程

    【CentOS6.3 Linux操作系统安装教程】 CentOS是一款基于Red Hat Enterprise Linux(RHEL)源代码重新编译而成的免费Linux发行版,以其稳定性和兼容性受到广大用户的青睐,尤其适合构建LAMP(Linux、Apache、MySQL、...

    CentOS 6.3安装(超级详细图解教程

    CentOS 6.3安装(超级详细图解教程) 相当齐全

    centos6.3 yum安装软件包全集

    在Linux世界中,CentOS 6.3是一个广泛使用的操作系统版本,它基于RHEL(Red Hat Enterprise Linux)并提供了一个稳定、安全的服务器环境。在CentOS 6.3上,`yum`(Yellowdog Updater, Modified)是默认的包管理器,...

    XP下硬盘安装Centos 6.3

    通过上述步骤, 我们可以在没有光驱、U盘或其他外部存储设备的情况下, 成功在Windows XP环境下使用硬盘安装CentOS 6.3。整个过程涉及到了磁盘分区管理、多系统引导设置以及基本的Linux系统配置等多个方面, 不仅能够...

    CentOS 6.3安装文档

    **CentOS 6.3 安装步骤详解** 在本文中,我们将深入探讨如何安装 CentOS 6.3,这是一个基于 Linux 的操作系统,尤其适合初学者和那些熟悉 6.x 系列版本的用户。虽然 CentOS 6.3 已经不再支持,但了解其安装过程对...

    CentOS6.3安装(超级详细图解教程)

    CentOS6.3安装(超级详细图解教程)。具体软件安装步骤与方法。

    CentOS 6.3下配置iSCSI网络存储

    本文档是CentOS 6.3下配置iSCSI网络存储,内容详细,步骤清晰

    CentOS 6.3下配置软RAID(Software RAID) .docx

    在CentOS 6.3环境下配置软RAID,主要涉及的是利用操作系统内的软件实现RAID功能,而不是依赖专门的硬件RAID控制器。 RAID有不同的级别,每个级别都有其特点和适用场景。常见的RAID级别包括: 1. RAID 0:条带化...

Global site tag (gtag.js) - Google Analytics