该模式支持“单服务器-多客户端”方案,允许从多个位置访问 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 上的 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 组件的远程访问的示例:

在该示例中,某个用户需要在其 PC 上使用 OpenVPN 客户端通过安全的 VPN 连接访问几个不同组件。 OpenVPN 用于连接到分配给 vpn 的 IP 地址。 Vpn 与用户的 PC 建立 VPN 通道并将所有传入流量转发到 sw 端口交换机,该交换机配置为将流量分发给应用中的四个不同组件。
访问使用在该示例中所述 VPN 组件的 CA AppLogic 应用之前,必须先在用户的 PC 上安装 OpenVPN。 以下步骤介绍该应用的配置方式以及用户要通过安全的 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 通道的示例:

在此示例中,两个应用在不同网格(网格 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 |
主页 |
| 版权所有 © 2012 CA。 保留所有权利。 |
|