上一主题: NET2:子网输出网关组件下一主题: VPN2:虚拟专用网络组件


VPN:虚拟专用网络组件

最新版本:3.1.3-1

VPN 组件

概览

目录

系统

类别

网关

用户卷

yes

最小 内存

96M

操作系统

Linux

约束

功能概述

VPN 是在 IPv4 和 IPv6 网络中运行的虚拟专用网络组件,旨在为网格间通信以及远程访问应用和组件提供安全可靠的通道。 不使用 VPN 通道也可以运行 VPN,在此情况下,VPN 充当明文 IN/OUT 组合网关。 VPN 还可用于无缝互连 IPv4 和 IPv6 CA AppLogic® 网格。 VPN 基于 OpenVPN、OpenSSH 和 Racoon 开源软件包。

VPN 具有三种基本运行模式:server、client 和 both。

VPN 对身份验证和加密支持 IPSec、共享密钥文件、SSL 证书和 ssh 密钥文件。 可以在远程工作站上使用常规 OpenVPN/OpenSSH 客户端连接到 VPN,随即对 CA AppLogic® 上运行的应用的内部组件提供安全访问。 VPN 组件支持生成共享密钥文件、SSL 证书和 ssh 密钥。

要使用 VPN 基于安全 VPN 通道远程访问 CA AppLogic® 应用,可以在客户端计算机上使用 OpenVPN 客户端软件或 OpenSSH(或其他某些兼容软件)。

资源

资源

最小值

最大值

默认值

CPU

0.1

16

0.2

内存

96 MB

32 GB

96 MB

带宽

1 Mbps

2 Gbps

250 Mbps

终端

名称

dir

protocol

说明

clt

in

任何

在 VPN 作为客户端运行时,用于要通过外部接口定向的所有传入流量的通用输入。 如果 VPN 配置为在外部接口上建立通道,则发送给 clt 的数据包将定向到建立的通道;如果通道未建立,则将数据包丢弃。

srv

out

任何

在 VPN 作为服务器运行时,用于要通过外部接口接收的所有传出流量的通用输出。 在通过 srv 发送之前,将使用 tcp_ports、udp_ports、ssh_ports 和 aux_protocols 属性对所有流量进行筛选。

fs

out

NFS

访问用于共享文件存储的网络文件系统,在 NFS 上提供读/写文件访问权限。 该卷在组件的文件系统空间中作为 /mnt/fs 挂接,并用于加密密钥和证书的存储。 连接的服务器必须有名为 /mnt/data 的读/写共享。 如果 VPN 以明文模式运行,则不需要数据卷或 NFS 挂接卷。 如果不使用此终端,可以让它保持未连接状态。

日志

out

CIFS

访问用于存储访问和错误日志的基于 CIFS 的网络文件系统。 已连接的服务器必须允许匿名登录并拥有名称为 share 的读/写共享。 如果不使用此终端,可以让它保持未连接状态。

mon

out

CCE

用于发送性能和资源使用统计信息。 如果未使用,则可以保持断开连接状态。

属性

常规属性

属性名

类型

说明

ip_addr

ip_owned

定义网关外部接口的 IPv4 地址。 如果 VPN 以仅限 IPv4 模式运行,则该属性是强制性属性。

网络掩码

IP 地址

定义外部接口的 IPv4 网络掩码。 如果 VPN 以仅限 IPv4 模式运行,则该属性是强制性属性。

网关

IP 地址

定义外部接口的默认 IPv4 网络网关(路由器)。 如果留空,则只能访问与 ip_addr/netmask 在同一子网上的主机。 默认值:

ipv6_addr

字符串

定义网关外部接口的 IPv6 地址。 用共八组、每组四个十六进制数字的标准地址表示法指定 IPv6 地址。 一组或任意组 0 值可以替换为两个冒号 (::)。 格式为“地址/网络掩码”,例如 fc00:1234:5678::12/64。 如果 VPN 以仅限 IPv6 模式运行,则该属性是强制性属性。

