跳至内容

如何通过我的中转网关排查和解决跨账户连接问题?

3 分钟阅读
0

我的资源无法通过我的中转网关在位于不同 AWS 账户中的虚拟私有云 (VPC) 之间连接。

解决方法

**注意:**拥有中转网关的账户是所有者账户。能够访问中转网关的账户是共享账户。

检查您的中转网关资源共享设置

**注意:**如果您在 AWS Organizations 中有组织,请开启资源共享功能。当您开启资源共享功能后,AWS 会自动共享和接受成员账户之间的中转网关。

完成以下步骤:

  1. 使用所有者账户登录 AWS Resource Access Manager (AWS RAM) 控制台
  2. 在导航窗格中,选择 Shared resources(共享资源)。
  3. 选择您的中转网关。
  4. 检查您是否与正确的账户或组织共享了中转网关。
  5. 确认 Share status(共享状态)为 Associated(已关联)且未显示 Pending acceptance(待接受)。

检查所有者和共享账户中的中转网关连接状态

完成以下步骤:

  1. 打开 Amazon Virtual Private Cloud (Amazon VPC) 控制台
  2. 在所有者和共享账户中,选择导航窗格中的 Transit Gateway Attachments(中转网关连接)。
  3. 验证 Attachment state(连接状态)是否为 Available(可用)。
    **注意:**每个连接到中转网关的账户的连接状态都需要处于 Available(可用)。
  4. 确认连接在每个可用区中使用一个子网进行流量路由。

如果连接状态在共享账户中显示为 Pending acceptance(待接受),请完成以下步骤:

  1. 在共享账户中,选择 Transit gateway attachments(中转网关连接)。
  2. 选择待处理的连接。
  3. 选择 Actions(操作),然后选择 Accept(接受)。

检查路由表设置和路由传播

完成以下步骤:

  1. 使用所有者账户登录 AWS Transit Gateway 控制台
  2. 在导航窗格中,选择 Transit gateway route tables(中转网关路由表)。
  3. 检查每个连接是否与正确的路由表关联。
  4. 确认您的路由表包含指向其他 VPC 的 CIDR 数据块的路由。这些路由既可以是静态的,也可以是动态传播的,并且必须指向每个 VPC 的正确中转网关连接。
  5. (可选)如果您使用安全的 VPC 来检查流量,请确认防火墙和安全设备会放行流量。
  6. 确认源和目标范围不重叠。
    **注意:**中转网关无法路由重叠的 IP 地址范围。

最佳做法是为您的环境创建分段路由表。例如,如果您有开发环境和生产环境,分段路由表可用于隔离这两者之间的流量,因为每个环境都有专属的路由表。

验证 VPC 路由表是否指向中转网关

完成以下步骤:

  1. 打开 Amazon VPC 控制台
  2. 在导航窗格中,选择 Route Tables(路由表)。
  3. 选择与资源的子网关联的路由表。
  4. Routes(路由)选项卡下,验证指向其他 VPC 的 CIDR 数据块的路由是否指向正确的中转网关 ID。

**注意:**确认您的安全组和网络访问控制列表(网络 ACL)允许流量在 VPC 之间流动。

验证安全组和网络 ACL 配置

请执行以下操作:

  • 检查 Amazon Elastic Compute Cloud (Amazon EC2) 安全组是否会放行正确 CIDR 数据块和端口的入站和出站流量。
  • 配置您的安全组,以允许在工作负载之间使用所需的协议。例如,检查 TCP 端口 443 和 TCP 端口 22
  • 检查网络 ACL 是否允许流量在 VPC 之间流动。
  • 检查您的网络 ACL 规则,并确认这些规则不会阻止流向中转网关的流量。

**注意:**网络 ACL 是无状态的。您的网络 ACL 规则中必须同时允许入站和出站流量。

使用 Reachability Analyzer 分析路径

**注意:**要使用 VPC Reachability Analyzer 并分析账户之间的路径,请在 AWS Organizations 中启用可信访问

