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 安装VMTools 本篇为大家介绍如何在CentOS 6.3中安装VMTools
解决红帽linux下载yum源问题,或其他linux系统yum源
Oracle 11gR2 For Centos6.3数据库安装文档 Oracle 11gR2 For Centos6.3数据库安装文档
Centos6.3 yum安装lamp架构
主要是针对配置centos6.3版本的安装、python26的安装、python26模块的安装、nginx服务的安装、hg安装、解决乱码问题及ftp问题,centos6.3版本的安装与配置,安装过程中的配置,安装包选择
详细讲解安装CentOS6.3操作系统,非常详细的安装步骤。
centOS6.3-DVD-IOS的下载种子.
CentOS 6.3 网络配置.介绍了bash shell中两种配置方式
CentOS6.3 Linux操作系统图文安装教程
CentOS6.3源码安装mysql5.6方法.pdf
CentOS 6.3安装(超级详细图解教程) 相当齐全
Centos 6.3 Yum本地源制作,介绍了详细的用法和和相关的步骤
Centos6.3安装教您如何按照centos,已经出现的常见问题的解决
CentOS6.3安装(超级详细图解教程)。具体软件安装步骤与方法。
本文档是CentOS 6.3下配置iSCSI网络存储,内容详细,步骤清晰
Centos 6.3最小化安装桌面脚本 在最小化系统安装桌面
centos 6.3系统安装yum所需的安装软件包集 另附安装操作教程链接: http://blog.csdn.net/primeprime/article/details/79205029
CentOS 6.3下搭建Pomelo部署环境.docx
Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块 ,SMB主要是作为Microsoft的网络通讯协议,后来Samba将SMB通信协议应用到了Linux系统上,就形成了...
CentOS 6.3 CentOS-6.3图形安装详解