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 keys、pre-shared keys、XAUTH、x.509证书方式
这里连接只是network-to-network方式。
Roadwarrior方式不演示。
Top图:
三、安装并使用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内核内建模块netkey,2.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则代表着启动自动连接
对端配置一样即可,更改left和right的地址交换即可
编辑/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验证,如果有需要,请修改remoteaddress为IP段或者IP地址
对端配置参照,格式一致即可。
3.启动ipsec
/etc/init.d/ipsecstart
4.检测ipsec可用性
执行ipsec verify:
得到信息:
解决failed方法:
执行sysctl -a | egrep"ipv4.*(accept|send)_redirects"| awk -F"=" '{print $1"=0"}',将结果附加到/etc/sysctl.conf
然后编辑/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检测
没有failed即成功了
5.启动ipsec连接
执行ipsec auto –up linux-to-linux //即在ipsec.conf文件中conn后的标识符
即可启动ipsec连接,如果连接成功会有SAeshtablish的提示。
执行ipsec auto –status可以查看ipsec的状态
如果最后几行有下图中的提示即ipsec建立成功。
6.测试连接。
在***server 上ping对端内网client:
发现无法ping通,这是正常现象。我们使用自己内网的client去ping对端内网的client机器:
成功。
另外:如果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的公钥(即你认为的left的server)
Ipsec showhostkey –left
在right server执行ipsec showhostkey –right得到right server的公钥
记住这2个key。
3.编辑/etc/ipsec.conf文件。
Left为本地端,right为对端,填写ip,subnet,并执行ipsec showhostkey –left
将值记录到文件中,执行ipsec showhostkey –right生成公钥给对端使用。
在对端执行相同操作。
注意left和right的 ip值,对于ipsec而言,永远认为自己的内网是left端,对端为right端。
由于我执行rsa实验时在交换策略集失败,配置就不贴了。请各位自行研究。
另:附上linux和cisco设备做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”