

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

# 使用规则和最佳实践 AWS Client VPN
<a name="what-is-best-practices"></a>

以下各节介绍了使用 AWS Client VPN的规则和最佳实践：

**Topics**
+ [联网和带宽要求](#bp-nw)
+ [子网和 VPC 配置](#bp-subnet)
+ [身份验证和安全](#bp-auth)
+ [连接和 DNS 要求](#bp-dns)
+ [限制和局限性](#bp-limits)

## 联网和带宽要求
<a name="bp-nw"></a>
+ AWS Client VPN 是一项完全托管的服务，可自动扩展以适应额外的用户连接和带宽需求。每个用户连接的最大基准带宽为 50 Mbps。

  您通过 Client VPN 端点连接所体验到的实际带宽可能因多种因素而异。这些因素包括数据包大小、流量构成（TCP/UDP 混合）、中间网络上的网络策略（整形或节流）、互联网条件、特定于应用程序的要求以及并发用户连接的总数。如果您达到最大带宽限制，可通过 AWS Support 请求增加带宽。
+ 客户端 CIDR 范围不能与关联子网所在的 VPC 的本地 CIDR 重叠，也不能与手动添加到 Client VPN 端点的路由表中的任何路由重叠。
+ 客户端 CIDR 范围的块大小必须至少为 /22，但不得大于 /12。
+ 客户端 CIDR 范围中的一部分地址用于支持 Client VPN 端点的可用性模型，无法分配给客户端。因此，我们建议您分配一个 CIDR 块，其中包含的 IP 地址数量是您计划在 Client VPN 端点上支持的最大并发连接数量所需的 IP 地址数量的两倍。
+ 创建 Client VPN 端点后，无法更改客户端 CIDR 范围。
+ Client VPN 支持 IPv4 IPv6、和双栈（两者 IPv4 兼有 IPv6）流量。有关 IPv6 支持的更多详细信息，请参阅[AWS Client VPN 的 IPv6 注意事项IPv6 注意事项](ipv6-considerations.md)。
+ 
  + 源 IP 地址将转换为 Client VPN 端点的 IP 地址。
  + 来自客户端的原始源端口号保持不变。
+ 仅当并发用户连接到同一目标时，Client VPN 才会执行端口地址转换（PAT）。端口转换是自动进行的，并且是支持通过同一 VPN 端点进行多个同时连接所必需的。
  + 对于源 IP 转换，源 IP 地址将转换为 Client VPN 的 IP 地址。
  + 对于单个客户端连接的源端口转换，原始源端口号可能保持不变。
  + 对于连接到同一目标（相同的目标 IP 地址和端口）的多个客户端的源端口转换，Client VPN 将执行端口转换以确保连接的唯一性。

  例如，当两个客户端（客户端 1 和客户端 2）通过 Client VPN 端点连接到相同的目标服务器和端口时：
  + 客户端 1 的原始端口（例如 `9999`）可能会转换为其他端口（例如端口 `4306`）。
  + 客户端 2 的原始端口（例如 `9999`）可能会转换为不同于客户端 1 的唯一端口（例如端口 `63922`）。
+ 对于 IPv6 流量，Client VPN 不执行网络地址转换 (NAT)。这增强了对连接用户 IPv6 地址的可见性。

## 子网和 VPC 配置
<a name="bp-subnet"></a>
+ 与 Client VPN 端点关联的子网必须位于同一 VPC 中。
+ 您无法将同一可用区内的多个子网与一个 Client VPN 终端节点关联。
+ Client VPN 端点不支持专用租赁 VPC 中的子网关联。
+ 对于 IPv6 双栈流量，关联的子网必须具有 IPv6 或双堆栈 CIDR 范围。
+ 对于双堆栈端点，每个可用区无法关联多个子网。

## 身份验证和安全
<a name="bp-auth"></a>
+ 自助服务门户不适用于使用双向身份验证进行身份验证的客户端。
+ 如果对于 Active Directory 禁用了多重身份验证（MFA），则用户密码不能采用以下格式。

  ```
  SCRV1:{{base64_encoded_string}}:{{base64_encoded_string}}
  ```
+ AWS Client VPN 中使用的证书必须符合 [RFC 5280: Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile](https://datatracker.ietf.org/doc/html/rfc5280) 中的规定，包括备忘录第 4.2 节中指定的证书扩展。
+ 带有特殊字符的用户名可能会导致连接错误。
+ 用户名的最大长度为 1024 字节。用户名较长的连接将被拒绝。

## 连接和 DNS 要求
<a name="bp-dns"></a>
+ 不建议使用 IP 地址连接到 Client VPN 端点。由于 Client VPN 是一种托管服务，因此您偶尔会看到 DNS 名称解析到的 IP 地址发生了变化。此外，您还将在 CloudTrail 日志中看到 Client VPN 网络接口已删除并重新创建。我们建议使用提供的 DNS 名称连接到 Client VPN 端点。
+ Client VPN 服务要求客户端连接到的 IP 地址与 Client VPN 端点的 DNS 名称解析到的 IP 相匹配。换句话说，如果您为 Client VPN 终端节点设置了自定义 DNS 记录，然后将流量转发到该端点的 DNS 名称解析到的实际 IP 地址，则此设置将无法使用最近 AWS 提供的客户端。添加此规则是为了缓解服务器IP攻击，如下所述:[TunnelCrack](https://tunnelcrack.mathyvanhoef.com/).
+ 您可以使用 AWS 提供的客户端连接到多个并发 DNS 会话。但是，为了使名称解析正常工作，所有连接的 DNS 服务器都应具有同步记录。
+ Client VPN 服务要求客户端设备的局域网（LAN）IP 地址范围位于以下标准私有 IP 地址范围内：`10.0.0.0/8`、`172.16.0.0/12`、`192.168.0.0/16` 或 `169.254.0.0/16`。如果检测到客户端 LAN 地址范围超出上述范围，Client VPN 端点会将 OpenVPN 指令“redirect-gateway block-local”自动推送到客户端，从而强制所有 LAN 流量进入 VPN。因此，如果您需要在 VPN 连接期间访问 LAN，建议您为 LAN 使用上面列出的常规地址范围。强制执行此规则是为了减少本地网络攻击的机会，如下所述:[TunnelCrack](https://tunnelcrack.mathyvanhoef.com/).
+ 在 Windows 中，当使用全隧道端点时，无论端点的 IP 地址类型（IPv4 IPv6或双堆栈）如何，所有 DNS 流量都将强制通过隧道。要使 DNS 正常工作，必须设置 DNS 服务器且可在隧道内访问该服务器。

## 限制和局限性
<a name="bp-limits"></a>
+ 使用 AWS Client VPN 桌面应用程序时，目前不支持 IP 转发。其它客户端支持 IP 转发。
+ Client VPN 在 AWS Managed Microsoft AD中不支持多区域复制。Client VPN 终端节点必须与 AWS Managed Microsoft AD 资源位于同一区域。
+ 如果有多个用户登录到操作系统，则无法从计算机建立 VPN 连接。
+ Client-to-client IPv6 客户端不支持通信。如果一个 IPv6 客户端尝试与其他 IPv6 客户端通信，流量将被丢弃。
+ IPv6 而双栈端点要求用户设备和互联网服务提供商 (ISPs) 支持相应的 IP 配置。