完成以下步骤:

  1. 打开 AWS Network Manager 控制台
  2. 在导航窗格中,选择 Network Manager
  3. 选择 Reachability Analyzer
  4. 选择 Create and analyze path(创建和分析路径)。
  5. 输入以下信息以选择源路径和目标路径:
    对于 Source account(来源账户),请选择来源账户的账户 ID。
    对于 Source type(来源类型),请选择资源类型。
    对于 Source(来源),请选择特定资源。
    对于 Destination account(目标账户),请选择目标账户的账户 ID。
    对于 Destination type(目标类型),请选择资源类型。
    对于 Source(来源),请选择特定的资源。
  6. 选择 Analyze path(分析路径)。
  7. 查看结果。

如果路径为 Reachable(可以访问),则表示您的网络配置正确。如果路径为 Not reachable(无法访问),请修改您的路由和安全规则以放行流量。

使用 VPC 流日志检查流量

在开始之前,创建 VPC 流日志。最佳做法是使用包含 pkt-srcaddrpkt-dstaddr 字段的自定义格式。VPC 流日志中的 pkt-srcaddrpkt-dstaddr 字段显示带有原始源和目标主机 IP 地址的流量。默认 srcaddrdstaddr 显示中间网络接口 IP 地址。

使用 VPC 流日志来识别通过您的中转网关连接的 VPC 之间接受和拒绝的流量。

要分析流日志,请完成以下步骤:

  1. 打开 Amazon CloudWatch 控制台

  2. 在导航窗格中,选择 Logs(日志),然后选择 Log Insights

  3. Query Scope(查询范围)下拉列表中,选择 VPC 流日志的日志组。然后,在弹性网络接口 ID 中搜索源和目标资源。

  4. 运行以下示例查询,按源和目标 IP 地址筛选日志,以识别 VPC 之间接受和拒绝的流量:

    parse @message " *************************" as version, accountid, interfaceid, srcaddr, dstaddr, srcport, dstport, protocol, packets, bytes, start, end, action, logstatus, vpcid, subnetid, instanceid, tcpflags, type, pktsrcaddr, pktdstaddr, pktsrcawsservice, pktdstawsservice, flowdirection, trafficpath|filter (pktsrcaddr='SOURCE-IP-ADDRESS’ and pktdstaddr=‘DESTINATION-IP-ADDRESS’)|limit 100

    **注意:**替换 ************************ 和字段名称,以匹配您在创建 VPC 流日志时选择的格式。星号和字段的数量因您选择的日志格式而异。将 SOURCE-IP-ADDRESS 替换为源 IP 地址,将 DESTINATION-IP-ADDRESS 替换为目标 IP 地址。

测试 Amazon EC2 实例之间的连接情况

运行以下命令,在通过中转网关连接的 EC2 实例之间执行连接测试。

**注意:**在以下命令中,将 DESTINATION-PRIVATE-IP 替换为目标的私有 IP 地址,将 PORT 替换为要测试的端口号。

运行以下 ICMP ping 命令:

ping DESTINATION-PRIVATE-IP

运行以下 telnet 命令来测试 TCP 端口:

telnet DESTINATION-PRIVATE-IP PORT

运行以下 curl 命令来执行 HTTP 测试:

curl -v http://DESTINATION_PRIVATE_IP:PORT

如果测试失败,请采取以下措施:

  • 验证两个 VPC 中的路由表是否包含将目标 CIDR 数据块范围指向中转网关的条目。
  • 验证中转网关路由表中是否包含两个 VPC 的条目以及是否与正确的中转网关连接关联。
  • 验证安全组是否允许实例之间的入站和出站流量。
  • 验证子网中的网络 ACL 是否允许所需的流量。
  • 如果您有共享中转网关,请验证您是否正确地与目标账户共享了该网关。

相关信息

如何与其他账户或组织内部共享我的中转网关?

How Reachability Analyzer works(Reachability Analyzer 的工作原理)

Transit gateway route tables in AWS Transit Gateway(AWS Transit Gateway 中的中转网关路由表)

AWS 官方已更新 5 个月前