ipv6_gateway

字符串

定义外部接口的默认 IPv6 网络网关(路由器)。 如果留空,则只能访问与 ipv6_addr 在同一子网上的主机。 默认值:

dns1

IP 地址

定义 VPN 将 DNS 请求转发到的主要 DNS 服务器。 如果留空,VPN 将使用根 DNS 服务器。 默认值:

dns2

IP 地址

定义当主要服务器不可用时,VPN 将 DNS 请求转发到的备份 DNS 服务器。 如果留空,VPN 将不使用备份 DNS 服务器。 默认值:

重要信息! 必须至少定义一对地址(IPv4 或 IPv6)。

VPN 属性

属性名

类型

说明

mode

字符串

操作方式。 可能值为:
server-VPN 以 server 模式运行,接受来自外部接口上的已建立通道的传入流量并将其发送到 srv 终端。
client-VPN 以 client 模式运行,接受 clt 终端上的传入流量并将其发送到外部接口上的已建立通道中。
both-VPN 同时以 client 和 server 模式运行。
默认值:server。

通道

字符串

要建立的通道的类型。 可能值为:
证书-使用 SSL 客户端和服务器证书建立 VPN 通道,用于 OpenVPN 的身份验证和加密。 如果服务器证书不存在,则会自动生成;必须使用 VPN 服务器上的 /appliance/security.sh 脚本手工生成客户端证书,并将它复制到数据卷或 nfs 挂接卷的 /client/ 子目录中。 该模式适用于 IPv4 和 IPv6。
共享密钥-使用 OpenVPN 共享密钥建立 VPN 通道。 如果该文件不存在,则会在 VPN 服务器上自动生成该文件,其所在位置为数据卷或 nfs 挂接卷的 /server/ 子目录,名称为 secret.key。 必须在客户端 VPN 组件上将该文件复制到 /client/ 子目录中。 该模式适用于 IPv4 和 IPv6。
SSH 密钥-使用用于身份验证的 OpenSSH 密钥文件建立 SSH 通道。 密钥文件是使用 /appliance/security.sh 服务器端脚本生成的。 必须将客户端密钥文件复制到挂接了 nfs 的存储数据卷的 /client/ 子目录中。 该模式适用于 IPv4 和 IPv6。
ipsec 共享密钥-在 VPN 实例之间建立 IPSec 通道。 auth_path 属性指定的文件的第一行用作共享密钥。 该模式仅适用于 IPv4。
ipsec 证书-在 VPN 实例之间建立使用证书的 IPSec 通道。 如果服务器证书不存在,则自动生成或使用 /appliance/security.sh 脚本生成;必须使用 VPN 服务器上的 /appliance/security.sh 脚本手工生成客户端证书,并将它复制到数据卷或 nfs 挂接卷的 /client/ 子目录中。 该模式仅适用于 IPv4。 对于这两种运行模式,所有证书都必须由同一组件生成,并随其 ca.crt 证书一起发布。
cleartext-不建立任何通道;VPN 组件作为组合的 IN/OUT 网关运行,接受 clt 终端上的流量并通过外部接口转发该流量,还接受外部接口上的流量并通过 srv 终端转发该流量。 该模式适用于 IPv4 和 IPv6。 对于 IPv6 模式,remote_host 属性必须包含对等方的地址。
默认值:cleartext。

auth_path

字符串

通道的身份验证信息。 对于操作的共享密钥模式,这是数据卷的共享密钥文件的相对路径(例如“client/secret.key”文件的“secret.key”)。 对于证书模式,这是证书/密钥文件对的相对路径,包括没有扩展名的文件名。 例如:如果证书文件 client1-2009.crt 和 client1-2009.key 位于数据卷的 /client 子目录,则此处必须指定 client1-2009。 如果通道是 cleartext,则忽略该属性。 如果通道是 ssh 密钥,此属性指定 ssh 公用密钥文件(对于 VPN 服务器)或专用密钥文件(对于 VPN 客户端)的路径,包括文件名(例如:为 /client/1/ssh.key 公用密钥文件指定 /1/ssh.key)。
默认值:空

