基于Linux的 Open×××网络之网络架构应用实例

Open××× 概述

       Open××× 是一个开源的加密隧道构建工具,基于 OpenSSL 的 SSL/TLS 协议,可以在 Internet中实现点对点的 SSL ××× 安全连接。使用 Open××× 的好处是安全、易用和稳定,且认证方式灵活,具备实现 SSL ××× 解决方案的完整特性。Open××× 可以应用于 Linux、Unix、Mac OS 以及Windows 等各种操作系统平台。

       Open××× 提供两种类型的虚拟网络接口:TUN 和 TAP,分别用于建立 IP 隧道、以太网桥接。在 Linux 中使用这两种虚拟设备,需要对应的内核模块支持。RHEL5 系统默认已编译好 tun 模块,直接使用即可。

       Open××× 的 官 方 站 点 是 http://open***.net , 目 前 发 布 的 最 新 测 试 版 本 为Open×××-2.1_rc13,稳定版为Open×××-2.0.9。

       Open×××使用OpenSSL库加密数据与控制信息:它使用了OpenSSL的加密以及验证功能,意味着,它能够使用任何OpenSSL支持的算法。它提供了可选的数据包HMAC功能以提高连接的安全性。此外,OpenSSL的硬件加速也能提高它的性能。

       Open×××提供了多种身份验证方式,用以确认参与连接双方的身份,包括:预享私钥,×××在vlan中的应用第三方证书以及用户名/密码组合。预享密钥最为简单,但同时它只能用于建立点对点的×××;基于PKI的第三方证书提供了最完善的功能,但是需要额外的精力去维护一个PKI证书体系。Open×××2.0后引入了用户名/口令组合的身份验证方式,它可以省略客户端证书,但是仍有一份服务器证书需要被用作加密。

clip_p_w_picpath002

本章案例中,需要下载使用的相关软件包参考如下:

最新稳定版源码包:http://open***.net/release/open***-2.0.9.tar.gz

Windows 安装包:

http://open***.se/files/install_packages/open***-2.0.9-gui-1.0.3-install.exe

LZO工具包:http://www.oberhumer.com/opensource/lzo/download/lzo-2.03.tar.gz

 

1. 案例需求分析

       本案例主要基于RHEL5 和Windows XP系统环境,跨越不安全的Internet网络,为异地的两个局域网及远程网管工作站建立安全的SSL ×××连接(如图8.2所示)。

       其中,北京总部和上海分公司的网关服务器均使用 RHEL5 系统,需要分别配置 Open×××,用于连接两个异地的局域网 LAN1、LAN2。此外,位于 Internet 中的网管工作站使用 Windows XP系统,需要随时通过 ××× 安全隧道访问总部的局域网 LAN1 和上海分公司的局域网 LAN2。

基于 Linux 的 Open××× 网络

clip_p_w_picpath002

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" &gt;&gt; /etc/rc.local

[root@gw1 ~]# /opt/gw1_nat.sh

net.ipv4.ip_forward = 1

[root@gw1 ~]# sysctl –p

B. 安装 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*** on

C. 创建证书和密钥文件

证书和密钥文件主要用于点对点客户端的认证,以便增强安全性。为了降低密钥创建过程的复杂性,可以充分利用 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

export D=`pwd`

export KEY_CONFIG=$D/openssl.cnf

export KEY_DIR=$D/keys

echo NOTE: when you run ./clean-all, I will be doing a rm -rf on $KEY_DIR

export KEY_SIZE=1024

export KEY_COUNTRY=CN //粗体部分根据具体应用情况进行修改

export KEY_PROVINCE=BeiJing

export KEY_CITY=BeiJing

export KEY_ORG="BENET.Inc"

export KEY_EMAIL="***adm@benet.com"

 

