1. 案例需求分析
本案例主要基于RHEL5 和Windows XP系统环境,跨越不安全的Internet网络,为异地的两个局域网及远程网管工作站建立安全的SSL ×××连接(如图8.2所示)。
其中,北京总部和上海分公司的网关服务器均使用 RHEL5 系统,需要分别配置 Open×××,用于连接两个异地的局域网 LAN1、LAN2。此外,位于 Internet 中的网管工作站使用 Windows XP系统,需要随时通过 ××× 安全隧道访问总部的局域网 LAN1 和上海分公司的局域网 LAN2。
基于 Linux 的 Open××× 网络
Open××× 远程虚拟专用网络架构
基于上述需求,可以将北京总部的网关服务器 GW1 配置为 ××× Server 模式,上海的网关服务器GW2和Internet网 管工作站PC1均使用××× Client模式。分别建立两条点对点
(Point-to-Point)的SSL ×××安全隧道——“GW1 <----> GW2”、“GW1 <----> PC1”即可。
由于Internet 网络的细节不是本案例的重点,因此GW1、GW2的公网IP地址分别使用
173.74.75.76和173.74.75.77来模拟。其他网络接口地址设置如下:
GW1、GW2 的内网接口 IP 地址分别为 192.168.1.1、192.168.2.1。
? GW1 <----> GW2 隧道:分别使用虚拟 IP 地址 10.8.0.1/30、10.8.0.2/30。
? GW1 <----> PC1 隧道:分别使用虚拟 IP 地址 10.9.0.1/30、10.9.0.2/30。
另外,两地局域网的客户机需要正确设置好 IP 地址、默认网关等参数:
? LAN1 的主机使用 192.168.1.0/24 网段,默认网关设为 192.168.1.1。
? LAN2 的主机使用 192.168.2.0/24 网段,默认网关设为 192.168.2.1。
2. 配置 GW1 <----> GW2 隧道连接
本小节主要阐述如何创建第 1 条 SSL ××× 隧道,用于连接 GW1、GW2 两台服务器,以便实现北京、上海两地局域网(LAN1、LAN2)的安全互联。
主要实现过程如下:
第一步、配置主服务器(GW1)——北京
A. 配置 Internet 连接及 SNAT、路由转发
1) 配置 IP 地址
eth0 接口(173.74.75.76/24)用于连接 Internet,eth1 接口(192.168.1.1/24)用于连
接局域网(配置过程略)
2) 开启路由及 SNAT 转换
[root@gw1 ~]# vim /opt/gw1_nat.sh
sysctl -w net.ipv4.ip_forward=1
/sbin/iptables -t nat -I POSTROUTING -o eth0 -j SNAT --to-source 173.74.75.76
[root@gw1 ~]# chmod a+x /opt/gw1_nat.sh
[root@gw1 ~]# echo "/opt/gw1_nat.sh" >> /etc/rc.local
[root@gw1 ~]# /opt/gw1_nat.sh
net.ipv4.ip_forward = 1
[root@gw1 ~]# sysctl –pB. 安装 Open××× 服务
[root@gw1 soft_dir]# tar zxvf lzo-2.03.tar.gz
[root@gw1 soft_dir]# cd lzo-2.03
[root@gw1 lzo-2.03]# ./configure && make && make install
[root@gw1 lzo-2.03]# cd ../
[root@gw1 soft_dir]# tar zxvf open***-2.0.9.tar.gz
[root@gw1 open***-2.0.9]# ./configure && make && make install
[root@gw1 ~]# cd /soft_dir/
[root@gw1 soft_dir]# cp -p open***-2.0.9/sample-scripts/open***.init /etc/init.d/open***
[root@gw1 soft_dir]# chmod +x /etc/init.d/open***
[root@gw1 soft_dir]# chkconfig --add open***
[root@gw1 soft_dir]# chkconfig --level 2345 open*** onC. 创建证书和密钥文件
证书和密钥文件主要用于点对点客户端的认证,以便增强安全性。为了降低密钥创建过程的复杂性,可以充分利用 Open××× 源码包提供的 easy-rsa/目录,该目录中包含一系列简单易用的脚本工具(参考“open***-2.0.9/easy-rsa/README”文件)。
3) 配置变量环境
修改 easy-rsa/vars 文件,根据实际情况适当修改预定义变量,或保持默认。在后续
创建相关文件的过程中,将会直接读取这些变量的内容。其中“KEY_DIR”变量的值决定了
新创建的密钥等文件的存放位置。
[root@gw1 ~]# cd /soft_dir/open***-2.0.9/easy-rsa/
[root@gw1 easy-rsa]# vim vars
|
[root@gw1 easy-rsa]# source vars //执行 vars 文件中的代码
NOTE: when you run ./clean-all, I will be doing a rm -rf on /soft_dir/open***-2.0.9/easy-rsa/keys
[root@gw1 easy-rsa]# ./clean-all //预先清除$KEY_DIR 目录4) 创建 CA 证书
执行“./build-ca”脚本建立 CA 证书文件,根据脚本提示设置好国家代码、省份、城市、
公司名等信息,如通用识别名称“Common Name”项可以设置为 GW1 的 FQDN 名称。
后续创建的密钥文件需要依据该 CA 文件。
[root@gw1 easy-rsa]# ./build-ca
|
5) 创建 dh(Diffie-Hellman)密钥算法文件
执行“./build-dh”脚本即可建立 dh 文件
[root@gw1 easy-rsa]# ./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
..........................................................................+.................................+................................................................+...................+.........................................+..+................................................................+.....................................................................................+........+.............+..............................+.......................................................................................+..........+.........................+.......................................................................................+.................+..............................+........+..............................+.........................................................................................................................................................+....................+......+.............+.........................................................+......+.......+.........................+.........................................................................................+.........................................+............................+............................+..........................................+.............................++*++*++*6) 创建 GW1 主服务器端密钥
执行“./build-key-server”脚本可以建立××× 服务端密钥文件,根据提示设置好Common Name(gw1.benet.com),最后依次按“y”键签署(Sign)及提交(Commit)。
|
7) 创建 GW2 对端服务器密钥
执行“./build-key”脚本可以建立 ××× 客户端密钥文件,同样根据提示设置好 Common Name(gw2.benet.com),最后依次按“y”签署(Sign)及提交(Commit)。
|
注意:
使用“./build-key”脚本创建密钥时,不同的客户端对应的“Common Name”不能相同。
8) 生成 tls-auth 密钥
tls-auth 密钥可以为点对点的 ××× 连接提供了进一步的安全验证,如果选择使用这一方式,服务器端和客户端都必须拥有该密钥文件。
open*** 命令跟上“--genkey --secret”选项可以用于建立 ta 密钥文件。
[root@gw1 easy-rsa]# open*** --genkey --secret keys/ta.key9) 最后将上述文件所在的 keys/文件夹转移至/etc/open***/目录
[root@gw1 easy-rsa]# mkdir -p /etc/open***/
[root@gw1 easy-rsa]# mv keys/ /etc/open***/D. 创建主服务器配置文件
在服务器配置文件中指定使用 Server 模式,监听默认的 UDP 1194 端口。虚拟接口采用tun0设备。可以参考open*** 源码目录中的配置范例(open***-2.0.9/sample-config-files/server.conf)
[root@gw1 ~]# vim /etc/open***/gw1_tun0.conf
|
E. 建立用于 GW2 的 ccd 配置文件
[root@gw1 ~]# mkdir -p /etc/open***/ccd
[root@gw1 ~]# cd /etc/open***/ccd/ //为对端服务器 GW2 创建独立的配置文件
[root@gw1 ccd]# vim gw2.benet.com
|
F. 启动 Open××× 服务
[root@gw1 ~]# service open*** start正在启动 open***: [确定]
[root@gw1 ~]# netstat -anp | grep open***
udp 0 0 173.74.75.76:1194 0.0.0.0:* 11220/open***
附:详细的PDF完整技术文档下载:http://down.51cto.com/data/102973
转载于:https://blog.51cto.com/jiayf/349847

















