kiss the rain 吉他pu:Openswan VPN安装设置

来源:百度文库 编辑:偶看新闻 时间:2024/04/23 16:18:03

Openswan VPN安装设置

一、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.6
内核版本:2.6.9-67.EL(默认的2.6.9-67.ELsmp内核不支持Netkey模块)


三、安装前设置操作系统

在L-VPN Server、R-VPN Server执行以下命令:

[root@LServer ~]# sysctl -a | egrep “ipv4.*(accept|send)_redirects” | awk -F “=” ‘{print $1″= 0″}’ >> /etc/sysctl.conf

编辑/etc/sysctl.conf

[root@LServer ~]# 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

执行以下命令使设置生效:

[root@LServer ~]# sysctl -p

在L-VPN Server上执行以下命令设置NAT:

[root@LServer ~]# iptables -t nat -A POSTROUTING -o eth1 -s 192.168.10.0/24 -d ! 192.168.20.0/24 -j MASQUERADE

保存iptables规则:

[root@LServer ~]# service iptables save

在R-VPN Server上执行以下命令设置NAT:

[root@LServer ~]# iptables -t nat -A POSTROUTING -o eth0 -s 192.168.20.0/24 -d ! 192.168.10.0/24 -j MASQUERADE

保存iptables规则:

[root@LServer ~]# service iptables save

四、安装openswan

tar xzvf gmp-4.2.4.tar.gz
cd gmp-4.2.4
./configure
make
make install

rpm -ivh –nodeps passivetex-1.25-3.noarch.rpm
rpm -ivh docbook-style-xsl-1.65.1-2.noarch.rpm
# xmlto依赖上面两个RPM包
rpm -ivh xmlto-0.0.18-6_6.el4.at.i386.rpm

# openswan需要libgmp库和xmlto命令
tar xzvf openswan-2.6.20.tar.gz
cd openswan-2.6.20
make programs
make install

验证安装

执行下面的命令验证OpenSWan是否正确安装

[root@LServer ~]# ipsec –version

如果程序正确安装,此命令将显示以下三种可能结果:
如果已加载的IPsec stack是NETKEY,显示如下

Linux Openswan U2.6.20/K2.6.9-67.EL (netkey)
See `ipsec –copyright’ for copyright information.

如果已加载的IPsec stack是KLIPS,显示如下

Linux Openswan 2.6.20 (klips)
See `ipsec –copyright’ for copyright information.

如果没有加载任何IPsec stack,显示如下

