上一主题: VPN-虚拟专用网络组件

下一主题: 通用


IPSec 共享密钥

该模式支持“单服务器-多客户端”方案,允许从多个位置访问 VPN 服务器。 需要数据存储(连接到 fs 终端的数据卷或 NAS 组件)。 该模式仅适用于 IPv4。

启动后,服务器组件提取在 auth_path 属性中指定的文件的第一行,并将其用作共享密钥。 双方都必须存在该文件。 在配置任何 VPN 客户端之前,必须将该共享密钥文件复制到其数据存储中的 /client/ 子目录。

在服务器 VPN 组件上,对外部接口上接收的流量解密,通过 tcp_ports、udp_ports、aux_protocols 对其进行筛选并将其转发到 srv 接口。

在客户端 VPN 组件上,对 clt 接口上接收的所有流量加密并将其转发到在 remote_host 属性中指定的远程 VPN 服务器。

必须在服务器端配置的属性:ip_addr、netmask、gateway(或对应的 IPv6 属性)、mode、tunnel、allowed_hosts、tcp_ports、udp_ports、aux_protocols。

必须在客户端配置的属性:ip_addr、netmask、gateway(或对应的 IPv6 属性)、mode、tunnel、remote_host、auth_path。

对外部服务的远程访问

下图显示了一个说明如何配置对外部服务的远程访问的示例:

示例:在网格 A 上运行的某个 Web 组件通过安全 VPN 通道访问网格 B 上运行的远程 MySQL 数据库

在该示例中,在网格 A 上运行的 Web 组件通过安全的 VPN 通道访问在网格 B 上运行的远程 MySQL 数据库。

网格 A 上的 vpn1 配置为连接到为网格 B 上的 vpn2 分配的 IP 地址。 vpn1 的 srv 终端和 vpn2 的 clt 终端一直处于未连接状态。 vpn1 和 vpn2 的外部接口配置了适当的可路由 IP 地址。

示例属性配置:

vpn1:

属性名

说明

ip_addr

25.74.63.87

用于 vpn1 的外部 IP

网络掩码

255.255.255.0

网络掩码

网关

25.74.63.1

网关

mode

client

操作的客户端模式

通道

ipsec 证书

使用 IPSec 对流量加密

auth_path

client-7575

证书/密钥文件对的名称

remote_host

12.12.12.12

分配给 vpn2 的外部接口的外部 IP

vpn2:

属性名

说明

ip_addr

12.12.12.12

用于 vpn2 的外部 IP

网络掩码

255.255.255.0

网络掩码

网关

12.12.12.1

网关

mode

服务器

操作的服务器模式

通道

ipsec 证书

使用 IPSec 对流量加密

allowed_hosts

25.74.63.87

只允许来自 vpn1 的连接

tcp_ports

3306

用于 MySQL 服务器的默认端口

对内部 CA AppLogic 组件的远程访问

下图显示了一个说明如何配置对内部 CA AppLogic 组件的远程访问的示例:

示例:某个用户需要在其 PC 上使用 OpenVPN 客户端通过安全 VPN 连接访问多个不同的组件

在该示例中,某个用户需要在其 PC 上使用 OpenVPN 客户端通过安全的 VPN 连接访问几个不同组件。 OpenVPN 用于连接到分配给 vpn 的 IP 地址。 Vpn 与用户的 PC 建立 VPN 通道并将所有传入流量转发到 sw 端口交换机,该交换机配置为将流量分发给应用中的四个不同组件。

访问使用在该示例中所述 VPN 组件的 CA AppLogic 应用之前,必须先在用户的 PC 上安装 OpenVPN。 以下步骤介绍该应用的配置方式以及用户要通过安全的 VPN 通道访问该应用必须执行的操作:

  1. 用户必须在 PC 上安装 OpenVPN。 OpenVPN 可以从很多地方获得(据说 OpenVPN 在 Windows Vista 上无法正常工作)。 安装后,必须创建单独的配置文件,以用于定义用户访问 CA AppLogic 应用所用的 OpenVPN 通道属性。 以下步骤介绍了具体操作方法。
  2. 强烈建议您使用 VPN 组件的共享密钥运行模式。 对 vpn 进行如下配置:

