如何诊断和解决常见的 EC2 实例连接问题

本综合指南可帮助您排查和解决常见的 Amazon EC2 实例网络连接问题。了解如何通过检查安全组 (Security Groups)、网络 ACL (NACLs)、路由表 (Route Tables)、Internet 网关 (Internet Gateways)、NAT 网关 (NAT Gateways) 和 VPC 对等 (VPC peering) 来分步诊断问题。包含实用示例和最佳实践,以确保您的 EC2 实例始终可访问并有效通信。

36 浏览量

诊断和解决常见的 EC2 实例连接问题

连接到您的 Amazon Elastic Compute Cloud (EC2) 实例是管理云基础设施的一项基本任务。然而,网络连接问题可能会出现,阻止您访问实例,或阻止实例之间或与外部资源进行通信。本指南提供了一种系统的方法来诊断和解决常见的 EC2 连接问题,涵盖了必要的网络组件和潜在的配置错误。

了解这些潜在障碍对于维护健康且可访问的 AWS 环境至关重要。通过遵循下面概述的步骤,您可以有效地查明连接问题的来源并实施必要的修复,确保您的 EC2 实例可访问并按预期进行通信。

EC2 连接问题的常见原因

连接问题可能源于 AWS 网络堆栈的各个层。识别根本原因通常需要检查这些元素的组合:

  • 安全组 (Security Groups): 它们作为实例的虚拟防火墙,在实例级别控制入站和出站流量。
  • 网络访问控制列表 (NACLs): NACL 在子网级别运行,为进出子网的流量提供额外的无状态过滤层。
  • 路由表 (Route Tables): 这些表通过指定网络流量的去向,在您的虚拟私有云 (VPC) 内定向网络流量。
  • 实例状态和网络配置: EC2 实例本身的问题,例如实例已停止或网络接口设置不正确。
  • Internet 网关 (IGW) / NAT 网关: 对于需要互联网访问的实例,IGW(用于公有子网)或 NAT 网关(用于私有子网)的配置至关重要。
  • VPC 对等连接 / Transit Gateway: 如果在 VPC 之间进行连接,这些 VPC 间连接服务需要正确配置。

分步诊断和解决

让我们深入了解排查常见连接问题的实用步骤。

1. 验证实例状态和基本网络可达性

在深入复杂的网络配置之前,请确保实例本身处于正常状态并具有基本的网络配置:

  • 实例状态检查: 在 EC2 控制台中,选择您的实例并检查“状态检查”选项卡。确保“系统状态检查”和“实例状态检查”都通过。如果未通过,请调查底层系统或实例问题。
  • 公有 IP / 私有 IP: 确认您的实例具有预期的公有 IP 地址(如果它在公有子网中并需要互联网访问)或私有 IP 地址。
  • DNS 解析: 尝试通过 IP 地址和主机名 ping 外部资源。如果主机名解析失败但 IP 地址 ping 成功,则您的 VPC 中可能存在 DNS 配置问题。

2. 检查安全组

安全组是控制 EC2 实例入站和出站流量的有状态防火墙。它们是连接问题的非常常见来源。

2.1. 入站规则

如果您无法连接您的实例(例如,通过 SSH 或 RDP):

  • 检查附加到 EC2 实例的安全组。
  • 验证入站规则: 确保存在允许从您的源 IP 地址或受信任的 IP 范围(例如,0.0.0.0/0 表示任何位置,但请谨慎使用)在所需端口(例如,SSH 的端口 22,RDP 的端口 3389)上流量的入站规则。对于开发或测试,使用您的特定 IP 地址 (<your_ip>/32) 是一种更安全的做法。
  • 示例: 要允许从您的 IP 地址进行 SSH 访问:
    类型:SSH 协议:TCP 端口范围:22 源:<your_ip>/32

2.2. 出站规则

如果您的实例无法访问外部资源(例如,下载软件包,连接到其他 AWS 服务):

  • 检查附加到 EC2 实例的安全组。
  • 验证出站规则: 默认情况下,安全组允许所有出站流量。如果已创建自定义出站规则,请确保它们允许必要的流量流向您的目标端口和 IP。
  • 示例: 要允许所有出站流量:
    类型:所有流量 协议:所有 端口范围:所有 目标:0.0.0.0/0

3. 调查网络访问控制列表 (NACL)

NACL 是在子网级别运行的无状态防火墙。它们在流量到达安全组或实例之前对其进行过滤。

  • 识别与您的实例子网关联的 NACL。
  • 检查入站规则: NACL 按照规则编号顺序进行评估。确保存在允许从源 IP 在所需端口上进行流量的入站规则。
  • 检查出站规则: 同样,验证出站规则是否允许流量流向目标。
  • 无状态特性: 请记住,NACL 是无状态的。这意味着您需要同时定义入站出站规则,才能使流量双向流动。例如,如果您允许入站 SSH(端口 22),则还必须允许在临时端口(通常为 1024-65535)上进行出站流量,以便响应能够返回。
  • 规则编号: 规则编号越低,越先进行评估。请谨慎使用显式拒绝规则(例如,规则 100 拒绝特定流量)和允许规则(例如,规则 200 允许更广泛的流量)。

