如何通过我的中转网关排查和解决跨账户连接问题?
我的资源无法通过我的中转网关在位于不同 AWS 账户中的虚拟私有云 (VPC) 之间连接。
解决方法
**注意:**拥有中转网关的账户是所有者账户。能够访问中转网关的账户是共享账户。
检查您的中转网关资源共享设置
**注意:**如果您在 AWS Organizations 中有组织,请开启资源共享功能。当您开启资源共享功能后,AWS 会自动共享和接受成员账户之间的中转网关。
完成以下步骤:
- 使用所有者账户登录 AWS Resource Access Manager (AWS RAM) 控制台。
- 在导航窗格中,选择 Shared resources(共享资源)。
- 选择您的中转网关。
- 检查您是否与正确的账户或组织共享了中转网关。
- 确认 Share status(共享状态)为 Associated(已关联)且未显示 Pending acceptance(待接受)。
检查所有者和共享账户中的中转网关连接状态
完成以下步骤:
- 打开 Amazon Virtual Private Cloud (Amazon VPC) 控制台。
- 在所有者和共享账户中,选择导航窗格中的 Transit Gateway Attachments(中转网关连接)。
- 验证 Attachment state(连接状态)是否为 Available(可用)。
**注意:**每个连接到中转网关的账户的连接状态都需要处于 Available(可用)。 - 确认连接在每个可用区中使用一个子网进行流量路由。
如果连接状态在共享账户中显示为 Pending acceptance(待接受),请完成以下步骤:
- 在共享账户中,选择 Transit gateway attachments(中转网关连接)。
- 选择待处理的连接。
- 选择 Actions(操作),然后选择 Accept(接受)。
检查路由表设置和路由传播
完成以下步骤:
- 使用所有者账户登录 AWS Transit Gateway 控制台。
- 在导航窗格中,选择 Transit gateway route tables(中转网关路由表)。
- 检查每个连接是否与正确的路由表关联。
- 确认您的路由表包含指向其他 VPC 的 CIDR 数据块的路由。这些路由既可以是静态的,也可以是动态传播的,并且必须指向每个 VPC 的正确中转网关连接。
- (可选)如果您使用安全的 VPC 来检查流量,请确认防火墙和安全设备会放行流量。
- 确认源和目标范围不重叠。
**注意:**中转网关无法路由重叠的 IP 地址范围。
最佳做法是为您的环境创建分段路由表。例如,如果您有开发环境和生产环境,分段路由表可用于隔离这两者之间的流量,因为每个环境都有专属的路由表。
验证 VPC 路由表是否指向中转网关
完成以下步骤:
- 打开 Amazon VPC 控制台。
- 在导航窗格中,选择 Route Tables(路由表)。
- 选择与资源的子网关联的路由表。
- 在 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 中启用可信访问。
完成以下步骤:
- 打开 AWS Network Manager 控制台。
- 在导航窗格中,选择 Network Manager。
- 选择 Reachability Analyzer。
- 选择 Create and analyze path(创建和分析路径)。
- 输入以下信息以选择源路径和目标路径:
对于 Source account(来源账户),请选择来源账户的账户 ID。
对于 Source type(来源类型),请选择资源类型。
对于 Source(来源),请选择特定资源。
对于 Destination account(目标账户),请选择目标账户的账户 ID。
对于 Destination type(目标类型),请选择资源类型。
对于 Source(来源),请选择特定的资源。 - 选择 Analyze path(分析路径)。
- 查看结果。
如果路径为 Reachable(可以访问),则表示您的网络配置正确。如果路径为 Not reachable(无法访问),请修改您的路由和安全规则以放行流量。
使用 VPC 流日志检查流量
在开始之前,创建 VPC 流日志。最佳做法是使用包含 pkt-srcaddr 和 pkt-dstaddr 字段的自定义格式。VPC 流日志中的 pkt-srcaddr 和 pkt-dstaddr 字段显示带有原始源和目标主机 IP 地址的流量。默认 srcaddr 和 dstaddr 显示中间网络接口 IP 地址。
使用 VPC 流日志来识别通过您的中转网关连接的 VPC 之间接受和拒绝的流量。
要分析流日志,请完成以下步骤:
-
在导航窗格中,选择 Logs(日志),然后选择 Log Insights。
-
从 Query Scope(查询范围)下拉列表中,选择 VPC 流日志的日志组。然后,在弹性网络接口 ID 中搜索源和目标资源。
-
运行以下示例查询,按源和目标 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 中的中转网关路由表)
- 语言
- 中文 (简体)