log_level

字符串

VPN 日志记录级别。 可能值为:
none-不记录任何内容。
emerg-只记录 VPN 检测到的错误。
warn-既记录警告又记录错误。
notice-记录警告、错误和通知。
debug-除警告、通知和错误外,还记录其他调试信息。
默认值:如果未连接日志终端,则为 none;如果连接日志终端,则为 emerg。

服务器属性

allowed_hosts

字符串

允许连接的主机和/或子网的列表。 使用空格或逗号分隔多个条目。 支持的格式示例:192.168.1.2 192.168.1.0/24 192.168.2.0/255.255.255.0 fc00:1234::12/64。
默认值:0.0.0.0/0(全部允许,包括 IPv4 和 IPv6)

tcp_ports

字符串

srv 终端上允许的端口号或端口范围。 接受逗号或空格分隔值字符串。 必须以 lower_port:higher_port 格式指定端口范围,以冒号或短划线作为分隔符(例如:80,81,82:85 86-90)。 特殊值 0 表示接受所有 tcp 端口。
默认值:空

udp_ports

字符串

与 tcp_ports 相同,但用于 UDP 协议。
默认值:空

aux_protocols

字符串

允许的其他 IP 协议号的逗号或空格分隔值字符串(例如:6 表示 TCP,47 表示 GRE)。 可以使用名称指定其他协议(例如指定 gre 而不指定 47)。 有关分配的信息,请访问 http://www.iana.org/assignments/protocol-numbers。
默认值:空(禁用)

客户端属性

remote_host

字符串

定义所有流量要转发到的远程主机。 可以是主机的 DNS 名称,也可以是以“点”表示法表示的 IPv4 或 IPv6 地址。 此属性是强制性属性。
默认值:空

dns_poll

整数

VPN 在验证从 remote_host 的 DNS 名称到 IP 地址的映射时使用的轮询时间间隔(秒)(仅在将 remote_host 指定为 DNS 名称时使用)。 设置为 0 将会禁用轮询且不尝试检测更改。
默认值:3600 秒(1 小时)。

ssh_ports

字符串

SSH 密钥模式的客户端属性,用于指定要转发到 VPN 服务器的 tcp 端口。 不支持端口范围,可以使用空格或逗号分隔端口。
默认值:空

名称

说明

data

包含配置文件和证书文件的读/写数据卷(占位符)。 如果已连接 fs 终端,则不需要该卷。 如果已连接 fs 并已提供数据卷,VPN 将无法启动并记录错误消息。 VPN 服务器操作必需的所有文件都存储在数据存储的 /server/ 子目录中。 VPN 客户端操作必需的所有文件都存储在 /client/ 子目录中。

自定义计数器

VPN 组件通过 mon 终端报告以下自定义计数器。

计数器名称

说明

server_bytes_in

VPN 接收的总字节数。

server_bytes_out

VPN 发送的总字节数。

client_bytes_in

从客户端通道接收的总字节数。

client_bytes_out

发送至客户端通道的总字节数。

clients

连接到 VPN 的客户端的数量。

性能

两个测试应用驻留在同一 CA AppLogic® 网格上。 为两个 VPN 组件(客户端和服务器)以及服务器和客户端组件分配了 100 Mb 带宽。 提取了多个对象,每次 10 个对象,每个对象大小为 1 MB,持续时间为 60 秒。

模式

带宽(Mb/秒)

对象大小

请求数/秒

传输速率(MB/秒)

证书

100

1 MB

12.5667

12.56

共享密钥

100

1 MB

12.5166

12.51

