

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# AWS Client VPN 的工作原理
<a name="how-it-works"></a>

在 AWS Client VPN 中，有两种类型的用户角色与 Client VPN 端点交互：管理员和客户端。

Client VPN 支持 IPv4、IPv6 和双堆栈（IPv4 和 IPv6）连接。您可以创建使用 IPv4、IPv6 或两者的端点，从而允许您连接到 VPC 中的 IPv6 资源或从 IPv6 网络上的客户端进行连接。这种灵活性可以帮助已经实施或正在过渡到 IPv6 基础设施的组织。

*管理员*负责设置和配置服务。这包括创建 Client VPN 端点、关联目标网络、配置授权规则，以及设置额外的路由（如果需要）。在设置和配置 Client VPN 端点后，管理员下载 Client VPN 端点配置文件并将其分发给需要访问的客户端。Client VPN 端点配置文件包含 Client VPN 端点的 DNS 名称和建立 VPN 会话所需的身份验证信息。有关设置服务的更多信息，请参阅 [开始使用 AWS Client VPN](cvpn-getting-started.md)。

*客户端* 是最终用户。这是连接到 Client VPN 端点以建立 VPN 会话的人。客户端使用基于 OpenVPN 的 VPN 客户端应用程序从其本地计算机或移动设备上建立 VPN 会话。建立 VPN 会话后，它们就可以安全地访问关联子网所在的 VPC 中的资源。如果已配置所需的路由和授权规则，则客户端还可以访问 AWS、本地网络或其他客户端中的其他资源。有关连接到 Client VPN 端点以建立 VPN 会话的更多信息，请参阅《AWS Client VPN 用户指南》**中的[入门](https://docs.aws.amazon.com/vpn/latest/clientvpn-user/user-getting-started.html)。

下图阐明基本的 Client VPN 架构。

![Client VPN 架构](http://docs.aws.amazon.com/zh_cn/vpn/latest/clientvpn-admin/images/architecture.png)


## Client VPN 场景和示例
<a name="scenario"></a>

AWS Client VPN 是一种完全托管的远程访问 VPN 解决方案，便于客户端安全地访问 AWS 和本地网络内的资源。有多个选项可用于配置访问权限。本部分提供为您的客户端创建和配置 Client VPN 访问的示例。

**场景**
+ [使用 Client VPN 访问 VPC](#scenario-vpc)
+ [使用 Client VPN 访问对等 VPC](#scenario-peered)
+ [使用 Client VPN 访问本地网络](#scenario-onprem)
+ [使用 Client VPN 访问 Internet](#scenario-internet)
+ [使用 Client VPN 进行客户端到客户端访问](#scenario-client-to-client)
+ [使用 Client VPN 限制对网络的访问](#scenario-restrict)

### 使用 Client VPN 访问 VPC
<a name="scenario-vpc"></a>

此场景的 AWS Client VPN 配置包括单一目标 VPC。如果您需要向客户端授予仅对于单个 VPC 中的资源的访问权限，我们建议您采用此配置。

![访问 VPC 的 Client VPN](http://docs.aws.amazon.com/zh_cn/vpn/latest/clientvpn-admin/images/client-vpn-scenario-vpc.png)


开始之前，请执行以下操作：
+ 创建或确定至少具有一个子网的 VPC。确定 VPC 中要与 Client VPN 端点关联的子网并记下其 IPv4 CIDR 范围。
+ 为与 VPC CIDR 不重叠的客户端 IP 地址确定合适的 CIDR 范围。
+ 查看[使用规则和最佳实践 AWS Client VPN](what-is-best-practices.md)中的 Client VPN 终端节点的规则和限制。

**实施此配置**

1. 在 VPC 所在的区域中创建 Client VPN 终端节点。要执行此操作，请执行 [创建AWS Client VPN终端节点](cvpn-working-endpoint-create.md) 中介绍的步骤。

1. 将子网与 Client VPN 端点相关联。要执行此操作，请执行[将目标网络与 AWS Client VPN 终端节点关联](cvpn-working-target-associate.md)中介绍的步骤，并选择您之前确定的子网和 VPC。

1. 添加授权规则以向客户端授予访问 VPC 的权限。要执行此操作，请执行[添加授权规则](cvpn-working-rule-authorize-add.md)中介绍的步骤，而对于**目标网络**，输入 VPC 的 IPv4 CIDR 范围。

1. 向资源的安全组添加规则，以允许来自在步骤 2 中应用到子网关联的安全组的流量。有关更多信息，请参阅 [安全组](client-authorization.md#security-groups)。

### 使用 Client VPN 访问对等 VPC
<a name="scenario-peered"></a>

此场景的 AWS Client VPN 配置包括与另一个 VPC（VPC B）对等连接的目标 VPC（VPC A）。如果您需要向客户端授予对目标 VPC 以及其他与其对等的 VPC（例如，VPC B）中资源的访问权限，建议您采用此配置。

**注意**  
仅当在拆分隧道模式下配置 Client VPN 端点时，才需要执行允许访问对等 VPC 的过程（在网络图后概述）。在全隧道模式下，原定设置情况下允许访问对等 VPC。

![访问对等 VPC 的 Client VPN](http://docs.aws.amazon.com/zh_cn/vpn/latest/clientvpn-admin/images/client-vpn-scenario-peer-vpc.png)


开始之前，请执行以下操作：
+ 创建或确定至少具有一个子网的 VPC。确定 VPC 中要与 Client VPN 端点关联的子网并记下其 IPv4 CIDR 范围。
+ 为与 VPC CIDR 不重叠的客户端 IP 地址确定合适的 CIDR 范围。
+ 查看[使用规则和最佳实践 AWS Client VPN](what-is-best-practices.md)中的 Client VPN 终端节点的规则和限制。

**实施此配置**

1. 在 VPC 之间建立 VPC 对等连接。按照 *Amazon VPC 对等指南* 中的[创建并接受 VPC 对等连接](https://docs.aws.amazon.com/vpc/latest/peering/create-vpc-peering-connection.html)的步骤进行操作。确认 VPC A 中的实例可以使用对等连接与 VPC B 中的实例通信。

1. 在目标 VPC 所在的同一个区域中创建 Client VPN 端点。在图中，这是 VPC A。执行[创建AWS Client VPN终端节点](cvpn-working-endpoint-create.md)中介绍的步骤。

1. 将您确定的子网与您创建的 Client VPN 端点关联。要执行此操作，请执行[将目标网络与 AWS Client VPN 终端节点关联](cvpn-working-target-associate.md)中介绍的步骤，同时选择 VPC 和子网。原定设置情况下，我们将 VPC 的原定设置安全组与 Client VPN 端点相关联。您可以使用[将安全组应用于中的目标网络 AWS Client VPN](cvpn-working-target-apply.md)中所述的步骤关联不同的安全组。

1. 添加授权规则以向客户端授予访问目标 VPC 的权限。要执行此操作，请执行 [添加授权规则](cvpn-working-rule-authorize-add.md) 中介绍的步骤。对于**要启用的目标网络**，输入 VPC 的 IPv4 CIDR 范围。

1. 添加路由以将流量定向到对等 VPC。在图中，这是 VPC B。要执行此操作，请执行[创建 AWS Client VPN 端点路由](cvpn-working-routes-create.md)中介绍的步骤。对于**路由目标**，输入对等 VPC 的 IPv4 CIDR 范围。对于**目标 VPC 子网 ID**，选择与 Client VPN 端点关联的子网。

1. 添加授权规则以向客户端授予访问对等 VPC 的权限。要执行此操作，请执行 [添加授权规则](cvpn-working-rule-authorize-add.md) 中介绍的步骤。对于**目标网络**，输入对等 VPC 的 IPv4 CIDR 范围。

1. 向 VPC A 和 VPC B 中实例的安全组添加规则，以允许来自在步骤 3 中应用了Client VPN 端点的安全组的流量。有关更多信息，请参阅 [安全组](client-authorization.md#security-groups)。

### 使用 Client VPN 访问本地网络
<a name="scenario-onprem"></a>

此场景的 AWS Client VPN 配置仅包括访问本地网络。如果您需要向客户端授予仅对于本地网络中资源的访问权限，我们建议您采用此配置。

![访问本地网络的 Client VPN](http://docs.aws.amazon.com/zh_cn/vpn/latest/clientvpn-admin/images/client-vpn-scenario-on-premises.png)


开始之前，请执行以下操作：
+ 创建或确定至少具有一个子网的 VPC。确定 VPC 中要与 Client VPN 端点关联的子网并记下其 IPv4 CIDR 范围。
+ 为与 VPC CIDR 不重叠的客户端 IP 地址确定合适的 CIDR 范围。
+ 查看[使用规则和最佳实践 AWS Client VPN](what-is-best-practices.md)中的 Client VPN 终端节点的规则和限制。

**实施此配置**

1. 通过 AWS Site-to-Site VPN 连接在 VPC 与您自己的本地网络之间进行通信。要执行此操作，请执行 *AWS Site-to-Site VPN 用户指南*中的[使用入门](https://docs.aws.amazon.com/vpn/latest/s2svpn/SetUpVPNConnections.html)中描述的步骤。
**注意**  
或者，您可以通过使用 VPC 和本地网络之间的 Direct Connect 连接来实现此方案。有关更多信息，请参阅 [Direct Connect 用户指南](https://docs.aws.amazon.com/directconnect/latest/UserGuide/)。

1. 测试您在上一步中创建的 AWS Site-to-Site VPN 连接。要执行此操作，请执行 *AWS Site-to-Site VPN 用户指南*中的[测试 Site-to-Site VPN 连接](https://docs.aws.amazon.com/vpn/latest/s2svpn/HowToTestEndToEnd_Linux.html)中介绍的步骤。如果 VPN 连接按预期正常工作，则继续执行下一步。

1. 在 VPC 所在的区域中创建 Client VPN 终端节点。要执行此操作，请执行 [创建AWS Client VPN终端节点](cvpn-working-endpoint-create.md) 中介绍的步骤。

1. 将先前确定的子网与 Client VPN 终端节点关联。要执行此操作，请执行 [将目标网络与 AWS Client VPN 终端节点关联](cvpn-working-target-associate.md) 中介绍的步骤，并选择 VPC 和子网。

1. 添加一个路由，该路由允许访问 AWS Site-to-Site VPN 连接。要执行此操作，请执行 [创建 AWS Client VPN 端点路由](cvpn-working-routes-create.md) 中介绍的步骤；对于**路由目标**，请输入 AWS Site-to-Site VPN 连接的 IPv4 CIDR 范围，对于 **目标 VPC 子网 ID**，请选择与 Client VPN 端点关联的子网。

1. 添加授权规则以向客户端授予访问 AWS Site-to-Site VPN 连接的权限。要执行此操作，请执行 [向 AWS Client VPN 终端节点添加授权规则](cvpn-working-rule-authorize-add.md) 中介绍的步骤，而对于**目标网络**，请输入 AWS Site-to-Site VPN 连接 IPv4 CIDR 范围。

### 使用 Client VPN 访问 Internet
<a name="scenario-internet"></a>

此场景的 AWS Client VPN 配置包括单一目标 VPC 和对 Internet 的访问。如果您需要向客户端授予对单一目标 VPC 中资源的访问权限并另外允许访问 Internet，建议您采用此配置。

如果您完成了 [开始使用 AWS Client VPN](cvpn-getting-started.md)教程，则您已实现了本场景。

![访问 Internet 的 Client VPN](http://docs.aws.amazon.com/zh_cn/vpn/latest/clientvpn-admin/images/client-vpn-scenario-igw.png)


开始之前，请执行以下操作：
+ 创建或确定至少具有一个子网的 VPC。确定 VPC 中要与 Client VPN 端点关联的子网并记下其 IPv4 CIDR 范围。
+ 为与 VPC CIDR 不重叠的客户端 IP 地址确定合适的 CIDR 范围。
+ 查看[使用规则和最佳实践 AWS Client VPN](what-is-best-practices.md)中的 Client VPN 终端节点的规则和限制。

**实施此配置**

1. 确保您将用于 Client VPN 端点的安全组允许发送到 Internet 的出站流量。为此，请添加允许发送到 0.0.0.0/0 的 HTTP 和 HTTPS 流量的出站规则。

1. 创建 Internet 网关并将其附加到 VPC。有关更多信息，请参阅 *Amazon VPC 用户指南* 中的[创建并附加 Internet 网关](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html#Add_IGW_Attach_Gateway)。

1. 通过将通向 Internet 网关的路由添加到路由表，使子网成为公用子网。在 VPC 控制台中，选择 **Subnets**（子网），选择要与 Client VPN 端点关联的子网，选择 **Route Table**（路由表），然后选择路由表 ID。选择**操作**，选择 **Edit routes (编辑路由)**，然后选择**添加路由**。对于 **Destination (目的地)**，输入 `0.0.0.0/0`，然后为 **Target (目标)** 选择上一步中的 Internet 网关。

1. 在 VPC 所在的区域中创建 Client VPN 终端节点。要执行此操作，请执行 [创建AWS Client VPN终端节点](cvpn-working-endpoint-create.md) 中介绍的步骤。

1. 将先前确定的子网与 Client VPN 终端节点关联。要执行此操作，请执行 [将目标网络与 AWS Client VPN 终端节点关联](cvpn-working-target-associate.md) 中介绍的步骤，并选择 VPC 和子网。

1. 添加授权规则以向客户端授予访问 VPC 的权限。要执行此操作，请执行[添加授权规则](cvpn-working-rule-authorize-add.md)中介绍的步骤，而对于**要启用的目标网络**，输入 VPC 的 IPv4 CIDR 范围。

1. 添加允许进入 Internet 的流量的路由。要执行此操作，请执行[创建 AWS Client VPN 端点路由](cvpn-working-routes-create.md)中介绍的步骤；对于 **Route destination**（路由目标），输入 `0.0.0.0/0`，对于 **Target VPC Subnet ID**（目标 VPC 子网 ID），选择与 Client VPN 端点关联的子网。

1. 添加授权规则以向客户端授予访问 Internet 的权限。要执行此操作，请执行[添加授权规则](cvpn-working-rule-authorize-add.md)中介绍的步骤，而对于**目标网络**，输入 `0.0.0.0/0`。

1. 确保 VPC 中资源的安全组具有一条规则，该规则允许从与 Client VPN 端点关联的安全组进行访问。这将允许您的客户端访问 VPC 中的资源。

### 使用 Client VPN 进行客户端到客户端访问
<a name="scenario-client-to-client"></a>

此场景的 AWS Client VPN 配置使客户端能够访问单个 VPC，并支持客户端相互路由流量。如果连接到同一 Client VPN 端点的客户端也需要相互通信，我们建议使用此配置。当客户端连接到 Client VPN 端点时，客户端可以使用从客户端 CIDR 范围分配给它们的唯一 IP 地址相互通信。

![客户端到客户端访问](http://docs.aws.amazon.com/zh_cn/vpn/latest/clientvpn-admin/images/client-vpn-scenario-client-to-client.png)


开始之前，请执行以下操作：
+ 创建或确定至少具有一个子网的 VPC。确定 VPC 中要与 Client VPN 端点关联的子网并记下其 IPv4 CIDR 范围。
+ 为与 VPC CIDR 不重叠的客户端 IP 地址确定合适的 CIDR 范围。
+ 查看[使用规则和最佳实践 AWS Client VPN](what-is-best-practices.md)中的 Client VPN 终端节点的规则和限制。

**注意**  
此方案不支持使用 Active Directory 组或基于 SAML 的 IdP 组的基于网络的授权规则。

**实施此配置**

1. 在 VPC 所在的区域中创建 Client VPN 终端节点。要执行此操作，请执行 [创建AWS Client VPN终端节点](cvpn-working-endpoint-create.md) 中介绍的步骤。

1. 将先前确定的子网与 Client VPN 终端节点关联。要执行此操作，请执行 [将目标网络与 AWS Client VPN 终端节点关联](cvpn-working-target-associate.md) 中介绍的步骤，并选择 VPC 和子网。

1. 将路由添加到路由表中的本地网络。要执行此操作，请执行 [创建 AWS Client VPN 端点路由](cvpn-working-routes-create.md) 中介绍的步骤。对于**路由目标**，输入客户端 CIDR 范围；对于**目标 VPC 子网 ID**，指定 `local`。

1. 添加授权规则以向客户端授予访问 VPC 的权限。要执行此操作，请执行 [添加授权规则](cvpn-working-rule-authorize-add.md) 中介绍的步骤。对于**要启用的目标网络**，输入 VPC 的 IPv4 CIDR 范围。

1. 添加授权规则以向客户端授予访问客户端 CIDR 范围的权限。要执行此操作，请执行 [添加授权规则](cvpn-working-rule-authorize-add.md) 中介绍的步骤。对于**要启用的目标网络**，输入客户端 CIDR 范围。

### 使用 Client VPN 限制对网络的访问
<a name="scenario-restrict"></a>

您可以配置 AWS Client VPN 端点以限制对 VPC 中特定资源的访问。对于基于用户的身份验证，您还可以根据访问 Client VPN 终端节点的用户组限制对网络各部分的访问。

#### 使用安全组限制访问
<a name="scenario-restrict-security-groups"></a>

您可以通过添加或删除引用了安全组（应用到目标网络关联的安全组，即 Client VPN 安全组）的安全组规则，授予或拒绝对您 VPC 中特定资源的访问权限。此配置在[使用 Client VPN 访问 VPC](#scenario-vpc) 中介绍的场景基础之上进行了扩展。除了该情景中配置的授权规则之外，还应用此配置。

要授予对特定资源的访问权限，请确定与运行资源的实例相关联的安全组。然后，创建允许来自 Client VPN 安全组的流量的规则。

在下图中，安全组 A 是 Client VPN 安全组，安全组 B 与 EC2 实例相关联，安全组 C 与 EC2 实例相关联。如果您向安全组 B 添加允许从安全组 A 进行访问的规则，则客户端可以访问与安全组 B 关联的实例。如果安全组 C 没有允许从安全组 A 进行访问的规则，则客户端无法访问与安全组 C 关联的实例。

![限制对 VPC 中资源的访问](http://docs.aws.amazon.com/zh_cn/vpn/latest/clientvpn-admin/images/client-vpn-scenario-security-groups.png)


在开始之前，请检查 Client VPN 安全组是否与 VPC 中的其他资源相关联。如果您添加或删除引用 Client VPN 安全组的规则，则可能还会授予或拒绝对其他关联资源的访问权限。为防止出现这种情况，请使用专门为与 Client VPN 端点一起使用而创建的安全组。

**创建安全组规则**

1. 通过以下网址打开 Amazon VPC 控制台：[https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)。

1. 在导航窗格中，选择 **Security Groups**。

1. 选择与运行您资源的实例相关联的安全组。

1. 选择 **Actions (操作)**、**Edit inbound rules (编辑入站规则)**。

1. 选择 **Add Rule (添加规则)**，然后执行以下操作：
   + 对于 **Type (类型)**，选择 **All traffic (所有流量)** 或要允许的特定流量类型。
   + 对于**源**，请选择**自定义**，然后输入或选择 Client VPN 安全组的 ID。

1. 选择 **Save rules (保存规则)**。

要删除对特定资源的访问权限，请检查与运行资源的实例相关联的安全组。如果存在允许来自 Client VPN 安全组的流量的规则，请将其删除。

**检查安全组规则**

1. 通过以下网址打开 Amazon VPC 控制台：[https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)。

1. 在导航窗格中，选择 **Security Groups**。

1. 选择 **Inbound Rules (入站规则)**。

1. 查看规则列表。如果有一个规则，其中 **Source**（源）是 Client VPN 安全组，请选择 **Edit Rules**（编辑规则），然后为该规则选择 **Delete**（删除）（x 图标）。选择 **Save rules (保存规则)**。

#### 根据用户组限制访问
<a name="scenario-restrict-groups"></a>

如果您的 Client VPN 端点配置为进行基于用户的身份验证，则可以授予特定用户组访问网络特定部分的权限。为此，请完成以下步骤：

1. 在 Directory Service 或 IdP 中配置用户和组。有关更多信息，请参阅以下主题：
   + [Client VPN 中的 Active Directory 身份验证](ad.md)
   + [基于 SAML 的联合身份验证的要求和注意事项](federated-authentication.md#saml-requirements)

1. 为 Client VPN 端点创建授权规则，以允许指定的组访问网络的全部或某个部分。有关更多信息，请参阅 [AWS Client VPN 授权规则](cvpn-working-rules.md)。

如果您的 Client VPN 端点配置为进行双向身份验证，则无法配置用户组。创建授权规则时，必须向所有用户授予访问权限。要允许特定用户组访问网络的特定部分，您可以创建多个 Client VPN 端点。例如，对于访问网络的每个用户组，请执行以下操作：

1. 为该用户组创建一组服务器以及客户端证书和密钥。有关更多信息，请参阅 [相互认证 AWS Client VPN](mutual.md)。

1. 创建 Client VPN 终端节点。有关更多信息，请参阅 [创建AWS Client VPN终端节点](cvpn-working-endpoint-create.md)。

1. 创建授权规则，以授予对网络全部或某个部分的访问权限。例如，对于管理员使用的 Client VPN 端点，您可以创建授权规则，以授予对整个网络的访问权限。有关更多信息，请参阅 [添加授权规则](cvpn-working-rule-authorize-add.md)。