Linux Openswan U2.6.20/K(no kernel code presently loaded)
See `ipsec –copyright’ for copyright information.

五、配置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方式时,作为每个子网网关的主机不能像子网内部主机那样透明访问远程子网的主机,也就是说:
如果你是一个使用LClient的移动用户,经常出差或是在不同的地点办公,你的LClient将不能用Network-To-Network方式与公司网络进行连接。
Road Warrior方式正是为这种情况而设计的,连接建立后,你的LClient就可以连接到远程的网络了。
4. OpenSWan的认证方式
Openswan支持许多不同的认证方式,包括RSA keys、pre-shared keys、XAUTH、x.509证书方式
5. 使用RSA数字签名(RSASIG)认证方式配制OpenSWan
1) 在L-VPN Server和R-VPN Server上生成新的hostkey
[root@LServer ~]# ipsec newhostkey –output /etc/ipsec.secrets
继续以下2-4步骤配置L-VPN Server-R-VPN Server之间的Network-To-Network方式链接:
2) 在L-VPN Server上执行下面的命令获得leftrsasigkey(即L-VPN Server的公钥Pulic Key)

[root@LServer ~]# ipsec showhostkey –left

此命令的输出格式如下所示:

# RSA 2192 bits LServer.baihe.com Sat Mar 3 15:45:00 2007
leftrsasigkey=0sAQOBIJFmj……

3) 在R-VPN Server上执行下面的命令获得rightrsasigkey(即R-VPN Server的公钥 Pulic Key)

[root@LServer ~]# ipsec showhostkey –right

此命令的输出格式如下所示:

# RSA 2192 bits RServer.baihe.com Sat Mar 3 15:51:56 2007
rightrsasigkey=0sAQNZZZjj……

4) 在L-VPN Server及R-VPN Server上编辑/etc/ipsec.conf

[root@LServer ~]# vi /etc/ipsec.conf
在最后添加如下内容(leftrsasigkey及rightrsasigkey行换成前面2,3步所取得的值)
conn net-to-net
left=192.168.1.10 # L-VPN Server外网IP地址
leftsubnet=192.168.10.0/24 # L-VPN Server内网IP段
leftid=@LServer.baihe.com # L-VPN Server的标识
leftrsasigkey=0sAQOBIJFmj… # L-VPN Server的公钥
leftnexthop=%defaultroute # L-VPN Server的下一跳指定为默认路由地址
right=192.168.1.20 # R-VPN Server外网IP地址
rightsubnet=192.168.20.0/24 # R-VPN Server内网IP段
rightid=@RServer.baihe.com # R-VPN Server的标识
rightrsasigkey=0sAQNZZZjj… # R-VPN Server的公钥
rightnexthop=%defaultroute # R-VPN Server的下一跳指定为默认路由地址
auto=add # 添加这个链接,但是在OpenSWan启动时不自动连接

5)在L-VPN Server、R-VPN Server及LClient上执行下面的命令重启启动OpenSWan

[root@LServer ~]# service ipsec restart

6)在L-VPN Server及R-VPN Server上执行下面的命令验证OpenSWan是否正常运行

[root@LServer ~]# 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.6.20/K2.6.9-67.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 DNS checks:
Looking for TXT in forward dns zone: L-VPN Server [MISSING]
Does the machine have at least one non-private address? [FAILED] # 由于是测试环境没有检测到外网地址

7)在L-VPN Server或R-VPN Server上执行下面的命令进行L-VPN Server-R-VPN Server之间的Network-To-Network连接

[root@LServer ~]# ipsec auto –up net-to-net

如果L-VPN Server和R-VPN Server不是两边子网的网关,则必须在L-APP Server和R-APP Server上设置路由:
L-APP Server上路由配置:

route add -net 192.168.20.0 netmask 255.255.255.0 gw 192.168.10.10

将路由加入/etc/rc.local中,开机自动添加。

R-APP Server上路由配置:

route add -net 192.168.10.0 netmask 255.255.255.0 gw 192.168.20.10

将路由加入/etc/rc.local中,开机自动添加。

在L-APP Server上能够ping通R-APP Server说明没问题。

8)设置自动连接
测试通过后,可以把自动连接写在配置中

[root@LServer ~]# vi /etc/ipsec.conf
auto=add
更改为:
auto=start

这样当OpenSWan启动时就可自动进行连接

六、Road Warrior模式配置

1.安装前设置操作系统
在VPN Client执行以下命令:

[root@LClient ~]# sysctl -a | egrep “ipv4.*(accept|send)_redirects” | awk -F “=” ‘{print $1″= 0″}’ >> /etc/sysctl.conf

编辑/etc/sysctl.conf

[root@LClient ~]# 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

执行以下命令使设置生效:

[root@LClient ~]# sysctl -p

2.安装openswan

tar xzvf gmp-4.2.4.tar.gz
cd gmp-4.2.4
./configure
make
make install

rpm -ivh –nodeps passivetex-1.25-3.noarch.rpm
rpm -ivh docbook-style-xsl-1.65.1-2.noarch.rpm
# xmlto依赖上面两个RPM包
rpm -ivh xmlto-0.0.18-6_6.el4.at.i386.rpm

# openswan需要libgmp库和xmlto命令
tar xzvf openswan-2.6.20.tar.gz
cd openswan-2.6.20
make programs
make install

3.执行下面的命令验证OpenSWan是否正确安装

[root@LClient ~]# ipsec –version

4.在LClient上生成新的hostkey

[root@LClient ~]# ipsec newhostkey –output /etc/ipsec.secrets

5.在LClient上执行下面的命令获得leftrsasigkey(即LClient的公钥Pulic Key)

[root@LClient ~]# ipsec showhostkey –left

此命令的输出格式如下所示:

# RSA 2192 bits LClient.baihe.com Sun Mar 11 09:14:25 2007
leftrsasigkey=0sAQOa8tu4E……

6.在LServer上执行下面的命令获得rightrsasigkey(即LServer的公钥 Pulic Key)

[root@LServer ~]# ipsec showhostkey –right

此命令的输出格式如下所示:

# RSA 2192 bits LServer.baihe.com Sat Mar 3 15:45:00 2007
rightrsasigkey=0sAQOBIJFmj……

7.在LClient上编辑/etc/ipsec.conf

[root@LClient ~]# vi /etc/ipsec.conf
在最后添加如下内容(leftrsasigkey及rightrsasigkey行换成前面5,6步所取得的值)
conn road
left=%defaultroute # 通过默认路由获取LClient的IP
leftid=@LClient.baihe.com # LClient的标识
leftrsasigkey=0sAQOa8tu4E… # LClient的公钥
right=192.168.1.10 # LServer外网IP
rightsubnet=192.168.10.0/24 # LServer内网IP段
rightid=@LServer.baihe.com # LServer的标识
rightrsasigkey=0sAQOBIJFmj… # LServer的公钥
auto=add # 添加这个链接,但是在OpenSWan启动时不自动连接

8.在LServer上执行下面的命令获得leftrsasigkey(即LServer的公钥Pulic Key)

[root@LServer ~]# ipsec showhostkey –left

此命令的输出格式如下所示:

# RSA 2192 bits LServer.baihe.com Sat Mar 3 15:45:00 2007
leftrsasigkey=0sAQOBIJFmj……

9.在LClient上执行下面的命令获得rightrsasigkey(即LClient的公钥 Pulic Key)

[root@LClient ~]# ipsec showhostkey –right

此命令的输出格式如下所示:

# RSA 2192 bits LClient.baihe.com Sun Mar 11 09:14:25 2007
rightrsasigkey=0sAQOa8tu4E……

10.在LServer上编辑/etc/ipsec.conf

[root@LServer ~]# vi /etc/ipsec.conf

在最后添加如下内容(leftrsasigkey及rightrsasigkey行换成前面8,9步所取得的值)

conn road
left=192.168.1.10 # LServer外网IP
leftid=@LServer.baihe.com # LServer的标识
leftsubnet=192.168.10.0/24 # LServer内网IP段
leftrsasigkey=0sAQOBIJFmj… # LServer的公钥
rightnexthop=%defaultroute # correct in many situations
right=%any # LClient的外网IP,可能使用动态IP,所以用%any代替任意IP
rightid=@LClient.baihe.com # LClient的标识
rightrsasigkey=0sAQOa8tu4E… # LClient的公钥
auto=add # 添加这个链接,但是在OpenSWan启动时不自动连接

注意:在Network-To-Network方式下,两边网关/etc/ipsec.conf中的链接配置是一样的,即left和right是相同的,而在RoadWarrior方式LClient和网关上的链接配置是不同的,即left指正在配置的本地主机,right指与本地主机对应的远程主机。

11.在LServer和LClient上执行下面的命令重启启动OpenSWan

[root@LClient ~]# service ipsec restart

12.在LClient上执行下面的命令进行LClient-LServer之间的Road Warrior连接

[root@LClient ~]# ipsec auto –up road

13.测试连通性
如果LServer不是子网的网关,则必须在L-APP Server上设置路由:
L-APP Server上路由配置:

route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.10.10

将路由加入/etc/rc.local中,开机自动添加。
从LClient上pingL-VPN Server能ping通说明没问题。
14.设置自动连接
测试通过后,可以把自动连接写在配置中

auto=add
更改为:
auto=start

这样当OpenSWan启动时就可自动进行连接

三月 13th, 2009 inLinux服务架设, VPN Server | tags: IPSec, openswan, vpn