OpenSWan是linux选Ipsec及I2tp协议的一个不错的实现方案。他支持和ipsec相关的大多数的扩展(RFC+IETF drafts)。Openswan项目起源于FreeS/WAN 2.04项目,该项目的功能很强大,可以很大程度上保证数据在跨网传输中的安全性、完整性,特别是通过它,饿哦没可以很好地实现跨机房或异地办公场所实现局域网互联解决方案,如果和openvpn工具配合,可以实现将注入门户网站的多机房互访及vpn的各种强大解决方案。
系统环境
本文使用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
编辑/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
在LServer上执行以下命令设置NAT:
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.2.0/24 -d ! 192.168.3.0/24 -j MASQUERADE
在RServer上执行以下命令设置NAT:
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
\2. 解压源码包
tar zxvf openswan-2.4.7.tar.gz
\3. 安装UserLand
cd openswan-2.4.7 make programs make install
\4. 安装KLIPS IPstack (可选,如果用26sec则不需安装)1)安装NAT-Traversal内核补丁export KERNELSRC=/usr/src/kernels/2.6.9-42.EL-i686make nattpatch > /usr/src/openswan-ipsec-natt.patchcd $KERNELSRCcat /usr/src/openswan-ipsec-natt.patch | patch -p1 -smake cleanmake oldconfig当执行make oldconfig命令时,由于添加了Nat-t补丁,会出现以下提示:IPSEC NAT-Traversal (KLIPS compatible) (IPSEC_NAT_TRAVERSAL) [N/y/?] (NEW)按y键确认后继续完成make oldconfig命令继续执行以下命令重新编译安装内核makemake modules_installmake install编译安装完成新内核后请重启系统,以启用新内核 2)安装KLIPS
cd ~/openswan-2.4.7 make KERNELSRC=/lib/modules/uname -r
/build module minstall depmod -a
加载KLIPS模块前必须先卸载NETKEY模块
rmmod xfrmuser af_key esp4 ah4 ipcomp xfrm4_tunnel
执行以下命令加载KLIPS
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.
如果已加载的IPsec stack是KLIPS,显示如下
Linux Openswan 2.4.7 (klips) See `ipsec –copyright’ for copyright information.
如果没有加载任何IPsec stack,显示如下
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)
\2. 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)
\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
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……
\3) 在RServer上执行下面的命令获得rightrsasigkey(即RServer的公钥 Pulic Key)
ipsec showhostkey –right
此命令的输出格式如下所示:
# RSA 2192 bits RServer.FoxBB.Com Sat Mar 3 15:51:56 2007 rightrsasigkey=0sAQNZZZjj……
\4) 在LServer及RServer上编辑/etc/ipsec.conf
vi /etc/ipsec.conf
在最后添加如下内容(leftrsasigkey及rightrsasigkey行换成前面2,3步所取得的值)
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……
\6) 在LServer上执行下面的命令获得rightrsasigkey(即LServer的公钥 Pulic Key)
ipsec showhostkey –right
此命令的输出格式如下所示:
# RSA 2192 bits LServer.FoxBB.Com Sat Mar 3 15:45:00 2007 rightrsasigkey=0sAQOBIJFmj……
\7) 在Laptop上编辑/etc/ipsec.conf
vi /etc/ipsec.conf
在最后添加如下内容(leftrsasigkey及rightrsasigkey行换成前面5,6步所取得的值)
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启动时不自动连接
\8) 在LServer上执行下面的命令获得leftrsasigkey(即LServer的公钥Pulic Key)
ipsec showhostkey –left
此命令的输出格式如下所示:
# RSA 2192 bits LServer.FoxBB.Com Sat Mar 3 15:45:00 2007 leftrsasigkey=0sAQOBIJFmj……
\9) 在Laptop上执行下面的命令获得rightrsasigkey(即Laptop的公钥 Pulic Key)
ipsec showhostkey –right
此命令的输出格式如下所示:
# RSA 2192 bits Laptop.FoxBB.Com Sun Mar 11 09:14:25 2007 rightrsasigkey=0sAQOa8tu4E……
10)在LServer上编辑/etc/ipsec.conf
vi /etc/ipsec.conf
在最后添加如下内容(leftrsasigkey及rightrsasigkey行换成前面8,9步所取得的值)
conn road left=192.168.1.103 # LServer外网IP leftid=@LServer.FoxBB.Com # LServer的标识 leftsubnet=192.168.2.0/24 # LServer内网IP段 leftrsasigkey=0sAQOBIJFmj… # LServer的公钥 rightnexthop=%defaultroute # correct in many situations right=%any # Laptop的外网IP,可能使用动态IP,所以用%any代替任意IP rightid=@Laptop.FoxBB.Com # Laptop的标识 rightrsasigkey=0sAQOa8tu4E… # Laptop的公钥 auto=add # 添加这个链接,但是在OpenSWan启动时不自动连接
注意:在Network-To-Network方式下,两边网关/etc/ipsec.conf中的链接配置是一样的,即left和right是相同的, 而在Road Warrior方式Laptop和网关上的链接配置是不同的,即left指正在配置的本地主机,right指与本地主机对应的远程主机。
11)在LServer、RServer及Laptop上执行下面的命令启动OpenSWan
service ipsec start
12)在LServer及RServer上执行下面的命令验证OpenSWan是否正常运行
ipsec verify
如果OpenSWan正常运行,将会得到类似下面的输出
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]
显示详细信息
13)在LServer或RServer上执行下面的命令进行LServer-RServer之间的Network-To-Network连接
ipsec auto –up net-to-net
将会得到类似下面的输出(如果最后的输出行中出现IPsec SA established,说明连接成功 )
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
显示详细信息
14)在Laptop上执行下面的命令进行Laptop-LServer之间的Road Warrior连接
ipsec auto –up road
将会得到类似下面的输出(如果最后的输出行中出现IPsec SA established,说明连接成功)
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
显示详细信息
15)测试IPSEC链接在LClient上执行
ping 192.168.3.2
或在RClient上执行
ping 192.168.2.2
在ping命令执行期间,在LServer或RServer上执行
tcpdump -i eth0
如果LClient和RClient可以互相ping通,tcpdump有类似下面的输出,说明Network-To-Network方式IPSEC已经成功连接
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)
16)设置自动连接测试通过后,可以把连接配置中
auto=add
更改为:
auto=start
这样当OpenSWan启动时就可自动进行连接
以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二
维码进行关注,更多干货等着你 !