

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

# AWS Client VPN 的 IPv6 注意事项
<a name="ipv6-considerations"></a>

除了现有的 IPv4 功能外，Client VPN 现在还支持原生 IPv6 连接。您可以创建仅 IPv6、仅 IPv4 或双堆栈（IPv4 和 IPv6）端点，以满足联网要求。

## IPv6 支持的关键组成部分
<a name="ipv6-key-components"></a>

在 Client VPN 中使用 IPv6 时，有两个关键配置参数：

端点 IP 地址类型  
此参数定义端点管理 IP 类型，该类型决定为端点预置的 EC2 实例的类型。此 IP 类型用于管理外部 VPN 隧道流量（通过公共互联网在 OpenVPN 客户端和服务器之间流动的加密流量）。

流量 IP 地址类型  
此参数定义流经 VPN 隧道的流量类型。此 IP 类型用于管理内部加密流量（实际有效载荷）、客户端 CIDR 范围、子网关联、路由和每个端点的规则。

## IPv6 客户端 CIDR 分配
<a name="ipv6-client-cidr"></a>

对于 IPv6 客户端 CIDR，您无需指定 CIDR 数据块。Amazon 自动分配 IPv6 客户端 CIDR 范围。这种自动分配允许对 IPv6 隧道流量进行无源网络地址转换，从而增强对连接用户的 IPv6 地址的可见性。

## 兼容性要求
<a name="ipv6-compatibility"></a>

IPv6 和双堆栈端点依赖于用户设备和互联网服务提供商（ISP）：
+ 运行 CVPN 客户端的用户设备必须支持所需的 IP 配置，如下面的兼容性表所示。
+ ISP 必须支持所需的 IP 配置才能使连接正常运行。
+ 对于 IPv6 或双堆栈流量，关联的 VPC 子网必须具有 IPv6 或双堆栈 CIDR 范围。

## DNS 支持
<a name="ipv6-dns"></a>

所有类型的端点（IPv4、IPv6 和双堆栈）都支持 DNS。对于 IPv6 端点，您可以使用 `--dns-server-ipv6` 参数配置 IPv6 DNS 服务器。服务端和客户端都支持 AAAA DNS 记录。

## 限制
<a name="ipv6-feature-limitations"></a>

以下是 IPv6 的限制：
+ IPv6 客户端不支持客户端到客户端（C2C）通信。如果 IPv6 客户端尝试与其他 IPv6 客户端通信，流量将被丢弃。

## IPv6 客户端路由强制执行
<a name="ipv6-cre"></a>

Client VPN 现在支持针对 IPv6 流量实施客户端路由强制执行。此功能有助于确保来自已连接客户端的 IPv6 网络流量遵循管理员定义的路由，并且不会无意中发送到 VPN 隧道之外。

IPv6 客户端路由强制执行支持的关键方面：
+ 现有 `ClientRouteEnforcementOptions.enforced` 标志为 IPv4 和 IPv6 堆栈启用 CRE。
+ IPv6 客户端路由强制执行不包括某些 IPv6 范围，以维护关键的 IPv6 功能：
  + `::1/128` - 为环回预留
  + `fe80::/10` - 为链路本地地址预留
  + `ff00::/8` - 为组播预留
+ IPv6 客户端路由强制执行在 Windows、macOS 和 Ubuntu 上的 AWS VPN Client 版本 5.3.0 及更高版本中可用。

有关 CRE 的更多详细信息（包括如何启用和配置），请参阅 [AWS Client VPN 客户端路由强制执行](cvpn-working-cre.md)。

## IPv6 泄漏防护（遗留信息）
<a name="ipv6-leak-prevention"></a>

对于不使用原生 IPv6 支持的旧配置，您可能仍需要防止 IPv6 泄露。如果启用 IPv4 和 IPv6 并连接到 VPN，但 VPN 没有将 IPv6 流量路由到其隧道，则可能会发生 IPv6 泄漏。在这种情况下，当连接到启用了 IPv6 的目标时，您实际上仍然使用 ISP 提供的 IPv6 地址进行连接。它会泄露您的真实 IPv6 地址。下面的说明说明了如何将 IPv6 流量路由到 VPN 隧道。

应将以下 IPv6 相关指令添加到 Client VPN 配置文件中，以防止 IPv6 泄漏：

```
ifconfig-ipv6 arg0 arg1
route-ipv6 arg0
```

举个例子：

```
ifconfig-ipv6 fd15:53b6:dead::2 fd15:53b6:dead::1
route-ipv6 2000::/4
```

在本例中，`ifconfig-ipv6 fd15:53b6:dead::2 fd15:53b6:dead::1` 会将本地隧道设备 IPv6 地址设置为 `fd15:53b6:dead::2`，并将远程 VPN 端点 IPv6 地址设置为 `fd15:53b6:dead::1`。

下一个命令中，`route-ipv6 2000::/4` 将从 `2000:0000:0000:0000:0000:0000:0000:0000` 到 `2fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff` 路由 IPv6 地址到 VPN 连接。

**注意**  
例如，对于 Windows 中的“TAP”设备路由，`ifconfig-ipv6` 的第二个参数将被用作 `--route-ipv6` 的路由目标。

企业应配置 `ifconfig-ipv6` 本身的两个参数，并且可以使用 `100::/64`（从 `0100:0000:0000:0000:0000:0000:0000:0000` 到 `0100:0000:0000:0000:ffff:ffff:ffff:ffff`）或 `fc00::/7`（从 `fc00:0000:0000:0000:0000:0000:0000:0000` 到 `fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff`)中的地址。`100::/64` 是仅丢弃的地址块，`fc00::/7` 为唯一本地。

另一个示例是：

```
ifconfig-ipv6 fd15:53b6:dead::2 fd15:53b6:dead::1
route-ipv6 2000::/3
route-ipv6 fc00::/7
```

在此示例中，配置将当前分配的所有 IPv6 流量路由到 VPN 连接。

**验证**  
您的组织可能会有自己的测试。基本验证是设置全通道 VPN 连接，然后使用 IPv6 地址对 IPv6 服务器运行 ping6。服务器的 IPv6 地址应在由 `route-ipv6` 命令指定的范围中。此 ping 测试将失败。但是，如果以后将 IPv6 支持添加到 Client VPN 服务，则这可能会发生变化。如果 ping 成功，并且您能够在以全通道模式连接时访问公共站点，则可能需要执行进一步的故障排除。还有一些公开提供的工具可用。