故障排除 AWS Client VPN:与 VPC 的隧道连接问题 - AWS Client VPN

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

故障排除 AWS Client VPN:与 VPC 的隧道连接问题

当您的 AWS Client VPN 连接遇到连接问题时,请按照这种系统的故障排除方法来识别并解决问题。本节提供了诊断远程客户端与 Amazon VPC 资源之间常见的 Client VPN 连接问题的 step-by-step程序。

网络连接先决条件

在对 Client VPN 连接进行故障排除之前,请验证以下网络先决条件:

  • 确保 Client VPN 端点子网具有互联网连接(通过 Internet Gateway 或 NAT 网关)。

  • 验证 Client VPN 终端节点是否与不同可用区域中的子网相关联,以实现高可用性。

  • 检查 VPC 是否有足够的 IP 地址空间并且与客户端 CIDR 块没有冲突。

  • 确认目标子网具有正确的路由表关联。

检查 Client VPN 端点状态

首先,验证您的 Client VPN 端点是否处于正确的状态:

  1. 使用 AWS CLI 来检查 Client VPN 终端节点状态:

    aws ec2 describe-client-vpn-endpoints --region your-region
  2. 在输出中查找端点状态。状态应该是available

  3. 验证终端节点是否关联了目标网络(子网)。

  4. 如果状态不是available,请检查是否存在任何可能表明配置问题的错误消息或待处理状态。

验证客户端连接

检查与您的客户端 VPN 终端节点的客户端连接状态:

  1. 检查活跃的客户端连接:

    aws ec2 describe-client-vpn-connections --client-vpn-endpoint-id cvpn-endpoint-id --region your-region
  2. 查看连接状态和输出中的所有错误消息。

  3. 检查客户端身份验证日志中是否有失败的身份验证尝试。

  4. 确认客户端正在从配置的客户端 CIDR 块接收 IP 地址。

注意

如果客户端无法连接,则可能是身份验证配置、授权规则或网络连接出现问题。

验证客户端身份验证

身份验证问题是 Client VPN 连接问题的常见原因:

  • 对于相互身份验证,请确保客户端证书有效且未过期。

  • 要进行活动目录身份验证,请验证用户凭据和域连接。

  • 对于基于 SAML 的联合身份验证,请检查 IdP 配置和用户权限。

  • 查看身份验证登录 CloudWatch 以获取详细的错误信息。

  • 验证在端点上配置的身份验证方法是否与客户端配置相匹配。

查看授权规则

授权规则控制客户端可以访问哪些网络资源:

  1. 列出当前的授权规则:

    aws ec2 describe-client-vpn-authorization-rules --client-vpn-endpoint-id cvpn-endpoint-id --region your-region
  2. 验证是否存在适用于客户端需要访问的目标网络的规则。

  3. 检查规则是否指定了正确的 Active Directory 组(如果使用 AD 身份验证)。

  4. 确保授权规则处于active状态。

验证 Client VPN 路由

正确的路由配置对于 Client VPN 连接至关重要:

  1. 检查 Client VPN 终端节点路由:

    aws ec2 describe-client-vpn-routes --client-vpn-endpoint-id cvpn-endpoint-id --region your-region
  2. 验证是否存在客户端需要访问的目标网络的路由。

  3. 检查 Amazon VPC 路由表,确保返回流量可以到达客户端 VPN 终端节点:

    aws ec2 describe-route-tables --filters "Name=vpc-id,Values=vpc-id" --region your-region
  4. 验证目标网络关联的配置是否正确。

验证安全组和网络 ACLs

安全组和网络 ACLs 可以阻止 Client VPN 流量:

  1. 检查安全组中是否有目标 EC2 实例:

    aws ec2 describe-security-groups --group-ids sg-xxxxxxxxx --region your-region
  2. 验证入站规则允许来自 Client VPN CIDR 区块的流量:

    • 来自 Client VPN 的 SSH(端口 22)CIDR:10.0.0.0/16

    • 来自 Client VPN 的 HTTP(端口 80)CIDR:10.0.0.0/16

    • 来自 Client VPN 的 HTTPS(端口 443)CIDR:10.0.0.0/16

    • 根据需要自定义应用程序端口

  3. 对于 Client VPN 端点安全组(如果适用),请确保它允许:

    • 来自 0.0.0.0/0 的 UDP 端口 443 (OpenVPN)

    • 所有出站到 VPC CIDR 块的流量

  4. 检查网络 ACLs 是否没有阻塞流量。网络 ACLs 是无状态的,因此必须配置入站和出站规则。

  5. 验证您要发送的特定流量的入站和出站规则。

测试客户端连接