SSH 密钥

100

1 MB

12.7667

12.76

明文

100

1 MB

13.0329

13.03

错误消息

在组件启动失败的情况下,系统日志可能记录以下错误消息:

错误消息

说明

无法挂接数据卷

VPN 无法挂接数据卷。 验证卷是否已格式化并可用。

无法生成 server_key

VPN 无法生成共享密钥文件。 数据卷可能太小,或者是以只读方式挂接的。

无法启动 OpenVPN 服务器

VPN 无法启动 OpenVPN 服务器。 请与 CA Technologies 支持联系。

无法生成证书。

VPN 无法创建证书颁发机构并为证书服务器运行模式生成必要的证书。 数据卷可能太小,或者是以只读方式挂接的。

无法生成 DH 文件。

VPN 无法生成 Diffie-Hellman 密钥文件。 数据卷可能太小,或者是以只读方式挂接的。

密钥文件 client_auth 不存在

在 auth 属性中指定的文件 client_auth 不存在。 验证文件的路径和名称。

远程服务器地址为空

用于通道 X 的远程 VPN 服务器地址为空。

无法为 clientX 通道启动 OpenVPN

VPN 无法为客户端通道 X 启动 OpenVPN 软件。 可能有些属性或密钥文件无效。

证书文件 client_auth.crt 不存在

VPN 找不到证书文件。 在 auth 属性中为证书客户端运行模式指定的路径或文件名无效。

密钥文件 client_auth.key 不存在

VPN 找不到密钥文件。 在 auth 属性中为证书客户端运行模式指定的路径或文件名无效。

缺少证书颁发机构证书 ca_cert

VPN 找不到证书颁发机构证书。 它应位于数据卷上的 /CA/ca.crt 文件中。

通道类型

明文

该模式支持“单服务器-多客户端”方案,允许从多个位置访问 VPN 服务器。 在该模式中不建立 VPN 通道,也不需要数据存储(数据卷和 NAS 组件都不连接到 fs 终端)。 该模式适用于 IPv4 和 IPv6。

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

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

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

必须在客户端配置的属性:ip_addr、netmask、gateway、mode、tunnel、remote_host。

如果正在使用 IPv6 模式,则必须用客户端的地址来配置服务器端属性 remote_host。

证书

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

启动后,如果必要的证书和密钥文件不存在,服务器组件会生成这些文件。 可以使用位于 /appliance/ 目录的 security.sh 脚本重新生成这些文件。 在配置任何 VPN 客户端之前,必须为其生成证书。 用户可能会登录到正在运行的 VPN 服务器组件并生成客户端密钥对,如下所述:

grid> comp login VPN-1:main.VPN
CentOS 发行版 5(最终)

[VPN-1:main.VPN ~]# /appliance/security.sh generate_client
生成的客户端 SSL 证书和密钥文件。
==============================================
这些文件以及 CA 证书文件应复制到 VPN 服务器的
数据卷或 fs 挂接卷的 /client/ 子目录。
在 auth_path 属性中应指定到客户端文件(client.829de5afcac564b3)的路径。
文件的位置:
客户端证书:/mnt/fs/server/client.829de5afcac564b3.crt
客户端密钥文件:/mnt/fs/server/client.829de5afcac564b3.key
CA 证书文件位于 /mnt/fs/server/ca.crt

必须将客户端证书和密钥文件复制到客户端 VPN 组件上数据存储的 /client/ 子目录下,并将 auth_path 设置为适当值,在此示例中为 client.829de5afcac564b3。 还必须将 VPN 服务器 (/mnt/fs/server/ca.crt) 中的 CA 证书复制到客户端组件上的 /client/ 子目录,并将其命名为“ca.crt”。 每个客户端 VPN 组件都应有自己的证书。

在服务器 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。

共享密钥文件

