跳至内容

如何对 Direct Connect 和 AWS 资源之间的连接问题进行故障排除?

3 分钟阅读
0

我想对 AWS Direct Connect 和 AWS 资源之间的连接问题进行故障排除。

解决方法

检查虚拟接口的状态

如果您的虚拟接口停止运行,请执行以下操作:

对私有虚拟接口的问题进行故障排除

配置入站和出站规则

为目标实例的安全组和子网的网络访问控制列表(网络 ACL)配置入站和出站规则。这些规则必须允许 AWS 和本地资源之间的双向连接。

**注意:**具体规则取决于您的源 IP 地址、目标 IP 地址和端口。如果您有本地检查防火墙,请将其配置为允许双向流量。

检查您的 BGP 路由配置

对于本地路由器的 BGP 路由配置,请确保将所需的路由定向到 AWS。

如果您在 Amazon Virtual Private Cloud (Amazon VPC) 路由表上启用了路由传播,则确保这些路由在路由表上可见。在您的 Amazon VPC 路由表中,本地路由必须指向虚拟网关,将其作为下一跳或目标。例如,如果本地路由器通告 10.0.0.0/8 并指向 AWS,则您的路由表中包含指向 10.0.0.0/8 的路由条目。该条目指向与您的 VPC 关联的虚拟网关,将其作为下一跳或目标。

检查您的本地路由器

确保您的本地路由器通过 BGP 接收 VPC CIDR 的路由。路由器必须从 Direct Connect 虚拟接口关联的 AWS 对等 IP 地址接收路由。

如果您未从 AWS 对等 IP 地址接收到路由,请将您的虚拟私有网关关联到正确的 VPC。

如果您的私有虚拟接口在 Direct Connect 网关上终止,则将正确的虚拟私有网关与您的 Direct Connect 网关相关联。配置允许的前缀,以便 VPC CIDR 定向到本地路由器。

运行 traceroute

要从本地路由器向 VPC 实例运行基于双向互联网控制消息协议 (ICMP) 的 traceroute,请运行以下命令:

sudo traceroute -n -I YOUR_IP_ADDRESS

**注意:**请将 YOUR_IP_ADDRESS 替换为您的 Amazon Elastic Compute Cloud (Amazon EC2) 实例或本地主机的私有 IP 地址。

如果您的本地路由器或防火墙阻止基于 ICMP 的 traceroute 请求,请在相应的 TCP 端口上运行以下基于 TCP 的 traceroute:

sudo traceroute -n -T -p 22 YOUR_IP_ADDRESS

注意:请将 YOUR_IP_ADDRESS 替换为您的私有 IP 地址。在上述命令中,-n -T -p 22 表示在端口 22 上运行 traceroute。您可以使用应用程序用作侦听器的任何端口。

检查您的 traceroute 结果

检查与您的虚拟接口关联的本地路由器以及 AWS 对等 IP 地址的可见性和行为。

根据您的场景,执行以下操作:

  • 执行从 AWS 到本地资源的 traceroute,且流量在本地路由器的 IP 地址处停止: 配置您的本地网络防火墙设置,允许在端口上进行双向连接。
  • 执行从本地资源到 AWS 的 traceroute,且流量在 AWS 对等 IP 地址处停止: 检查您的网络 ACL 和安全配置。您还可以使用 VPC 流日志来检查特定的弹性网络接口是否接收到了本地路由器发送的数据包。
  • AWS 或本地对等 IP 地址未与虚拟接口关联,且流量通过错误路径转发: 确认本地路由器是否通过其他对等体针对同一 CIDR 拥有更具体或更优选的路由。
  • 从 AWS 到本地路由器的 traceroute 不包含 AWS 对等 IP 地址: 查找流量流向本地路由器的辅助路径,例如虚拟接口或 VPN。例如,另一个虚拟接口可能在同一个虚拟私有网关上终止,或者 Direct Connect 网关通告了相同的本地路由。或者,现有的 AWS Site-to-Site VPN 连接可能在 VPC 路由表上为您的本地路由器通告了特定路由。

比较从 AWS 到本地路由器以及从本地路由器到 AWS 的 traceroute。如果两个 traceroute 的跳数不同,则为非对称路由。使用路由策略,确保双向路由均首选相同的 Direct Connect 私有虚拟接口。

对公有虚拟接口的问题进行故障排除

验证来自公共前缀的路由

验证托管您的公有虚拟接口的本地路由器是否从 AWS 对等 IP 地址接收到了来自公共前缀的路由。如果您使用入站前缀过滤器和路由映射来过滤路由,请确保前缀过滤器与所需的前缀相匹配。

