AWS Client VPN 疑难解答 - AWS Client VPN

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

AWS Client VPN 疑难解答

以下主题可帮助您排查在客户端 VPN 终端节点中可能遇到的问题。

有关客户端用于连接到客户端 VPN 的基于 OpenVPN 的软件故障排查的更多信息,请参阅 AWS Client VPN 用户指南中的客户端 VPN 连接故障排查

无法解析客户端 VPN 终端节点 DNS 名称

问题

我无法解析客户端 VPN 终端节点的 DNS 名称。

原因

客户端 VPN 终端节点配置文件包含一个名为 remote-random-hostname 的参数。此参数强制客户端在 DNS 名称前添加随机字符串以防止 DNS 缓存。某些客户端无法识别此参数,因此它们不会在 DNS 名称的前面添加所需的随机字符串。

解决方案

使用首选文本编辑器打开 Client VPN 终端节点配置文件。找到指定 Client VPN 终端节点 DNS 名称的行,并在该行的前面添加随机字符串,以使格式成为 random_string.displayed_DNS_name。例如:

  • 原始 DNS 名称:cvpn-endpoint-0102bc4c2eEXAMPLE.clientvpn.us-west-2.amazonaws.com

  • 修改的 DNS 名称:asdfa.cvpn-endpoint-0102bc4c2eEXAMPLE.clientvpn.us-west-2.amazonaws.com

未在子网之间分割流量

问题

我正在尝试在两个子网之间分割网络流量。私有流量将通过私有子网路由,而 Internet 流量将通过公有子网路由。但仅使用了一个路由,即便我已将两个路由添加到客户端 VPN 终端节点路由表中也是如此。

原因

虽然可以将多个子网与客户端 VPN 终端节点关联,但每个可用区只能关联一个子网。多子网关联旨在为客户端提供高可用性和可用区冗余。但您无法通过客户端 VPN 选择性地分割与客户端 VPN 终端节点关联的各个子网之间的流量。

客户端根据 DNS 轮询算法连接到客户端 VPN 终端节点。这意味着当客户端建立连接时,其流量可以通过任何关联的子网路由。因此,如果客户端登录没有所需路由条目的关联子网,它们可能会遇到连接问题。

例如,假设您配置了以下子网关联和路由:

  • 子网关联

    • 关联 1:子网 A (us-east-1a)

    • 关联 2:子网 B (us-east-1b)

  • 路线

    • 路由 1:10.0.0.0/16 路由到子网 A

    • 路由 2:172.31.0.0/16 路由到子网 B

在此示例中,连接时登录子网 A 的客户端无法访问路由 2,而连接时登录子网 B 的客户端无法访问路由 1。

解决方案

验证客户端 VPN 终端节点是否具有针对每个关联网络的目标的相同路由条目。这将确保客户端有权访问所有路由,而不管其流量通过哪个子网路由。

Active Directory 组的授权规则未按预期工作

问题

我已为我的 Active Directory 组配置授权规则,但这些规则未按预期工作。我已添加针对 0.0.0.0/0 的授权规则来对所有网络的流量进行授权,但人无法对特定目标 CIDR 的流量进行授权。

原因

在网络 CIDR 上为授权规则建立索引。授权规则必须向 Active Directory 组授予对特定网络 CIDR 的访问权限。针对 0.0.0.0/0 的授权规则将作为特殊情况处理,并在最后进行评估,无论授权规则的创建顺序如何。

例如,假设您按以下顺序创建五个授权规则:

  • 规则 1:组 1 有权访问 10.1.0.0/16

  • 规则 2:组 1 有权访问 0.0.0.0/0

  • 规则 3:组 2 有权访问 0.0.0.0/0

  • 规则 4:组 3 有权访问 0.0.0.0/0

  • 规则 5:组 2 有权访问 172.131.0.0/16

在此示例中,最后评估规则 2、规则 3 和规则 4。组 1 仅有权访问 10.1.0.0/16,组 2仅有权访问 172.131.0.0/16。组 3 无权访问 10.1.0.0/16172.131.0.0/16,但它有权访问所有其他网络。如果删除规则 1 和规则 5,则所有三个组都有权访问所有网络。

在评估授权规则时,客户端 VPN 会使用最长前缀匹配。有关更多详细信息,请参阅 Amazon VPC 用户指南中的路由优先级

解决方案

验证您创建的授权规则是否明确向 Active Directory 组授予对特定网络 CIDR 的访问权限。如果添加针对 0.0.0.0/0 的授权规则,请记住此规则将最后进行评估,并且以前的授权规则可能会限制其授予访问权限的网络。

客户端无法访问对等 VPC、Amazon S3 或 Internet

问题

我已正确配置客户端 VPN 终端节点路由,但我的客户端无法访问对等 VPC、Amazon S3 或 Internet。

解决方案

以下流程图包含诊断 Internet、对等 VPC 和 Amazon S3 连接问题的步骤。

