上一主题: NET-带防火墙的网络输出网关 (iptables)

下一主题: 动态目录

VPN-虚拟专用网络组件

最新版本:2.0.1-1

VPN 组件

概览

目录

系统

类别

网关

用户卷

yes

最小 内存

96M

操作系统

Linux

约束

no

功能概述

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

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

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

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

边界

资源

资源

最小值

最大值

默认值

CPU

0.1

16

0.2

内存

96 MB

32 GB

96 MB

带宽

1 Mbps

2 Gbps

250 Mbps

终端

name

dir

protocol

说明

clt

in

Any

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

srv

out

Any

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

fs

out

NFS

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

log

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

string

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

ipv6_gateway

string

定义外部接口的默认 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 3Tera 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 Technologies 证书复制到客户端组件上的 /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 Technologies 证书复制到客户端组件上的 /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 上运行的 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

server

操作的服务器模式

通道

ipsec 证书

使用 IPSec 对流量加密

allowed_hosts

25.74.63.87

只允许来自 vpn1 的连接

tcp_ports

3306

用于 MySQL 服务器的默认端口

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

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

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

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

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

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

vpn:

属性名

说明

ip_addr

28.36.85.21

为 VPN 组件分配的 IP 地址

mode

server

操作的服务器模式

通道

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 3Tera 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 的默认端口。

也可以使用 IPSec 共享密钥模式:
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 的默认端口。

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

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

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

这里使用了与上一示例相同的两个应用,不过它们在 IPv6 网络上运行。

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

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

vpn1:

属性名

说明

ipv6_addr

fc00:1111:1111::10/64

分配给外部接口的地址。

ipv6_gateway

fc00:1111:1111::99

网关地址。

mode

both

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

通道

ssh 密钥

使用 SSH 密钥文件。

auth_path

"/keys/vpn21.ssh.key"

SSH 密钥文件的路径。

remote_host

fc00:1111:2222::10

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

tcp_ports

3306,22

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

ssh_ports

3306,22

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

vpn2:

属性名

说明

ipv6_addr

fc00:1111:2222::10/64

分配给外部接口的地址。

ipv6_gateway

fc00:1111:2222::99

网关地址。

mode

both

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

通道

ssh 密钥

使用 ssh 密钥文件。

auth_path

"/keys/vpn21.ssh.key"

ssh 密钥文件的路径。

remote_host

fc00:1111:1111::10

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

tcp_ports

3306,22

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

ssh_ports

3306,22

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

说明

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

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

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

软件

版本

已修改

许可

说明

IPsec-Tools

0.6.5-13.el5_3.1

BSD

主页

iptables

1.3.5-5.3.el5_4.1

GPLv2

N/A

iptables-ipv6

1.3.5-5.3.el5_4.1

GPLv2

N/A

LZO

2.03

GPLv2

主页

OpenVPN

2.1.4

GPLv2

主页

samba-client

3.0.33-3.15.el5_4

GPLv2

N/A

samba-common

3.0.33-3.15.el5_4

GPLv2

N/A

iproute2

2.6.29-1

GPLv2

主页

autossh

1.4b

BSD

主页