如何对 AWS VPN 或 AWS Direct Connect 上的 BGP 连接失败进行故障排除?

2 分钟阅读
0

我想对因参数不匹配而无法通过 VPN 或 AWS Direct Connect 建立连接的 BGP 会话进行调试。

简短描述

在配置动态 AWS Site-to-Site VPN 和 AWS Direct Connect 连接时,您可能会遇到与边界网关协议(BGP)有关的连接问题。要解决此问题,必须首先分析 BGP 日志,并确定 BGP 协商过程中的具体故障点。

**注意:**要解决无法通过 VPN 隧道建立连接或处于空闲状态的 BGP 会话这一问题,请参阅如何解决 VPN 上的 BGP 连接问题?

要对无法通过 Direct Connect 建立连接或处于空闲状态的 BGP 会话进行故障排除,请参阅如何解决 Direct Connect 上的 BGP 连接问题?

解决方法

确保客户网关上有经过验证的 BGP 配置,并且 BGP 对等 IP 地址之间可以 ping 通。然后,收集来自客户网关设备的 BGP 对等 IP 之间流量的数据包捕获。最后,按如下方式分析每个 BGP 状态的数据。

BGP 状态

空闲

这是 BGP 等待“开始事件”的第一个状态。 当配置新的 BGP 邻居或重置已建立的 BGP 对等关系时,会发生启动事件。随后,BGP 会初始化一些资源,重置 ConnectRetry 计时器,并发起与远程 BGP 邻居的 TCP 连接。

连接

在这一阶段,BGP 会等待 TCP 三向握手完成。如果此阶段成功完成,则连接将变为 OpenSent 状态。

2021-07-04 22:50:20 169.254.60.146 169.254.60.145 TCP 74 34516 → 179 [SYN] Seq=0 Win=2920 Len=0 MSS=1460 SACK_PERM TSval=3030456 TSecr=0 WS=1
2021-07-04 22:50:20.719228 169.254.60.145 169.254.60.146 TCP 74	179 → 34516 [SYN, ACK] Seq=0 Ack=1 Win=26844 Len=0 MSS=1375 TSval=64921081 TSecr=3030456 WS=128
2021-07-04 22:50:20.719453 169.254.60.146 169.254.60.145 TCP 66	34516 → 179 [ACK] Seq=1 Ack=1 Win=2920 Len=0 TSval=3030476 TSecr=64921081

如果连接或 ConnectRetry 失败,它将保持为活动状态,且不会进入 OpenSent 状态。

检查 Connect 日志,以确定故障的原因:

  • 如果是动态 VPN,请在 TCP 端口 179 上执行“telnet”测试,以确保两个 BGP 邻居之间有 TCP 连接
  • 如果没有 TCP 连接,请检查日志以确认在 TCP 连接期间是否存在任何错误或数据包被弃。
  • 检查 BGP、客户网关和 AWS 上的邻居 IP 地址配置是否正确。
  • 如果使用 Direct Connect 的虚拟接口,请检查您在路由器上输入的 BGP 身份验证(MD5 密码)是否正确无误。

OpenSent

在向对等方发送 OPEN 消息后,BGP 会在这一状态下等待 OPEN 回复。如果成功收到回复,BGP 状态将变为 OpenConfirm,并向对等方发送 KEEPALIVE。连接失败会使 BGP 重新进入空闲或活动状态。

Border Gateway Protocol - OPEN Message
Type: OPEN Message (1)  
Version: 4   
My AS: 65000  
Hold Time: 30  
BGP Identifier: 54.241.242.80

在 OpenSent 消息中,对等方发送其 BGP 参数,例如版本号、AS 号、保持计时器(默认值: 通过 VPN 进行 BGP 为 30 秒,通过 Direct Connect 进行 BGP 为 90 秒)和 BGP 标识符 IP 地址。如果无法建立 BGP,请检查日志,确保邻居借助 BGP 参数而正确发送和接收了 OPEN 消息。此外,请检查 OpenSent 日志,以确定失败原因。

**注意:**AWS 不接受 0 作为保持时间值。

OpenConfirm

BGP 状态距离达到其最终状态(已建立)只有一步之遥。在这种状态下,BGP 会等待来自对等方的 KEEPALIVE。如果成功,状态将变为“已建立”。否则,根据错误情况,其状态会变回“空闲”或“活动”状态。

65	2021-07-04 22:50:20.744297	169.254.60.146	169.254.60.145	BGP	85	KEEPALIVE Message
66	2021-07-04 22:50:20.765323	169.254.60.145	169.254.60.146	BGP	85	KEEPALIVE Message

检查日志,以便确保 KEEPALIVE 消息已正确发送和接收。

已建立

在这种状态下,BGP 会在对等体之间交换信息。该信息包括更新(路由通告)、KEEPALIVES 或通知。

Border Gateway Protocol - UPDATE Message
Path attributes
Path Attribute - AS_PATH: 65000
Path Attribute - NEXT_HOP: 169.254.60.146
Network Layer Reachability Information (NLRI)
   192.168.0.0/16

如果未建立连接,请执行以下操作:

  • 检查日志,确保路由器正确交换更新。验证播发的前缀是否与预期路由匹配。
  • 检查是否有任何 BGP 过滤器或前缀列表在阻止路由在路由表中传播。
  • 检查对等路由表上播发的路由条目。
  • 您可能会看到虚拟网关上 VPN 或 Direct Connect 虚拟接口的 BGP 会话从“已建立”状态变为“空闲”状态。验证对等方在 BGP 会话上播发的路由是否少于 100 条。
AWS 官方
AWS 官方已更新 1 年前