[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

Generating a 1024 bit RSA private key

.....++++++

..............................++++++

writing new private key to 'ca.key'

-----

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [CN]:

State or Province Name (full name) [BeiJing]:

Locality Name (eg, city) [BISHKEK]:

Organization Name (eg, company) [BENET.Inc]:

Organizational Unit Name (eg, section) []:

Common Name (eg, your name or your server's hostname) []:gw1.benet.com

Email Address [***adm@benet.com]:

 

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)。

[root@gw1 easy-rsa]# ./build-key-server gw1

Generating a 1024 bit RSA private key

.............................++++++

....................................++++++

writing new private key to 'gw1.key'

-----

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [CN]:

State or Province Name (full name) [BeiJing]:

Locality Name (eg, city) [BISHKEK]:

Organization Name (eg, company) [BENET.Inc]:

Organizational Unit Name (eg, section) []:

Common Name (eg, your name or your server's hostname) []:gw1.benet.com

Email Address [***adm@benet.com]:

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:

An optional company name []:

Using configuration from /soft_dir/open***-2.0.9/easy-rsa/openssl.cnf

Check that the request matches the signature

Signature ok

The Subject's Distinguished Name is as follows

countryName :PRINTABLE:'CN'

stateOrProvinceName :PRINTABLE:'BeiJing'

localityName :PRINTABLE:'BISHKEK'

organizationName :PRINTABLE:'BENET.Inc'

commonName :PRINTABLE:'gw1.benet.com'

emailAddress :IA5STRING:'***adm@benet.com'

Certificate is to be certified until Jul 12 02:42:17 2020 GMT (3650 days)

Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y

Write out database with 1 new entries

Data Base Updated

 

7) 创建 GW2 对端服务器密钥

执行“./build-key”脚本可以建立 ××× 客户端密钥文件,同样根据提示设置好 Common Name(gw2.benet.com),最后依次按“y”签署(Sign)及提交(Commit)。

[root@gw1 easy-rsa]# ./build-key gw2

Generating a 1024 bit RSA private key

...................++++++

..++++++

writing new private key to 'gw2.key'

-----

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [CN]:

State or Province Name (full name) [BeiJing]:

Locality Name (eg, city) [BISHKEK]:

Organization Name (eg, company) [BENET.Inc]:

Organizational Unit Name (eg, section) []:

Common Name (eg, your name or your server's hostname) []:gw2.benet.com

Email Address [***adm@benet.com]:

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:

An optional company name []:

Using configuration from /soft_dir/open***-2.0.9/easy-rsa/openssl.cnf

Check that the request matches the signature

Signature ok

The Subject's Distinguished Name is as follows

countryName :PRINTABLE:'CN'

stateOrProvinceName :PRINTABLE:'BeiJing'

localityName :PRINTABLE:'BISHKEK'

organizationName :PRINTABLE:'BENET.Inc'

commonName :PRINTABLE:'gw2.benet.com'

emailAddress :IA5STRING:'***adm@benet.com'

Certificate is to be certified until Jul 12 02:44:30 2020 GMT (3650 days)

Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y

Write out database with 1 new entries

Data Base Updated

 

注意:

使用“./build-key”脚本创建密钥时,不同的客户端对应的“Common Name”不能相同。

8) 生成 tls-auth 密钥

tls-auth 密钥可以为点对点的 ××× 连接提供了进一步的安全验证,如果选择使用这一方式,服务器端和客户端都必须拥有该密钥文件。

open*** 命令跟上“--genkey --secret”选项可以用于建立 ta 密钥文件。

[root@gw1 easy-rsa]# open*** --genkey --secret keys/ta.key

9) 最后将上述文件所在的 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

local 173.74.75.76 //指定监听服务的 IP 地址

port 1194 //为第 1 条隧道开启默认的 1194 端口

proto udp

dev tun //使用 SSL Tune 的 ××× 隧道模式

ca keys/ca.crt

cert keys/gw1.crt

key keys/gw1.key

dh keys/dh1024.pem

server 10.8.0.0 255.255.255.0 //使用服务器模式,并指定 ××× 虚拟网络地址

ifconfig-pool-persist ipp.txt

push "route 192.168.1.0 255.255.255.0" //为 GW2 添加到 LAN1 网段的路由