4. 审查路由表

路由表决定了网络流量从您的子网流向何处。不正确的路由可能会阻止流量到达其目的地。

  • 找到与您的实例子网关联的路由表。
  • 检查默认路由: 对于公有子网中的实例,要访问互联网,必须有一个指向 Internet 网关 (IGW) 的 0.0.0.0/0 路由。
    目标 | 目标 ----------------|-------- 10.0.0.0/16 | 本地 0.0.0.0/0 | igw-xxxxxxxxxxxxxxxxx
  • 私有子网和 NAT 网关: 对于私有子网中的实例,要访问互联网,该子网的路由表需要有一个指向 NAT 网关或 NAT 实例的 0.0.0.0/0 路由。
    目标 | 目标 ----------------|-------- 10.0.0.0/16 | 本地 0.0.0.0/0 | nat-xxxxxxxxxxxxxxxxx
  • VPC 对等连接 / VPN: 如果您的实例需要与另一个 VPC 或本地资源通信,请确保存在这些 CIDR 块的相应路由并指向正确的对等连接或 VPN 网关。

5. 排查 Internet 网关 (IGW) 和 NAT 网关连接问题

  • Internet 网关 (IGW):

    • 确保 IGW 已创建并附加到您的 VPC。
    • 验证您的公有子网的路由表是否有一个指向 IGW 的 0.0.0.0/0 路由。
    • 确认您的实例已分配公有 IP 地址或弹性 IP 地址。
    • 安全组和 NACL 规则必须允许 0.0.0.0/0 的入站/出站流量以实现互联网访问。
  • NAT 网关:

    • 确保 NAT 网关已创建并位于公有子网中。
    • 验证 NAT 网关是否已关联弹性 IP 地址。
    • 确认您的私有子网的路由表是否有一个指向 NAT 网关的 0.0.0.0/0 路由。
    • 安全组和 NACL 规则必须允许从您的私有子网到 NAT 网关以及出站到互联网的流量。

6. VPC 对等连接和 Transit Gateway

如果您遇到 VPC 之间的连接问题:

  • VPC 对等连接:
    • 确保对等连接处于活动状态并已被两个 VPC 接受。
    • 验证两个 VPC 中的路由表都已添加路由,以允许流量流向对等 VPC 的 CIDR 块。
    • 确保两个 VPC 中的安全组和 NACL 都允许在必要的 IP 范围之间进行流量。
  • Transit Gateway:
    • 确认 Transit Gateway 已创建并已附加相关的 VPC。
    • 检查 Transit Gateway 路由表,确保它们在 VPC 附件之间正确路由流量。
    • 验证每个 VPC 内的路由表是否也有指向 Transit Gateway 的路由,用于流向其他 VPC 的流量。
    • 每个 VPC 内的安全组和 NACL 必须允许跨 VPC 流量。

7. 使用 AWS 网络可达性工具

AWS 提供工具来帮助诊断网络问题:

  • VPC 可达性分析器: 此工具允许您分析 VPC 内部或跨 VPC 的两个端点之间的可达性。您可以模拟流量流并识别由于安全组、NACL、路由表或其他网络配置导致的路径故障。您可以在 VPC 控制台的“网络可达性”下找到它。
  • VPC 流日志: 虽然不能直接诊断连接故障,但 VPC 流日志会捕获有关 VPC 中网络接口的入站和出站 IP 流量的信息。分析这些日志可以揭示被阻止或意外流量的模式,帮助您识别安全组或 NACL 中的错误配置。

8. 其他潜在问题

  • 弹性网络接口 (ENI): 确保 ENI 已附加到实例并配置正确。
  • 子网的路由表关联: 验证子网是否与其预期的路由表正确关联。
  • DNS 配置: 如果使用自定义 DNS,请确保它解析正确。对于默认 VPC DNS,请检查您的 VPC 是否启用了 DNS 解析。
  • 代理服务器: 如果您的实例配置为使用代理,请确保代理本身可访问并配置正确。

预防连接问题的最佳实践

  • 最小权限: 配置安全组和 NACL 时,使用最少的必要权限。除非绝对需要并受其他方式保护,否则避免对敏感端口使用 0.0.0.0/0
  • 标记: 持续标记您的网络资源(VPC、子网、安全组、路由表),以便轻松识别它们的用途和关联实例。
  • 文档: 维护清晰的网络拓扑、IP 地址方案和安全规则文档。
  • 定期审计: 定期审查您的安全组和 NACL 规则,以确保它们仍然相关和安全。
  • 利用 AWS 工具: 熟悉 VPC 可达性分析器和 VPC 流日志,以进行主动监控和故障排除。

总结

诊断 EC2 实例连接问题需要一种有条不紊的方法,系统地检查 AWS 网络堆栈的每一层。通过理解和验证安全组、NACL、路由表和网关配置,您可以有效地识别和解决大多数常见的连接问题。利用 VPC 可达性分析器和 VPC 流日志等工具可以进一步简化故障排除过程,并有助于维护一个健壮且可访问的云环境。