该模式只支持“单服务器-单客户端”方案,一次只允许从单个客户端访问 VPN 服务器。 需要数据存储(连接到 fs 终端的数据卷或 NAS 组件)。 该模式在 IPv4 和 IPv6 中均适用。

启动后,如果共享密钥文件 /server/secret.key 不存在,则服务器组件会生成该文件。 可以使用位于 /appliance/ 目录的 security.sh 脚本重新生成该文件。 在配置任何 VPN 客户端之前,必须将该共享密钥文件复制到其数据存储中的 /client/ 子目录。 要生成新的共享密钥文件,用户可以登录到正在运行的 VPN 服务器组件并发出以下命令:

[VPN-1:main.VPN server]# /appliance/security.sh generate_secret
生成的 OpenVPN 共享密钥文件。
======================================
该文件应复制到 VPN 服务器的数据卷或 fs 挂接卷的 /server/ 子目录,
以及 VPN 客户端的数据卷或 fs 挂接卷的 /client/ 子目录。
在 VPN 客户端的 auth_path 属性中应指定到它的路径。
文件位置:/mnt/fs/server/secret.key

如果已存在密钥文件,则新生成的密钥文件会覆盖旧文件。 必须将该共享密钥文件 /mnt/fs/server/secret.key 复制到客户端 VPN 组件上数据存储的 /client/ 子目录中,并将 auth_path 属性设置为正确值,在此示例中为 secret.key。 可以配置多个客户端 VPN 组件,但任候时候只能连接一个组件。

在服务器 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。

Ssh 密钥

该模式支持“单服务器-多客户端”方案,允许从多个位置访问 VPN 服务器。 需要数据存储(连接到 fs 终端的数据卷或 NAS 组件)。 只有 tcp 流量可以通过 ssh 通道传送,因此在服务器端只能使用 tcp_ports 属性。 不支持端口范围-必须在 ssh_ports 客户端属性中显式指定应转发的每个端口。 该模式在 IPv4 和 IPv6 中均适用。

vpn 服务器启动后会生成默认的 ssh 密钥对;默认密钥位于:服务器密钥(公钥):server/ssh-server.pub;客户端密钥(私钥):server/ssh-client.key。可以使用 security.sh 脚本手工生成更多密钥:

[VPN-1:main.VPN ~]# /appliance/security.sh generate_ssh
生成的 SSH 密钥对。
======================
公钥应复制到 VPN 服务器的数据卷或 fs 挂接卷的 /server/ 子目录。
私钥应复制到 VPN 客户端的数据卷或 fs 挂接卷的 /client/ 子目录。
在 VPN 客户端和服务器上 auth_path 属性中应指定到密钥文件的路径。
文件的位置:
公钥:/mnt/fs/server/ssh.11179ebbfa3f6852.pub
私钥:/mnt/fs/server/ssh.11179ebbfa3f6852.key

应该将公钥复制到 VPN 服务器的 /server/ 子目录中,将私钥复制到客户端的 /client/ 子目录中。 在客户端和服务器上均应设置 auth_path 属性。 如果服务器上的 auth_path 为空,则使用默认的 SSH 密钥。

在服务器 VPN 组件上,对外部接口上接收的流量解密,通过 ssh_ports 对其进行筛选并将其转发到 srv 接口。 只支持 tcp 端口转发。 auth_path 属性定义要使用的 SSH 公钥。 当组件同时在客户端和服务器模式下工作时,公钥和私钥应该名称相同,并位于 /server/ 和 /client/ 子目录中。 在服务器和客户端上应以相同方式配置 ssh_ports 属性。

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

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

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

重要信息! SSH 服务器-服务器模式。 可以在 both 模式下同时配置两个 VPN 组件,并将它们互相连接。 要使用该模式,必须以特殊方式配置组件:

