CentOS6.3下使用OpenSWAN做IPSecVPN的RoadWarrior模式
来源:互联网 发布:java在方法上定义泛型 编辑:程序博客网 时间:2024/06/05 09:56
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文件内容:
version2.0# conforms to second version of ipsec.conf specification# basic configurationconfig setupinterfaces=%defaultroutedumpdir=/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::/10oe=offprotostack=netkeyplutostderrlog=/var/log/pluto.logconn %defaultauthby=rsasigcompress=yesinclude /etc/ipsec.d/examples/no_oe.confconn roadleft=192.168.136.93leftnexthop=%defaultrouteleftid=@leftleftrsasigkey=0sAQOvt。。。 right=192.168.136.197rightsubnet=10.1.5.0/24rightid=@rightrightrsasigkey=0sAQ。。。type=tunnelauto=addVPN server 的ipsec.conf文件内容:
version2.0# conforms to second version of ipsec.conf specification# basic configurationconfig setupinterfaces=%defaultroutedumpdir=/var/run/pluto/nat_traversal=yesvirtual_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::/10oe=offprotostack=netkeyplutostderrlog=/var/log/pluto.logconn %defaultauthby=rsasigcompress=yesinclude /etc/ipsec.d/examples/no_oe.confconn roadleft=192.168.136.197leftid=@rightleftsubnet=10.1.5.0/24leftrsasigkey=0sAQOvt。。。rightnexthop=%defaultrouteright=%anyrightid=@leftrightrsasigkey=0sAQ。。。type=tunnelauto=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文件
version2.0# conforms to second version of ipsec.conf specification# basic configurationconfig setupinterfaces=%defaultroutedumpdir=/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::/10oe=offprotostack=netkeyplutostderrlog=/var/log/pluto.logconn %defaultauthby=rsasigcompress=yesinclude /etc/ipsec.d/examples/no_oe.confconn roadwarriorleft=192.168.136.93leftnexthop=%defaultrouteleftcert=clientKey.crtright=192.168.136.197rightcert=serverKey.crtrightsubnet=10.1.5.0/24pfs=yestype=tunnelauto=addrekey=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文件
version2.0# conforms to second version of ipsec.conf specification# basic configurationconfig setupinterfaces=%defaultroutedumpdir=/var/run/pluto/nat_traversal=yesvirtual_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::/10oe=offprotostack=netkeyplutostderrlog=/var/log/pluto.logconn %defaultauthby=rsasigcompress=yesinclude /etc/ipsec.d/examples/no_oe.confconn roadwarriorleft=192.168.136.197leftsubnet=10.1.5.0/24leftcert=serverKey.crtright=192.168.136.93#right=%anyrightnexthop=%defaultrouterightcert=clientKey.crtpfs=yestype=tunnelauto=addrekey=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=ignoreconn private auto=ignoreconn private-or-clear auto=ignoreconn clear-or-private auto=ignoreconn clear auto=ignoreconn packetdefault auto=ignore
遗留的问题
在Road Warrior模式下由于服务端不知道是那个客户端来接入,所以需要right=%any。但在证书认证方式时如果这么配置会出错:no suitable connection for peer '192.168.136.93'。因此必须指定right的IP地址和证书。这样感觉好像不太对,但目前还没找到具体原因。
- CentOS6.3下使用OpenSWAN做IPSecVPN的RoadWarrior模式
- CentOS6.3下使用OpenSWAN做IPSecVPN的RoadWarrior模式 2
- 使用OpenSWAN做IPSecVPN的RoadWarrior模式
- CentOS6.3下安装OpenSWAN
- Openswan IPsecVPN中程序命令参数说明
- Openswan IPsecVPN中程序命令参数说明
- 用OpenSWAN做Linux下的IPSec VPN的详细配置指南
- 用OpenSWAN做Linux下的IPSec VPN的详细配置指南
- Openswan IPsecVPN用户态与内核通讯机制
- Openswan IPsecVPN用户态与内核通讯机制
- Openswan在CentOS6.4上的编译安装与配置
- 使用Libreswan配置ipsecvpn
- CentOS6,NAT模式下的网络配置
- 使用openswan在Linux下构建IPSec VPN过程
- 在Linux下使用Openswan配置IPSec VPN环境
- CentOS 6.3下基于Openswan IPSec VPN的实现
- centOS6.3下的hadoop2.x基本配置(本地模式和伪分布式模式)
- CentOS6下docker的安装和使用
- 赵雅智_java 多线程(3)之线程间的通信
- 2、检查一个字符是否是整数或者4行代码从一个字符串到长整形函数
- strtol(将字符串转换成长整型数)
- ORACLE常见BUG收集汇总【不断更新】
- ORACLE 11G EM 配置
- CentOS6.3下使用OpenSWAN做IPSecVPN的RoadWarrior模式
- 3、给出一个函数输出字符串的所有排列
- iPhone中的info.plist文件
- sql语法:inner join on, left join on, right join on详细使用方法
- C#清除datagridview中的数据
- CMWAP 和 CMNET
- 表单不能上传文件内容的现象
- String.Format格式说明
- 4、实现malloc内存分配函数功能一样的代码