测试从 Client VPN 客户端到 Amazon VPC 资源的连接:

  1. 通过连接的 Client VPN 客户端,测试与 Amazon VPC 资源的连接:

    ping vpc-resource-ip traceroute vpc-resource-ip
  2. 测试特定的应用程序连接:

    telnet vpc-resource-ip port
  3. 如果使用私有 DNS 名称,请验证 DNS 解析:

    nslookup private-dns-name
  4. 如果启用了分割隧道,则测试与 Internet 资源的连接。

诊断客户端设备

在客户端设备上执行以下检查:

  1. 验证客户端配置文件 (.ovpn) 包含正确的设置:

    • 正确的服务器端点 URL

    • 有效的客户证书和私钥

    • 正确的身份验证方法配置

  2. 检查客户端日志中是否存在连接错误:

    • Windows:事件查看器 → 应用程序和服务日志 → OpenVPN

    • macOS:主机应用程序,搜索 “Tunnelblick” 或 “OpenVPN”

    • Linux:/var/log/openvpn/或 systemd 日记

  3. 测试来自客户端的基本网络连接:

    ping 8.8.8.8 nslookup cvpn-endpoint-id.cvpn.region.amazonaws.com

解决 DNS 解析问题

DNS 问题可能会阻止使用私有 DNS 名称访问资源:

  1. 检查 Client VPN 终端节点中是否配置了 DNS 服务器:

    aws ec2 describe-client-vpn-endpoints --client-vpn-endpoint-ids cvpn-endpoint-id --query 'ClientVpnEndpoints[0].DnsServers'
  2. 测试来自客户端的 DNS 解析:

    nslookup private-resource.internal dig private-resource.internal
  3. 如果使用自定义 DNS 解析,请验证 Route 53 解析器规则。

  4. 检查安全组是否允许从 Client VPN CIDR 到 DNS 服务器的 DNS 流量(UDP/TCP 端口 53)。

排除性能故障

解决 Client VPN 连接的性能问题:

  • 使用 ingress/egress 字节 CloudWatch 指标监控带宽利用率。

  • 使用来自客户端的持续 ping 测试来检查数据包丢失。

  • 确认 Client VPN 端点未达到连接限制。

  • 考虑使用多个 Client VPN 端点进行负载分配。

  • 在不同的客户地点进行测试,以确定区域绩效问题。

监控 Client VPN 指标

使用 CloudWatch以下方法监控 Client VPN 端点指标:

  1. 检查活动连接指标:

    aws cloudwatch get-metric-statistics \ --namespace AWS/ClientVPN \ --metric-name ActiveConnectionsCount \ --dimensions Name=Endpoint,Value=cvpn-endpoint-id \ --start-time start-time \ --end-time end-time \ --period 300 \ --statistics Average
  2. 查看身份验证失败指标:

    aws cloudwatch get-metric-statistics \ --namespace AWS/ClientVPN \ --metric-name AuthenticationFailures \ --dimensions Name=Endpoint,Value=cvpn-endpoint-id \ --start-time start-time \ --end-time end-time \ --period 300 \ --statistics Sum
  3. 查看其他可用指标,例如入口和出口字节和数据包。

查看 Client VPN 日志

Client VPN 连接日志提供有关连接尝试和错误的详细信息:

  • 如果尚未配置,请启用 Client VPN 连接日志。

  • 查看 CloudWatch 日志以了解连接尝试、身份验证失败和授权错误。

  • 查找指明连接问题根本原因的特定错误代码和消息。

  • 检查失败的连接中是否存在可能表明存在配置问题的模式。

常见问题和解决方案

可能影响 Client VPN 连接的常见问题:

身份验证失败次数

客户端证书已过期或无效,或者活动目录凭据不正确。验证身份验证配置和凭证有效性。

缺少授权规则

由于授权规则缺失或不正确,客户端无法访问目标网络。为所需网络添加适当的授权规则。

分割隧道问题

由于分割隧道配置,流量路由不正确。根据需要查看和调整分割隧道设置。

客户端 IP 池耗尽

客户端 CIDR 块中没有可用的 IP 地址。扩大客户端 CIDR 范围或断开未使用的客户端。

MTU 问题

由于 MTU 大小限制,大型数据包被丢弃。尝试将 MTU 设置为 1436 字节或在客户端设备上启用 Path MTU 发现。

DNS 解析问题

客户端无法解析私有 DNS 名称。验证 DNS 服务器配置并确保允许 DNS 流量通过安全组。

重叠的 IP 范围

客户端 CIDR 块与本地网络范围冲突。检查并解决客户端 CIDR 和本地网络之间是否存在任何重叠的 IP 地址范围。

TLS 握手失败

TLS 协商期间连接失败。检查证书有效性,确保密码套件正确,并验证客户端和服务器证书的配置是否正确。

路径传播延迟

客户端无法立即使用新路由。更改 Client VPN 路由后,留出 1-2 分钟的时间进行路由传播。

连接中断/不稳定

频繁断开连接或连接不稳定。检查客户端设备上的网络拥塞、防火墙干扰或电源管理设置。