vpn:

属性名

说明

ip_addr

28.36.85.21

为 VPN 组件分配的 IP 地址

mode

服务器

操作的服务器模式

通道

shared secret

使用共享密钥文件

allowed_hosts

26.42.56.72

客户端 PC 的 IP 地址

tcp_ports

0

允许所有端口

udp_ports

0

允许所有端口

3. 分配需要通过 sw 组件转发的所需协议和端口。 在此情况下,将 4 个端口(122、422、522、822)转发给连接到 sw 的组件的 ssh 端口:

属性名

说明

out1_protocol

tcp

TCP 协议

out1_in_port

122

传入端口 122

out1_out_port

22

传出端口 22

out4_protocol

tcp

TCP 协议

out4_in_port

422

传入端口 422

out4_out_port

22

传出端口 22

out5_protocol

tcp

TCP 协议

out5_in_port

522

传入端口 522

out5_out_port

22

传出端口 22

out8_protocol

tcp

TCP 协议

out8_in_port

822

传入端口 822

out8_out_port

22

传出端口 22

4. 启动应用。 在启动应用后,从 vpn 组件中提取共享密钥文件:

grid> comp ssh APPLICATION:main.VPN
vpn> cat /mnt/data/server/secret.key
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
431e845f2ca67f2a31649b20e3ba3291
...
fe991cdbfe82525a9367b9afbfd0f922
-----END OpenVPN Static key V1-----

5. 将上面的 secret.key 的内容粘贴到用户 PC 上的新文件中并保存该文件。 这是用于身份验证的共享密钥文件。

6. 准备客户端 OpenVPN 配置文件。 将以下行复制到用户 PC 上的新文件中(与步骤 5 中文件不同的文件):

dev tun
proto udp
resolv-retry infinite
persist-key
persist-tun
cipher AES-128-CBC
comp-lzo
keepalive 10 120
remote 11.22.33.44 1194
secret "C:\\Program Files\\OpenVPN\\sample-config\\secret.key"
nobind
ifconfig 169.254.215.101 169.254.215.102

Ifconfig 行中的 IP 地址可以为任意地址,前提是它们:a) 来自 169.254.0.0/16 网络块 b) 在同一 /30 子网中 c) 不是 /30 子网中的第一个或最后一个地址。 B 和 C 是对 Windows 平台上运行的 OpenVPN 客户端的限制。

7. 将远程 IP 地址替换为分配给 vpn 组件的 IP 地址。 将密钥行中到共享密钥文件的路径替换为在步骤 5 中创建的密钥文件的路径。 如果在已安装 OpenVPN 的用户 PC 上使用 Microsoft Windows 操作系统,请用引号括起所有行,并将每个斜杠都替换为双斜杠。

8. 启动 OpenVPN 客户端:

c:\program files\OpenVPN\bin\openvpn.exe --config "c:\client.ovpn"

注意:将“c:\client.ovpn”替换为在步骤 6 中创建的配置文件的路径。

9. 在几秒后,您将看到来自 OpenVPN 的以下消息:

Wed Jul 01 09:41:12 2009 Peer Connection Initiated with XX.XX.XX.XX:1194
Wed Jul 01 09:41:12 2009 Initialization Sequence Completed

现在,您可以使用该配置文件中定义的 IP 地址(在此示例中为 169.254.215.102)来访问 CA AppLogic 应用的组件。 端口 169.254.215.102:122 被 sw 转发至 srv1 组件的端口 22,同样,端口 169.254.215.102:422 被转发至 srv4 组件,依此类推。 例如:执行

ssh -p 122 root@169.254.215.102

可访问第一个组件。

为 MySQL 复制提供安全的 VPN 通道