push "route 10.9.0.0 255.255.255.0" //为 GW2 添加到 PC1 的路由

push "dhcp-options DNS 210.22.84.3" //为客户端设置 DNS 服务器地址

route 192.168.2.0 255.255.255.0 //为 GW1 添加到 LAN2 网段的路由

client-config-dir ccd //允许读取 ccd/目录下的客户端配置文件

keepalive 10 120

tls-auth keys/ta.key 0 //指定 tls-auth 密钥

cipher BF-CBC //加密算法与客户端要保持一致

comp-lzo

max-clients 100 //允许的最大并发 ××× 连接数

user nobody

group nobody

persist-key

persist-tun

status open***-status.log

log-append open***.log

verb 3

mute 20

 

E. 建立用于 GW2 的 ccd 配置文件

[root@gw1 ~]# mkdir -p /etc/open***/ccd

[root@gw1 ~]# cd /etc/open***/ccd/ //为对端服务器 GW2 创建独立的配置文件

[root@gw1 ccd]# vim gw2.benet.com

iroute 192.168.2.0 255.255.255.0 //声明 GW2 后端的 LAN2 子网络

ifconfig-push 10.8.0.2 10.8.0.1 //指定 GW2 的本地地址(tun0)、对端地址(P-t-P)

 

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***

 

第二步、配置对端服务器(GW2)——上海

1. 配置 Internet 连接及 SNAT、路由转发

1) 配置 IP 地址

eth0 接口(173.74.75.77/24)用于连接 Internet,eth1 接口(192.168.2.1/24)用于连

接局域网(配置过程略)

2) 开启路由及 SNAT 转换

[root@gw2 ~]# vim /opt/gw2_nat.sh

sysctl -w net.ipv4.ip_forward=1

/sbin/iptables -t nat -I POSTROUTING -o eth0 -j SNAT --to-source 173.74.75.77

 

[root@gw2 ~]# chmod a+x /opt/gw2_nat.sh

[root@gw2 ~]# echo "/opt/gw2_nat.sh" &gt;&gt; /etc/rc.local

[root@gw2 ~]# /opt/gw2_nat.sh

net.ipv4.ip_forward = 1

2. 安装 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 soft_dir]# cd open***-2.0.9

[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*** on

3. 下载证书和密钥文件

下载在 GW1 主服务器端创建的 ca.crt、ta.key、gw2.key、gw2.crt 文件,使用 FTP、SCP、Email 等任何方式均可。

—— 在服务器 GW1 上:

[root@gw1 ~]# cd /etc/open***/keys/

[root@gw1 keys]# tar jcvf /var/ftp/send_to_gw2.tar.bz2 ca.crt ta.key gw2.key gw2.crt

ca.crt

ta.key

gw2.key

gw2.crt

[root@gw1 keys]# service vsftpd start

为 vsftpd 启动 vsftpd: [确定]

 

—— 在服务器 GW2 上:

[root@gw2 ~]# wget ftp://173.74.75.76/send_to_gw2.tar.bz2

--2010-07-15 11:17:08-- ftp://173.74.75.76/send_to_gw2.tar.bz2

=&gt; `send_to_gw2.tar.bz2'

Connecting to 173.74.75.76:21... 已连接。

正在以 anonymous 登录 ... 登录成功!

==&gt; SYST ... 完成。 ==&gt; PWD ... 完成。

==&gt; TYPE I ... 完成。 ==&gt; 不需要 CWD。

==&gt; SIZE send_to_gw2.tar.bz2 ... 4025

==&gt; PASV ... 完成。 ==&gt; RETR send_to_gw2.tar.bz2 ... 完成。

长度:4025 (3.9K)

100%[======================================&gt;] 4,025 --.-K/s in 0s

2010-07-15 11:17:09 (116 MB/s) - `send_to_gw2.tar.bz2' saved [4025]

[root@gw2 ~]# ls

anaconda-ks.cfg Desktop install.log install.log.syslog send_to_gw2.tar.bz2

 

将下载后的文件释放保存到 open*** 配置目录

[root@gw2 ~]# mkdir -p /etc/open***/keys/

[root@gw2 ~]# tar jxvf send_to_gw2.tar.bz2 -C /etc/open***/keys/

 

4. 创建客户端配置文件

在客户端配置文件中指定使用 Client 模式,以及远程 ××× 服务器的地址和端口。可以参考 open*** 源码目录中的配置范例(open***-2.0.9/sample-config-files/client.conf)

[root@gw2 ~]# vim /etc/open***/gw2.conf

client //使用客户端模式

dev tun

proto udp

remote 173.74.75.76 1194 //点对点主服务器的地址、端口

resolv-retry infinite

nobind

user nobody

group nobody

persist-key

persist-tun

ca keys/ca.crt

cert keys/gw2.crt

key keys/gw2.key

ns-cert-type server

tls-auth keys/ta.key 1

cipher BF-CBC //需和 GW1 服务器端保持一致

comp-lzo

verb 3

mute 20

 

5. 启动 Open××× 服务

使用安装时建立的服务脚本启动 open*** 服务

[root@gw2 ~]# service open*** start

正在启动 open***: [确定]

[root@gw2 ~]# netstat -anp | grep open***

udp 0 0 0.0.0.0:39449 0.0.0.0:* 27004/open***

unix 2 [ ] DGRAM 65137 27004/open***

 

第三步、验证 SSL ××× 连接

1. GW1 服务器的 ××× 接口状态

5) GW1 主服务器 tun0 接口的 IP 地址为 10.8.0.1,点对点对端地址为 10.8.0.2

