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: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 成功,并且您能够在以全通道模式连接时访问公共站点,则可能需要执行进一步的故障排除。还有一些公开提供的工具可用。