下图显示了一个说明如何为 MySQL 复制提供安全 VPN 通道的示例:

示例:两个不同的网格(网格 A 和网格 B)运行了两个应用,这两个应用使用通过安全 VPN 通道复制的相同 MySQL 数据库。

在此示例中,两个应用在不同网格(网格 A 和网格 B)上运行,这两个应用都使用通过安全 VPN 通道复制的同一 MySQL 数据库。

vpn1 和 vpn2 在外部接口上配置了可路由的 IP 地址。 vpn1 经配置后建立了指向 vpn2 的通道,vpn2 上也采取了相应配置。

网格 A 的 db1 向 vpn1 发送用于复制用途的流量,在 vpn1 中对流量加密并将其传送至 vpn2,vpn2 对流量解密并将其发送至网格 B 上 db2 的 rin 终端。 同样,从网格 B 上的 db2 到网格 A 的 db1 的复制行为与此相同。

vpn1:

属性名

说明

ip_addr

82.56.42.25

分配给外部接口的地址。

mode

both

操作的服务器模式。

通道

ssh 密钥

使用 SSH 密钥文件。

auth_path

"/keys/vpn21.ssh.key"

SSH 密钥文件的路径。

remote_host

92.72.57.95

分配给 vpn2 的外部接口的地址。

tcp_ports

3306,22

用于 MySQL 服务器和 SSH 的默认端口。

ssh_ports

3306,22

用于 MySQL 服务器和 SSH 的默认端口。

vpn2:

属性名

说明

ip_addr

92.72.57.95

分配给外部接口的地址。

mode

both

操作的服务器模式。

通道

ssh 密钥

使用 SSH 密钥文件。

auth_path

"/keys/vpn21.ssh.key"

SSH 密钥文件的路径。

remote_host

82.56.42.25

分配给 vpn1 的外部接口的地址。

tcp_ports

3306,22

用于 MySQL 服务器和 SSH 的默认端口。

ssh_ports

3306,22

用于 MySQL 服务器和 SSH 的默认端口。

vpn1:

属性名

说明

ip_addr

82.56.42.25

分配给外部接口的地址。

mode

both

充当服务器和客户端,允许双向复制。

通道

ipsec 共享密钥

使用 IPSec 加密流量。

auth_path

"/keys/ipsec.key"

ipsec 共享密钥文件的路径。

remote_host

92.72.57.95

分配给 vpn2 的外部接口的地址。

tcp_ports

3306,22

用于 MySQL 服务器和 SSH 的默认端口。

vpn2:

属性名

说明

ip_addr

92.72.57.95

分配给外部接口的地址。

mode

both

充当服务器和客户端,允许双向复制。

通道

ipsec 共享密钥

使用 IPSec 加密流量。

auth_path

"/keys/server/ipsec.key"

ipsec 共享密钥文件的路径。

remote_host

82.56.42.25

分配给 vpn1 的外部接口的地址。

tcp_ports

3306,22

用于 MySQL 服务器和 SSH 的默认端口。

说明

必须在客户端计算机上使用 OpenVPN 才能访问 VPN 组件公开的安全 VPN 通道。

组件中使用的第三方开源软件

VPN 除了使用其基类 LUX5 所用的第三方开源软件包之外,还使用下列第三方/开源软件包。

软件

版本

已修改

许可

说明

IPsec-Tools

0.6.5-13.el5_3.1

No

BSD

主页

iptables

1.3.5-5.3.el5_4.1

No

GPLv2

N/A

iptables-ipv6

1.3.5-5.3.el5_4.1

No

GPLv2

N/A

LZO

2.03

No

GPLv2

主页

OpenVPN

2.1.4

No

GPLv2

主页

samba-client

3.0.33-3.15.el5_4

No

GPLv2

N/A

samba-common

3.0.33-3.15.el5_4

No

GPLv2

N/A

iproute2

2.6.29-1

No

GPLv2

主页

autossh

1.4b

No

BSD

主页