AWS Client VPN 的 IPv6 注意事项 - AWS Client VPN

AWS Client VPN 的 IPv6 注意事项

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

IPv6 支持的关键组成部分

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

端点 IP 地址类型

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

流量 IP 地址类型

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

IPv6 客户端 CIDR 分配

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

兼容性要求

IPv6 和双堆栈端点依赖于用户设备和互联网服务提供商(ISP):

  • 运行 CVPN 客户端的用户设备必须支持所需的 IP 配置,如下面的兼容性表所示。

  • ISP 必须支持所需的 IP 配置才能使连接正常运行。

  • 对于 IPv6 或双堆栈流量,关联的 VPC 子网必须具有 IPv6 或双堆栈 CIDR 范围。

DNS 支持

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

限制

以下是 IPv6 的限制:

  • IPv6 客户端不支持客户端到客户端(C2C)通信。如果 IPv6 客户端尝试与其他 IPv6 客户端通信,流量将被丢弃。

IPv6 客户端路由强制执行

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 客户端路由强制执行

IPv6 泄漏防护(遗留信息)

对于不使用原生 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:00002fff: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:00000100:0000:0000:0000:ffff:ffff:ffff:ffff)或 fc00::/7(从 fc00:0000:0000:0000:0000:0000:0000:0000fdff: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 成功,并且您能够在以全通道模式连接时访问公共站点,则可能需要执行进一步的故障排除。还有一些公开提供的工具可用。