linux下安装openswan(开源Linux ×××解决方案 - OpenSWan安装配置指南)
转自:http://hi.baidu.com/huzichu/blog/item/c17f3fca3689e982c91768c3.html
(PS:开始的时候我自己下载的2.6.14版本的openswan,但是怎么也装不上,于是就找到了下面的这篇文章,到网上去找现在已经没有2.4.7了所以就找了一个和这个版本最相近的2.4.13,按照本文去安装,输入ipsec--version有输出结果了,哈!所以啊,我就想了以后在网上找文章特别是安装教程你找的文章和你用的安装包版本要一致,至少也要是相近的版本才行,都则版本相差太久的话,也许有很大的改动或者是别的什么原因总之常常会导致一样的方法却安装不上,例如之前的2.6版本的我就安不上,所以以后要记住:你所使用 的版本要和你参考的文章中提到的版本要尽量的一致至少应该是相近的!!)
做人要厚道,转载请保留原文链接: http://www.entage.net/1/viewspace_8112.html
作者: 九尾银狐
一、OpenSWan简介
OpenSWan是Linux下IPsec的最佳实现方式,其功能强大,最大程度地保证了数据传输中的安全性、完整性问题。
OpenSWan支持2.0、2.2、2.4以及2.6内核,可以运行在不同的系统平台下,包括X86、X86_64、IA64、MIPS以及ARM。
OpenSWan是开源项目FreeS/WAN停止开发后的后继分支项目,由三个主要组件构成:
配置工具(ipsec命令脚本)
Key管理工具(pluto)
内核组件(KLIPS/26sec)
26sec使用2.6内核内建模块Netkey,用来替代OpenSWan开发的KLIPS模块,2.4及以下版本内核无Netkey模块支持,只能使用 KLIPS。如果你用的是2.6.9以上的内核,推荐使用26sec,可以不用给内核打Nat-T补丁就可以使用NAT,2.6.9以下版本内核的 NETKEY存在Bug,推荐使用KLIPS。
更多详情请参见OpenSWan项目主页:http://www.openswan.org
二、系统环境
本文使用VMWare建立五台虚拟Linux主机来进行试验。
操作系统: CentOS 4.4
内核版本:2.6.9-42
主机网络参数设置: 如无特殊说明,子网掩码均为255.255.255.0
三、安装设置操作系统
推荐使用CentOS 4.4,基于RedHat Enterprise AS 4.4安全加强的免费可升级独立分发版本Linux操作系统,安装过程不再详述。需要注意的是,安装时请确保选中开发软件包,以及libgmp软件包 (gmp、gmp-devel)、gawk、flex、bison。
以下步骤只需在LServer、RServer及Laptop上执行。
系统按前述参数安装完毕后在LServer、RServer执行以下命令:
编辑/etc/sysctl.conf
将下面两项:
改为:
执行以下命令使设置生效:
在LServer上执行以下命令设置NAT:
在RServer上执行以下命令设置NAT:
四、安装OpenSWan
1. 下载源码包
2. 解压源码包
3. 安装UserLand
4. 安装KLIPS
IPstack (可选,如果用26sec则不需安装)
1)安装NAT-Traversal内核补丁
当执行make oldconfig命令时,由于添加了Nat-t补丁,会出现以下提示:
按y键确认后继续完成make oldconfig命令
继续执行以下命令重新编译安装内核
编译安装完成新内核后请重启系统,以启用新内核
2)安装KLIPS
加载KLIPS模块前必须先卸载NETKEY模块
执行以下命令加载KLIPS
5. 验证安装
执行下面的命令验证OpenSWan是否正确安装
如果程序正确安装,此命令将显示以下三种可能结果:
如果已加载的IPsec stack是NETKEY,显示如下
如果已加载的IPsec stack是KLIPS,显示如下
如果没有加载任何IPsec stack,显示如下
6. 特别说明
如果系统中NETKEY、KLIPS模块同时存在,OpenSWan按以下规则加载其一:
通常情况下,OpenSWan启动时使用已经加载的模块;
如果NETKEY与KLIPS两者都已经加载,OpenSWan不能启动;
如果未加载任何模块,OpenSWan首选加载NETKEY;
如果NETKEY加载失败,OpenSWan加载KLIPS;
如果两者都不能正常加载,OpenSWan启动失败。
五、配置OpenSWan
1. OpenSWan主要配置文件
2. OpenSWan主要配置目录
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证书方式
5. 使用RSA数字签名(RSASIG)认证方式配制OpenSWan
1) 在LServer、RServer及Laptop上生成新的hostkey
继续以下2-4步骤配置LServer-RServer之间的Network-To-Network方式链接:
2) 在LServer上执行下面的命令获得leftrsasigkey(即LServer的公钥Pulic Key)
此命令的输出格式如下所示:
3) 在RServer上执行下面的命令获得rightrsasigkey(即RServer的公钥 Pulic Key)
此命令的输出格式如下所示:
4) 在LServer及RServer上编辑/etc/ipsec.conf
在最后添加如下内容(leftrsasigkey及rightrsasigkey行换成前面2,3步所取得的值)
继续以下5-10步骤配置LServer-Laptop之间的Road Warrior方式:
5) 在LapTop上执行下面的命令获得leftrsasigkey(即Laptop的公钥Pulic Key)
此命令的输出格式如下所示:
6) 在LServer上执行下面的命令获得rightrsasigkey(即LServer的公钥 Pulic Key)
此命令的输出格式如下所示:
7) 在Laptop上编辑/etc/ipsec.conf
在最后添加如下内容(leftrsasigkey及rightrsasigkey行换成前面5,6步所取得的值)
8) 在LServer上执行下面的命令获得leftrsasigkey(即LServer的公钥Pulic Key)
此命令的输出格式如下所示:
9) 在Laptop上执行下面的命令获得rightrsasigkey(即Laptop的公钥 Pulic Key)
此命令的输出格式如下所示:
10)在LServer上编辑/etc/ipsec.conf
在最后添加如下内容(leftrsasigkey及rightrsasigkey行换成前面8,9步所取得的值)
注意:在Network-To-Network方式下,两边网关/etc/ipsec.conf中的链接配置是一样的,即left和right是相同的, 而在Road Warrior方式Laptop和网关上的链接配置是不同的,即left指正在配置的本地主机,right指与本地主机对应的远程主机。
11)在LServer、RServer及Laptop上执行下面的命令启动OpenSWan
12)在LServer及RServer上执行下面的命令验证OpenSWan是否正常运行
如果OpenSWan正常运行,将会得到类似下面的输出
13)在LServer或RServer上执行下面的命令进行LServer-RServer之间的Network-To-Network连接
将会得到类似下面的输出(如果最后的输出行中出现IPsec SA established,说明连接成功 )
14)在Laptop上执行下面的命令进行Laptop-LServer之间的Road Warrior连接
将会得到类似下面的输出(如果最后的输出行中出现IPsec SA established,说明连接成功)
15)测试IPSEC链接
在LClient上执行
或在RClient上执行
在ping命令执行期间,在LServer或RServer上执行
如果LClient和RClient可以互相ping通,tcpdump有类似下面的输出,说明Network-To-Network方式IPSEC已经成功连接
16)设置自动连接
测试通过后,可以把连接配置中
更改为:
这样当OpenSWan启动时就可自动进行连接
(PS:开始的时候我自己下载的2.6.14版本的openswan,但是怎么也装不上,于是就找到了下面的这篇文章,到网上去找现在已经没有2.4.7了所以就找了一个和这个版本最相近的2.4.13,按照本文去安装,输入ipsec--version有输出结果了,哈!所以啊,我就想了以后在网上找文章特别是安装教程你找的文章和你用的安装包版本要一致,至少也要是相近的版本才行,都则版本相差太久的话,也许有很大的改动或者是别的什么原因总之常常会导致一样的方法却安装不上,例如之前的2.6版本的我就安不上,所以以后要记住:你所使用 的版本要和你参考的文章中提到的版本要尽量的一致至少应该是相近的!!)
做人要厚道,转载请保留原文链接: http://www.entage.net/1/viewspace_8112.html
作者: 九尾银狐
一、OpenSWan简介
OpenSWan是Linux下IPsec的最佳实现方式,其功能强大,最大程度地保证了数据传输中的安全性、完整性问题。
OpenSWan支持2.0、2.2、2.4以及2.6内核,可以运行在不同的系统平台下,包括X86、X86_64、IA64、MIPS以及ARM。
OpenSWan是开源项目FreeS/WAN停止开发后的后继分支项目,由三个主要组件构成:
配置工具(ipsec命令脚本)
Key管理工具(pluto)
内核组件(KLIPS/26sec)
26sec使用2.6内核内建模块Netkey,用来替代OpenSWan开发的KLIPS模块,2.4及以下版本内核无Netkey模块支持,只能使用 KLIPS。如果你用的是2.6.9以上的内核,推荐使用26sec,可以不用给内核打Nat-T补丁就可以使用NAT,2.6.9以下版本内核的 NETKEY存在Bug,推荐使用KLIPS。
更多详情请参见OpenSWan项目主页:http://www.openswan.org
二、系统环境
本文使用VMWare建立五台虚拟Linux主机来进行试验。
操作系统: CentOS 4.4
内核版本:2.6.9-42
主机网络参数设置: 如无特殊说明,子网掩码均为255.255.255.0
主机名 | 网卡eth0 | 网卡eth1 | 默认网关 | 用途 |
LServer | 192.168.1.103 | 192.168.2.1 | 192.168.1.1 | Left网关 |
RServer | 192.168.1.104 | 192.168.3.1 | 192.168.1.1 | Right网关 |
LClient | 192.168.1.113 | 192.168.2.2 | 192.168.2.1 | Left客户机 |
RClient | 192.168.1.114 | 192.168.3.2 | 192.168.3.1 | Right客户机 |
Laptop | 192.168.1.105 | 192.168.1.1 | Laptop客户机 |
三、安装设置操作系统
推荐使用CentOS 4.4,基于RedHat Enterprise AS 4.4安全加强的免费可升级独立分发版本Linux操作系统,安装过程不再详述。需要注意的是,安装时请确保选中开发软件包,以及libgmp软件包 (gmp、gmp-devel)、gawk、flex、bison。
以下步骤只需在LServer、RServer及Laptop上执行。
系统按前述参数安装完毕后在LServer、RServer执行以下命令:
sysctl -a | egrep "ipv4.*(accept|send)_redirects" | awk -F "=" '{print $1"= 0"}' >> /etc/sysctl.conf |
vi /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 |
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.2.0/24 -d ! 192.168.3.0/24 -j MASQUERADE |
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.3.0/24 -d ! 192.168.2.0/24 -j MASQUERADE |
四、安装OpenSWan
1. 下载源码包
cd ~ wget http://www.openswan.org/download/openswan-2.4.7.tar.gz |
tar zxvf openswan-2.4.7.tar.gz |
cd openswan-2.4.7 make programs make install |
1)安装NAT-Traversal内核补丁
export KERNELSRC=/usr/src/kernels/2.6.9-42.EL-i686 make nattpatch > /usr/src/openswan-ipsec-natt.patch cd $KERNELSRC cat /usr/src/openswan-ipsec-natt.patch | patch -p1 -s make clean make oldconfig |
IPSEC NAT-Traversal (KLIPS compatible) (IPSEC_NAT_TRAVERSAL) [N/y/?] (NEW) |
继续执行以下命令重新编译安装内核
make make modules_install make install |
2)安装KLIPS
cd ~/openswan-2.4.7 make KERNELSRC=/lib/modules/`uname -r`/build module minstall depmod -a |
rmmod xfrmuser af_key esp4 ah4 ipcomp xfrm4_tunnel |
modprobe ipsec |
5. 验证安装
执行下面的命令验证OpenSWan是否正确安装
ipsec --version |
如果已加载的IPsec stack是NETKEY,显示如下
Linux Openswan U2.4.7/K2.6.9-42.EL (netkey) See `ipsec --copyright' for copyright information. |
Linux Openswan 2.4.7 (klips) See `ipsec --copyright' for copyright information. |
Linux Openswan U2.4.7/K(no kernel code presently loaded) See `ipsec --copyright' for copyright information. |
6. 特别说明
如果系统中NETKEY、KLIPS模块同时存在,OpenSWan按以下规则加载其一:
通常情况下,OpenSWan启动时使用已经加载的模块;
如果NETKEY与KLIPS两者都已经加载,OpenSWan不能启动;
如果未加载任何模块,OpenSWan首选加载NETKEY;
如果NETKEY加载失败,OpenSWan加载KLIPS;
如果两者都不能正常加载,OpenSWan启动失败。
五、配置OpenSWan
1. OpenSWan主要配置文件
/etc/ipsec.secrets 用来保存private RSA keys 和 preshared secrets (PSKs) /etc/ipsec.conf 配置文件(settings, options, defaults, connections) |
/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) |
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证书方式
5. 使用RSA数字签名(RSASIG)认证方式配制OpenSWan
1) 在LServer、RServer及Laptop上生成新的hostkey
ipsec newhostkey --output /etc/ipsec.secrets |
继续以下2-4步骤配置LServer-RServer之间的Network-To-Network方式链接:
2) 在LServer上执行下面的命令获得leftrsasigkey(即LServer的公钥Pulic Key)
ipsec showhostkey --left |
# RSA 2192 bits LServer.FoxBB.Com Sat Mar 3 15:45:00 2007 leftrsasigkey=0sAQOBIJFmj...... |
ipsec showhostkey --right |
# RSA 2192 bits RServer.FoxBB.Com Sat Mar 3 15:51:56 2007 rightrsasigkey=0sAQNZZZjj...... |
vi /etc/ipsec.conf |
conn net-to-net left=192.168.1.103 # LServer外网IP地址 leftsubnet=192.168.2.0/24 # LServer内网IP段 leftid=@LServer.FoxBB.Com # LServer的标识 leftrsasigkey=0sAQOBIJFmj... # LServer的公钥 leftnexthop=%defaultroute # LServer的下一跳指定为默认路由地址 right=192.168.1.104 # RServer外网IP地址 rightsubnet=192.168.3.0/24 # RServer内网IP段 rightid=@RServer.FoxBB.Com # RServer的标识 rightrsasigkey=0sAQNZZZjj... # Rserver的公钥 rightnexthop=%defaultroute # RServer的下一跳指定为默认路由地址 auto=add # 添加这个链接,但是在OpenSWan启动时不自动连接 |
继续以下5-10步骤配置LServer-Laptop之间的Road Warrior方式:
5) 在LapTop上执行下面的命令获得leftrsasigkey(即Laptop的公钥Pulic Key)
ipsec showhostkey --left |
# RSA 2192 bits Laptop.FoxBB.Com Sun Mar 11 09:14:25 2007 leftrsasigkey=0sAQOa8tu4E...... |
ipsec showhostkey --right |
# RSA 2192 bits LServer.FoxBB.Com Sat Mar 3 15:45:00 2007 rightrsasigkey=0sAQOBIJFmj...... |
vi /etc/ipsec.conf |
conn road left=%defaultroute # 通过默认路由获取Laptop的IP leftid=@Laptop.FoxBB.Com # Laptop的标识 leftrsasigkey=0sAQOa8tu4E... # Laptop的公钥 right=192.168.1.103 # LServer外网IP rightsubnet=192.168.2.0/24 # LServer内网IP段 rightid=@LServer.FoxBB.Com # LServer的标识 rightrsasigkey=0sAQOBIJFmj... # LServer的公钥 auto=add # 添加这个链接,但是在OpenSWan启动时不自动连接 |
ipsec showhostkey --left |
# RSA 2192 bits LServer.FoxBB.Com Sat Mar 3 15:45:00 2007 leftrsasigkey=0sAQOBIJFmj...... |
ipsec showhostkey --right |
# RSA 2192 bits Laptop.FoxBB.Com Sun Mar 11 09:14:25 2007 rightrsasigkey=0sAQOa8tu4E...... |
vi /etc/ipsec.conf |
conn road |
11)在LServer、RServer及Laptop上执行下面的命令启动OpenSWan
service ipsec start |
ipsec verify |
Checking your system to see if IPsec got installed and started correctly: Version check and ipsec on-path [OK] Linux Openswan U2.4.7/K2.6.9-42.EL (netkey) Checking for IPsec support in kernel [OK] NETKEY detected, testing for disabled ICMP send_redirects [OK] NETKEY detected, testing for disabled ICMP accept_redirects [OK] Checking for RSA private key (/etc/ipsec.secrets) [OK] Checking that pluto is running [OK] Two or more interfaces found, checking IP forwarding [OK] Checking NAT and MASQUERADEing Checking for 'ip' command [OK] Checking for 'iptables' command [OK] Opportunistic Encryption Support [DISABLED] |
ipsec auto --up net-to-net |
104 "net-to-net" #1: STATE_MAIN_I1: initiate 003 "net-to-net" #1: received Vendor ID payload [Openswan (this version) 2.4.7 PLUTO_SENDS_VENDORID PLUTO_USES_KEYRR] 003 "net-to-net" #1: received Vendor ID payload [Dead Peer Detection] 003 "net-to-net" #1: received Vendor ID payload [RFC 3947] method set to=110 106 "net-to-net" #1: STATE_MAIN_I2: sent MI2, expecting MR2 003 "net-to-net" #1: NAT-Traversal: Result using RFC 3947 (NAT-Traversal): no NAT detected 108 "net-to-net" #1: STATE_MAIN_I3: sent MI3, expecting MR3 004 "net-to-net" #1: STATE_MAIN_I4: ISAKMP SA established {auth=OAKLEY_RSA_SIG cipher=oakley_3des_cbc_192 prf=oakley_md5 group=modp1536} 117 "net-to-net" #2: STATE_QUICK_I1: initiate 004 "net-to-net" #2: STATE_QUICK_I2: sent QI2, IPsec SA established {ESP=>0xa329d030 <0xae29b36c xfrm=AES_0-HMAC_SHA1 NATD=none DPD=none} |
ipsec auto --up road |
104 "road" #1: STATE_MAIN_I1: initiate 003 "road" #1: received Vendor ID payload [Openswan (this version) 2.4.7 PLUTO_SENDS_VENDORID PLUTO_USES_KEYRR] 003 "road" #1: received Vendor ID payload [Dead Peer Detection] 003 "road" #1: received Vendor ID payload [RFC 3947] method set to=110 106 "road" #1: STATE_MAIN_I2: sent MI2, expecting MR2 003 "road" #1: NAT-Traversal: Result using RFC 3947 (NAT-Traversal): no NAT detected 108 "road" #1: STATE_MAIN_I3: sent MI3, expecting MR3 004 "road" #1: STATE_MAIN_I4: ISAKMP SA established {auth=OAKLEY_RSA_SIG cipher=oakley_3des_cbc_192 prf=oakley_md5 group=modp1536} 117 "road" #2: STATE_QUICK_I1: initiate 004 "road" #2: STATE_QUICK_I2: sent QI2, IPsec SA established {ESP=>0x070f9aae <0xe8598b10 xfrm=AES_0-HMAC_SHA1 NATD=none DPD=none} |
在LClient上执行
ping 192.168.3.2 |
ping 192.168.2.2 |
tcpdump -i eth0 |
13:28:09.931263 IP 192.168.1.104 > 192.168.1.103: ESP(spi=0xa329d030,seq=0x126) 13:28:09.935244 IP 192.168.1.103 > 192.168.1.104: ESP(spi=0xae29b36c,seq=0x126) 13:28:10.818461 IP 192.168.1.104 > 192.168.1.103: ESP(spi=0xa329d030,seq=0x127) 13:28:10.823472 IP 192.168.1.103 > 192.168.1.104: ESP(spi=0xae29b36c,seq=0x127) |
测试通过后,可以把连接配置中
auto=add |
auto=start |
转载于:https://blog.51cto.com/holy2010/550471