通告公有对等 IP 地址

如果您对本地网络执行 NAT,则通过 BGP 向 AWS 通告您的公有对等 IP 地址。

**注意:**确保使用通过公有虚拟接口从本地资源向 AWS 通告的前缀进行连接。您无法使用未向公有虚拟接口通告的前缀进行连接。此外,在通过公有虚拟接口上的 BGP 通告前缀之前,必须将其添加到“您要通告的前缀”列表中。列表中的前缀必须与您计划通告的前缀相同,或者范围更广。

运行 traceroute

从本地资源向 AWS 运行 traceroute,然后验证您的流量是否通过 Direct Connect 公有虚拟接口转发。如果流量通过公有虚拟接口转发,则 traceroute 将包含与虚拟接口关联的 IP 地址。

如需检查 AWS 所使用的网络路径,则启动公有 Amazon EC2 实例。该实例必须与您的 AWS 服务位于同一 AWS 区域。启动实例后,对本地路由器运行 traceroute。如果 traceroute 显示流量通过互联网或其他虚拟接口转发,则可能已通告特定的路由。

**注意:**AWS 使用 AS_PATH 和最长前缀匹配算法来确定路由路径。Direct Connect 是源自 AWS 的流量的首选路径。有关更多信息,请参阅公有虚拟接口路由策略

测试与公共 AWS 服务的连接

验证您与公共 AWS 服务(例如 Amazon Simple Storage Service (Amazon S3))的连接是否适用于正确的目标区域。然后,确认您在向 AWS 通告的公共前缀上具有 BGP 社区标签。有关更多信息,请参阅公有虚拟接口 BGP 社区

**注意:**BGP 社区标签决定了您的前缀在 AWS 网络上传播的距离。

对中转虚拟接口的问题进行故障排除

将本地 CIDR 配置为中转网关路由

如果您没有为目标资源的 VPC 子网路由表配置从本地 CIDR 到中转网关的路由,请进行配置。同时,配置实例或资源安全组和子网的网络 ACL 以允许双向连接。有关更多信息,请参阅 AWS Transit Gateway 中的中转网关的网络 ACL

验证 BGP 路由

验证与您的中转虚拟接口关联的本地路由器是否通过 BGP 从 AWS 对等体接收到了正确的路由。这些路由指向目标 VPC CIDR。

如果您没有接收到所需的路由,请查看允许的前缀列表。为与中转网关关联的 Direct Connect 网关的允许前缀配置所需的前缀。AWS 仅通告您通过中转虚拟接口添加到允许前缀列表中的路由。

验证本地网络前缀

对于与中转虚拟接口关联的本地路由器,请向 AWS 通告所需的本地网络前缀。如果您将路由从 Direct Connect 网关传播到中转网关路由表,请确保这些路由在中转网关路由表上可见。如果路由不可见,请检查通告路由上的 AS_PATH。AS\ _PATH 不得包含中转网关 ASN。

**注意:**您无法将路由从中转网关传播到 VPC。因此,您必须验证 VPC 路由表中是否存在指向中转网关的路由条目。如果您在 AS_PATH 上通告包含中转网关 ASN 的路由,则该路由不会安装在路由表中。确保您的本地路由器和中转网关使用不同的 ASN。

验证中转网关路由

检查与 Direct Connect 网关和目标 VPC 连接关联的中转网关路由表中的目的地路由是否正确。与 Direct Connect 网关关联的中转网关路由表必须具有定向到 VPC 连接的 VPC CIDR 路由。与 VPC 连接关联的中转网关路由表必须具有定向到 Direct Connect 网关连接的本地 CIDR 路由。

验证 Direct Connect 网关设置

如果从 AWS 到本地资源的 traceroute 不包含虚拟接口的对等 IP 地址,请检查您的 Direct Connect 网关设置。您必须在通告相同本地路由的同一 Direct Connect 网关上拥有其他中转虚拟接口。要确定出站连接必须使用的虚拟接口,请检查中转虚拟接口路由策略

检查 VPC 连接的子网关联

确认您已将子网与位于目标资源相同可用区的中转网关 VPC 连接相关联。例如,您的中转网关 VPC 连接必须至少有一个子网与您的实例位于相同的可用区。

**注意:**要识别网络接口上的双向流量,请检查 VPC 流日志,验证您的本地流量是否到达特定实例的网络接口。

AWS 官方已更新 6 个月前