假设有 2 个组件,名称分别为 VPN1 和 VPN2:1. 创建 2 组公钥/私钥文件(1.key/1.pub,2.key/2.pub,使用“/appliance/security.sh generate_ssh”脚本)2. 在两个组件上将 auth_path 属性配置为“ssh.key”3. 将 2.pub 复制到 VPN1:/mnt/data/server/ssh.key(或复制到 NAS 驱动器的 /server/ 子目录的 ssh.key 文件)(公钥将移到 /server/ 子目录)4. 将 2.key 复制到 VPN2:/mnt/data/client/ssh.key(私钥将移到 /client/ 子目录)5. 将 1.pub 复制到 VPN2:/mnt/data/server/ssh.key(公钥将移到 /server/ 子目录)6. 将 1.key 复制到 VPN1:/mnt/data/client/ssh.key(私钥将移到 /client/ 子目录)。

IPSec 证书

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

启动后,如果必要的证书和密钥文件不存在,服务器组件会生成这些文件。 可以使用位于 /appliance/ 目录的 security.sh 脚本重新生成这些文件。 在配置任何 VPN 客户端之前,必须为其生成证书。 用户可以登录正在运行的 VPN 服务器组件并生成客户端密钥对,如下所述:

grid> comp login VPN-1:main.VPN
CentOS 发行版 5(最终)

[VPN-1:main.VPN ~]# /appliance/security.sh generate_client
生成的客户端 SSL 证书和密钥文件。
==============================================
这些文件以及 CA 证书文件应复制到 VPN 服务器的
数据卷或 fs 挂接卷的 /client/ 子目录。
在 auth_path 属性中应指定到客户端文件(client.829de5afcac564b3)的路径。
文件的位置:
客户端证书:/mnt/fs/server/client.829de5afcac564b3.crt
客户端密钥文件:/mnt/fs/server/client.829de5afcac564b3.key
CA 证书文件位于 /mnt/fs/server/ca.crt

必须将客户端证书和密钥文件复制到客户端 VPN 组件上数据存储的 /client/ 子目录下,并将 auth_path 设置为适当值,在此示例中为 client.829de5afcac564b3。 还必须将 VPN 服务器 (/mnt/fs/server/ca.crt) 中的 CA 证书复制到客户端组件上的 /client/ 子目录,并将其命名为“ca.crt”。 每个客户端 VPN 组件都应有自己的证书。

重要信息! 在 both 模式下使用 VPN 时,操作将有所不同。 在此情况下,所有证书、客户端和服务器必须由同一 VPN 实例生成,并且与其 ca.crt 证书一起分发到其他实例中。

在服务器 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。

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 上的 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

客户端

操作的客户端模式

tunnel

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

服务器

操作的服务器模式

tunnel

ipsec 证书

使用 IPSec 对流量加密

allowed_hosts

25.74.63.87

只允许来自 vpn1 的连接

tcp_ports

3306

用于 MySQL 服务器的默认端口

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

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

在该示例中,某个用户需要在其 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

服务器

操作的服务器模式

tunnel

共享密钥

使用共享密钥文件

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 数据库。

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

两者

操作的服务器模式。

tunnel

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

两者

操作的服务器模式。

tunnel

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

两者

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

tunnel

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

两者

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

tunnel

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 除了使用其基类 LUX6 所用的第三方开源软件包之外,还使用下列第三方/开源软件包。

软件

版本

已修改

许可

注释

IPsec-Tools

0.6.5-13.el5_3.1

No

BSD

主页

iptables

1.3.5-5.3.el5_4.1

No

GPLv2

不适用

iptables-ipv6

1.3.5-5.3.el5_4.1

No

GPLv2

不适用

LZO

2.03

No

GPLv2

主页

OpenVPN

2.1.4

No

GPLv2

主页

samba-client

3.0.33-3.15.el5_4

No

GPLv2

不适用

samba-common

3.0.33-3.15.el5_4

No

GPLv2

不适用

iproute2

2.6.29-1

No

GPLv2

主页

autossh

1.4b

No

BSD

主页