[root@gw1 keys]# ifconfig tun0

tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00

inet addr:10.8.0.1 P-t-P:10.8.0.2 Mask:255.255.255.255

UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:100

RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

 

6) 路由表中应有通过 GW2 访问 LAN2 网段的路由记录

[root@gw1 ~]# route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

10.8.0.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0

192.168.2.0 10.8.0.2 255.255.255.0 UG 0 0 0 tun0

10.8.0.0 10.8.0.2 255.255.255.0 UG 0 0 0 tun0

192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

173.74.75.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1

 

2. GW2 服务器的 ××× 接口状态

1) GW2 服务器 tun0 接口的 IP 地址为 10.8.0.2,点对点对端地址为 10.8.0.1

[root@gw2 ~]# ifconfig tun0

tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00

inet addr:10.8.0.2 P-t-P:10.8.0.1 Mask:255.255.255.255

UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:100

RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

 

2) 路由表中应有通过 GW1 访问 LAN1 网段的路由记录

[root@gw2 ~]# route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

10.8.0.1 0.0.0.0 255.255.255.255 UH 0 0 0 tun0

192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

192.168.1.0 10.8.0.1 255.255.255.0 UG 0 0 0 tun0

173.74.75.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

10.9.0.0 10.8.0.1 255.255.255.0 UG 0 0 0 tun0

169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1

 

3. 测试 SSL ××× 隧道连接

[root@gw1 ~]# ping 10.8.0.2 -c 2

PING 10.8.0.2 (10.8.0.2) 56(84) bytes of data.

64 bytes from 10.8.0.2: icmp_seq=1 ttl=64 time=17.5 ms

64 bytes from 10.8.0.2: icmp_seq=2 ttl=64 time=0.613 ms

--- 10.8.0.2 ping statistics ---

2 packets transmitted, 2 received, 0% packet loss, time 1188ms

rtt min/avg/max/mdev = 0.613/9.101/17.590/8.489 ms

 

clip_p_w_picpath002

图 测试 LAN1、LAN2 中主机之间的互联

配置“GW1 <----> PC1”隧道连接

本小节主要描述如何创建第 2 条 SSL ××× 隧道,用于在 GW1、PC1 之间建立点到点的安全连接,以便 Windows XP 客户端能够从 Internet 中安全的接入总部的 ××× 网络,进一步访问两地的局域网络。

第一步、配置主服务器(GW1)——北京