客户端 VPN 故障排除步骤
  1. 要访问 Internet,请添加针对 0.0.0.0/0 的授权规则。

    要访问对等 VPC,请添加针对 VPC 的 IPv4 CIDR 范围的授权规则。

    要访问 S3,请指定 Amazon S3 终端节点的 IP 地址。

  2. 检查您是否能够解析 DNS 名称。

    如果您无法解析 DNS 名称,请验证您是否已为客户端 VPN 终端节点指定 DNS 服务器。如果您管理自己的 DNS 服务器,请指定其 IP 地址。验证是否能够从 VPC 访问 DNS 服务器。

    如果您不确定要为 DNS 服务器指定哪个 IP 地址,请在 VPC 中的 .2 IP 地址处指定 VPC DNS 解析程序。

  3. 对于 Internet 访问,请检查您是否能够 ping 公有 IP 地址或公共网站,例如 amazon.com。如果您未收到响应,请确保关联子网的路由表具有针对互联网网关或 NAT 网关的默认路由。如果路由已就绪,请确认关联子网没有阻止入站和出站流量的网络访问控制列表规则。

    如果您无法访问对等 VPC,请验证关联子网的路由表是否具有对等 VPC 的路由条目。

    如果您无法访问 Amazon S3,请验证关联子网的路由表是否具有网关 VPC 终端节点的路由条目。

  4. 检查您是否能够对负载大于 1400 字节的公有 IP 地址执行 ping 操作。使用以下命令之一:

    • Windows

      C:\> ping 8.8.8.8 -l 1480 -f
    • Linux

      $ ping -s 1480 8.8.8.8 -M do

    如果您无法对负载大于 1400 字节的 IP 地址执行 ping 操作,请使用首选文本编辑器打开客户端 VPN 终端节点 .ovpn 配置文件,并添加以下内容。

    mssfix 1328

对对等 VPC、Amazon S3 或 Internet 的访问是间歇性的

问题

我在连接到对等 VPC、Amazon S3 或 Internet 时遇到间歇性连接问题,但对关联子网的访问未受到影响。我需要先断开连接,然后重新连接才能解决连接问题。

原因

客户端根据 DNS 轮询算法连接到客户端 VPN 终端节点。这意味着当客户端建立连接时,其流量可以通过任何关联的子网路由。因此,如果客户端登录没有所需路由条目的关联子网,它们可能会遇到连接问题。

解决方案

验证客户端 VPN 终端节点是否具有针对每个关联网络的目标的相同路由条目。这将确保客户端有权访问所有路由,而不管其流量通过哪个关联子网路由。

例如,假设您的客户端 VPN 终端节点有三个关联的子网(子网 A、子网 B 和子网 C),并且您希望为您的客户端启用 Internet 访问。为此,您必须添加三个 0.0.0.0/0 路由 - 每个关联子网各一个路由:

  • 路由 1:0.0.0.0/0(针对子网 A)

  • 路由 2:0.0.0.0/0(针对子网 B)

  • 路由 3:0.0.0.0/0(针对子网 C)

客户端软件返回 TLS 错误

问题

我曾经能够成功地将我的客户端连接到客户端 VPN,但现在基于 OpenVPN 的客户端在尝试连接时返回以下错误之一:

TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity) TLS Error: TLS handshake failed
Connection failed because of a TLS handshake error. Contact your IT administrator.
可能的原因 1

如果您使用的是双向身份验证,并且已导入一个客户端证书吊销列表,则该客户端证书吊销列表可能已过期。在身份验证阶段,客户端 VPN 终端节点会根据您导入的客户端证书吊销列表检查客户端证书。如果客户端证书吊销列表已过期,则无法连接到客户端 VPN 终端节点。

解决方案 1

使用 OpenSSL 工具检查客户端证书吊销列表的到期日期。

$ openssl crl -in path_to_crl_pem_file -noout -nextupdate

输出将显示到期日期和时间。如果客户端证书吊销列表已过期,则必须创建一个新的客户端证书吊销列表并将其导入客户端 VPN 终端节点。有关更多信息,请参阅客户端证书吊销列表

可能的原因 2

用于客户端 VPN 端点的服务器证书已过期。

解决方案 2

在 AWS Certificate Manager 控制台中或使用 AWS CLI 检查服务器证书的状态。如果服务器证书已过期,请创建新证书并将其上传到 ACM。有关使用 OpenVPN easy-rsa 实用程序生成服务器和客户端证书和密钥并将其导入 ACM 的详细步骤,请参阅双向身份验证

或者,客户端用于连接到客户端 VPN 的基于 OpenVPN 的软件可能出现了问题。有关基于 OpenVPN 的软件故障排查的更多信息,请参阅AWS Client VPN 用户指南中的客户端 VPN 连接故障排查

客户端软件返回了用户名和密码错误(Active Directory 身份验证)

问题

我对我的客户端 VPN 终端节点使用的是 Active Directory 身份验证,并且我曾经能够将我的客户端成功连接到客户端 VPN。但是现在,客户端收到了无效用户名和密码错误。