1. 创建 PC1 用户端密钥

在 GW1 服务器上为 PC1 网管机建立单独的密钥文件,注意 Common Name 不要和其他密钥重复。生成的密钥文件必需放置到/etc/open***/keys/目录中(可以直接调整 KEY_DIR 变量)。

[root@gw1 ~]# cd /soft_dir/open***-2.0.9/easy-rsa/

[root@gw1 easy-rsa]# source 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]# export KEY_DIR=/etc/open***/keys/

[root@gw1 easy-rsa]# ./build-key client-pc1

Generating a 1024 bit RSA private key

.........++++++

...............++++++

writing new private key to 'client-pc1.key'

-----

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [CN]:

State or Province Name (full name) [BeiJing]:

Locality Name (eg, city) [BISHKEK]:

Organization Name (eg, company) [BENET.Inc]:

Organizational Unit Name (eg, section) []:

Common Name (eg, your name or your server's hostname) []:client-pc1.benet.com

Email Address [***adm@benet.com]:

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:

An optional company name []:

Using configuration from /soft_dir/open***-2.0.9/easy-rsa/openssl.cnf

Check that the request matches the signature

Signature ok

The Subject's Distinguished Name is as follows

countryName :PRINTABLE:'CN'

stateOrProvinceName :PRINTABLE:'BeiJing'

localityName :PRINTABLE:'BISHKEK'

organizationName :PRINTABLE:'BENET.Inc'

commonName :PRINTABLE:'client-pc1.benet.com'

emailAddress :IA5STRING:'***adm@benet.com'

Certificate is to be certified until Jul 12 06:10:23 2020 GMT (3650 days)

Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y

Write out database with 1 new entries

Data Base Updated

 

2. 创建第 2 个服务配置文件

该配置文件用于建立“GW1 <----> PC1”隧道连接,将使用 tun1 设备、监听 UDP 1195 端口。

[root@gw1 ~]# vim /etc/open***/gw1_tun1.conf

local 173.74.75.76

port 1195 //为第 2 条隧道开启新的 1195 端口监听服务

proto udp

dev tun

ca keys/ca.crt

cert keys/gw1.crt

key keys/gw1.key

dh keys/dh1024.pem

server 10.9.0.0 255.255.255.0 //设置第 2 条隧道的虚拟网络地址

ifconfig-pool-persist ipp.txt

push "route 192.168.1.0 255.255.255.0" //为 PC1 添加到 LAN1 的路由

push "route 192.168.2.0 255.255.255.0" //为 PC1 添加到 LAN2 的路由

push "route 10.8.0.0 255.255.255.0" //为 PC1 添加到 GW2 的路由

push "dhcp-options DNS 202.106.0.20"

client-to-client

client-config-dir ccd

keepalive 10 120

tls-auth keys/ta.key 0

cipher BF-CBC

comp-lzo

max-clients 10

user nobody

group nobody

persist-key

persist-tun

status open***-status-2.log //启用新的日志文件

log-append open***-2.log

verb 3

mute 20

 

3. 建立用于 PC1 的 ccd 配置文件

[root@gw1 ~]# vim /etc/open***/ccd/client-pc1.benet.com

ifconfig-push 10.9.0.2 10.9.0.1

 

4. 重新启动 Open××× 服务

重启 open*** 服务后应在 1194、1195 端口分别监听服务。

[root@gw1 ~]# service open*** restart

正在关闭open***: [确定]

正在启动 open***: [确定]

[root@gw1 ~]# netstat -anp | grep open***

udp 0 0 173.74.75.76:1194 0.0.0.0:* 11793/open***

udp 0 0 173.74.75.76:1195 0.0.0.0:* 11810/open***

 

第二步、配置 Windows XP 客户机(PC1)——上海

1. 配置 IP 地址及 Internet 连接(略)

2. 安装 Open×××-GUI 客户端工具

双击下载的 open***-2.0.9-gui-1.0.3-install.exe文件,按照向 导提示安装 即可。若只 作 为Open×××客户端使用,安装时可以不勾选定制组件列表中的“Open××× Service”(如图所示)。

clip_p_w_picpath001

clip_p_w_picpath002

3. 下载证书和密钥文件

下载在GW1主服务器端创建的ca.crt、ta.key、client-pc1.key、client-pc1.crt 文件。

将下载的密钥等相关文件复制到Open×××配置文件目录下(默认为C:\ProgramFiles\Open×××\config\)。注意保留好备份。

clip_p_w_picpath004

clip_p_w_picpath006

4. 创建 PC1 用户端配置文件

使用 Windwos XP 系统自带的记事本工具创建客户端配置文件 client-pc1.o***,文件内容可以参考范例(C:\Program Files\Open×××\sample-config\client.o***)。

Microsoft Windows [版本 5.2.3790]

(C) 版权所有 1985-2003 Microsoft Corp.

C:\Documents and Settings\Administrator&gt; notepad client-pc1.o***

client

dev tun

proto udp

remote 173.74.75.76 1195

resolv-retry infinite

nobind

persist-key

persist-tun

ca ca.crt

cert client-pc1.crt

key client-pc1.key

ns-cert-type server

tls-auth ta.key 1

cipher BF-CBC

comp-lzo

verb 3

mute 20

 

将建好的配置文件保存到C:\Program Files\Open×××\config\文件夹下(如图所示)。

clip_p_w_picpath008

client-pc1.o*** 文件存放位置

5. 建立 Open××× 连接

方法一:在 Windows XP 任务栏右侧(系统托盘区)的 Open×××-GUI 图标上点击右键,

选择“Connect”,即可使用创建好的配置文件建立 ××× 连接

方法二:在创建好的 client-pc1.o*** 文件上点击右键,选择“Start Open××× on this config

file”即可。——用此方法可以查看建立连接的过程信息,适合用于调试/排错。

第三步、验证 SSL ××× 连接

1. GW1 服务器的 ××× 接口状态

GW1 主服务器将会新增接口 tun1,IP 地址为 10.9.0.1,点对点对端地址为 10.9.0.2

[root@gw1 ~]# ifconfig tun1

tun1 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00

inet addr:10.9.0.1 P-t-P:10.9.0.2 Mask:255.255.255.255

UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:17 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:100

RX bytes:0 (0.0 b) TX bytes:840 (840.0 b)

 

2. Windows XP 客户机 PC1 的 ××× 接口状态

使用 Open×××-GUI 连接成功以后,系统将会增加一个“TAP-Win32 Adapter V8”的本地连接,用户可以通过“开始 ---&gt; 设置 ---&gt; 网络连接”进行查看。

clip_p_w_picpath010

clip_p_w_picpath012

客户机 PC1 的 ××× 接口地址

3. 测试 PC1 与 GW1、GW2 之间的连接

1) 连接GW1(如图所示)

clip_p_w_picpath014

PC1 到 GW1 的 ping 测试

2) 连接GW2,使用ping测试(如图所示)

clip_p_w_picpath016

PC1 到 GW2 的 ping 测试

4. 测试 PC1 与 LAN1 中主机之间的连接

连接LAN1 中的主机,使用ping测试(如图1示)、tracert路由追踪(如图2示)。

clip_p_w_picpath018

图1 PC1 到 LAN1 中主机的 ping 测试

clip_p_w_picpath020

图2 PC1 到 LAN1 中主机的 tracert 路由追踪

5. 测试 PC1 与 LAN2 中主机之间的连接

连接LAN2 中的主机,使用ping测试(如图 8.10所示)、tracert路由追踪(如图所示)。

clip_p_w_picpath022

PC1 到 LAN2 中主机的 ping 测试

clip_p_w_picpath024

PC1 到 LAN2 中主机的 tracert 路由追踪

 

附:详细的PDF完整技术文档下载:http://down.51cto.com/data/102973

本文出自 “贾芸斐” 博客,请务必保留此出处http://jiayf.blog.51cto.com/1659430/349847