可能的原因

如果您使用的是 Active Directory 身份验证,并且在分发客户端配置文件后启用了 Multi-Factor Authentication (MFA),则该文件不包含用于提示用户输入 MFA 代码的必要信息。系统提示用户仅输入其用户名和密码,但身份验证失败。

解决方案

下载新的客户端配置文件并将它分发给您的客户端。确认此新文件包含以下行。

static-challenge "Enter MFA code " 1

有关更多信息,请参阅导出和配置客户端配置文件。测试 Active Directory 的 MFA 配置,而无需使用客户端 VPN 终端节点来验证 MFA 是否按预期工作。

客户端软件返回用户名和密码错误(联合身份验证)

问题

尝试使用联合身份验证的用户名和密码登录,但出现错误 “收到的凭据不正确。请联系您的 IT 管理员。”

原因

此错误可能是由于 IdP 的 SAML 响应中未包含至少一个属性造成的。

解决方案

确保来自 IdP 的 SAML 响应中至少包含一个属性。请参阅基于 SAML 的 IdP 配置资源了解更多信息。

客户端无法连接(双向身份验证)

问题

我对我的客户端 VPN 终端节点使用了双向身份验证。客户端收到 TLS 密钥协商失败错误和超时错误。

可能的原因

向客户端提供的配置文件不包含客户端证书和客户端私有密钥,或者证书和密钥不正确。

解决方案

确保该配置文件包含正确的客户端证书和密钥。如有必要,修复配置文件并将它重新分发给您的客户端。有关更多信息,请参阅导出和配置客户端配置文件

客户端返回的凭证超过最大大小错误(联合身份验证)

问题

我对我的客户端 VPN 终端节点使用了联合身份验证。当客户端在基于 SAML 的身份提供商 (IdP) 浏览器窗口中输入其用户名和密码时,收到的凭证超过支持的最大大小错误。

原因

IdP 返回的 SAML 响应超出了支持的最大大小。有关更多信息,请参阅基于 SAML 的联合身份验证的要求和注意事项

解决方案

尝试在 IdP 中减少用户所属的组数,然后再次尝试连接。

客户端未打开浏览器(联合身份验证)

问题

我对我的客户端 VPN 终端节点使用了联合身份验证。当客户端尝试连接到终端节点时,客户端软件没有打开浏览器窗口,而是改为显示用户名和密码弹出窗口。

原因

提供给客户端的配置文件不包含 auth-federate 标记。

解决方案

导出最新的配置文件,将其导入 AWS 提供的客户端,然后重试连接。

客户端返回没有可用端口错误(联合身份验证)

问题

我对我的客户端 VPN 终端节点使用了联合身份验证。当客户端尝试连接到终端节点时,客户端软件返回以下错误:

The authentication flow could not be initiated. There are no available ports.
原因

AWS 提供的客户端需要使用 TCP 端口 35001 来完成身份验证。有关更多信息,请参阅基于 SAML 的联合身份验证的要求和注意事项

解决方案

验证客户端的设备未阻止 TCP 端口 35001,或者正在将其用于其他进程。

由于 IP 不匹配而终止 VPN 连接

问题

VPN 连接已终止,客户端软件返回以下错误:"The VPN connection is being terminated due to a discrepancy between the IP address of the connected server and the expected VPN server IP. Please contact your network administrator for assistance in resolving this issue."

原因

AWS 提供的客户端要求其连接的 IP 地址与支持 Client VPN 端点的 VPN 服务器的 IP 相匹配。有关更多信息,请参阅的规则和最佳实践 AWS Client VPN

解决方案

确认 AWS 提供的客户端和 Client VPN 端点之间没有 DNS 代理。

将流量路由到 LAN 的运行不如预期

问题

当 LAN IP 地址范围不在以下标准私有 IP 地址范围之内时,尝试将流量路由到局域网 (LAN) 时无法按预期工作:10.0.0.0/8172.16.0.0/12192.168.0.0/16、或169.254.0.0/16

原因

如果检测到客户端 LAN 地址范围超出上述标准范围,则 Client VPN 端点将自动将 OpenVPN 指令 “重定向网关区块-本地” 推送到客户端,强制所有局域网流量进入 VPN。有关更多信息,请参阅的规则和最佳实践 AWS Client VPN

解决方案

如果您需要在 VPN 连接期间访问局域网,建议您使用上面列出的传统地址范围作为局域网。

验证客户端 VPN 终端节点的带宽限制

问题

我需要验证客户端 VPN 终端节点的带宽限制。

原因

吞吐量取决于多个因素,例如,来自您的位置的连接容量,以及计算机上的客户端 VPN 桌面应用程序与 VPC 终端节点之间的网络延迟。每个用户连接还有 10Mbps 的带宽限制。

解决方案

运行以下命令以验证带宽。

sudo iperf3 -s -V

在客户端上:

sudo iperf -c server IP address -p port -w 512k -P 60