使用 Azure vSockets 排查路由问题

概述

本文涵盖在 Microsoft Azure 虚拟网络 (VNet) 中部署的 vSocket 相关的路由问题。 重点关注 Azure 的软件定义网络模型如何影响 vSocket 局域网接口、子网、对等 VNet 和外部网络之间的流量。 误解 Azure 系统路由、有效路由或 IP 转发行为可能导致不对称路由、数据包丢失或资源不可达。

症状

Azure vSockets 的路由问题通常通过以下可观察症状表现出来:

  • 流量无法到达局域网同一子网的内部虚拟机,也无法到达不同子网或 VNet。
  • 来自内部资源的出站流量无法到达其目的地。
  • 高可用性(HA)部署未能通过活动的 vSocket 路由流量。

可能的原因

  • Azure 系统路由覆盖预期流量路径。
  • 用户定义的路由丢失或配置错误。
  • vSocket 局域网网络接口上的 IP 转发已禁用。
  • HA 部署中浮动 IP 配置错误。
  • 网络安全组 (NSG) 规则阻止入站或出站流量。
  • 误解 Azure 的内子网路由行为。

排查问题

重要: 在进行故障排除之前,验证所有 Azure vSocket 部署的先决条件。 请参阅 从 Marketplace 部署 Azure vSockets

使用下面的步骤根据症状隔离路由问题。 

定义内部拓扑

为了更好地了解 Azure 内的数据包流动和路由行为,首先定义 Azure VNet、vSocket 局域网接口、内部子网和虚拟机之间的网络拓扑。

请参考下面的拓扑图以获取指导。

排查流量未到达内部资源

  1. 站点配置 > 网络中验证内部子网是否正确定义在 CMA 中。 非本地子网必须将网关设置为局域网(本地)子网的第一个可用 IP 地址。
  2. 检查 局域网路由表
    • 确认 0.0.0.0/0路由已配置下一跳设置为局域网 IP 地址,或在 HA 部署中设置为浮动 IP 地址。
    • 如果只有特定前缀应通过 vSocket 到达,请为这些前缀定义明确的路由,并使用相同的下一跳配置。
    • 验证所有需要的内部子网都在路由表中。
    • 如果路由或子网丢失,请参阅解决缺失或错误的路由
  3. 检查局域网接口的 有效路由
    • 选择局域网接口,然后导航到 帮助 > 有效路由
    • 有效路由包括系统(默认)路由和用户定义路由(UDR)。
    • 识别哪个路由对目的地前缀具有优先权。 非首选路由将显示为“无效”。
    • 如果系统(默认)路由覆盖了用户定义的路由,请参阅解决缺失或错误的路由
  4. 验证 网络安全组 规则:
    • 确认显式允许规则是否存在于入站和出站流量中。
    • 特别注意规则的优先级和方向。
    • 选择局域网接口并验证 有效安全规则。 确保所有相关 NSG 规则允许预期流量。
    • 如果 NSG 规则阻止了流量,请参阅解决 NSG 相关流量阻塞
  5. 检查 vSocket 局域网网络接口上的 IP 转发状态。 此设置必须启用以允许 vSocket 局域网接收发往其他目的地的流量。
  6. 在 vSocket WebUI 上运行LAN中的PCAP捕获,同时生成活动流量。 继续后续步骤来分析它们。

分析内部 PCAP 捕获

  1. 查看从 vSocket 的 LAN 捕获的数据包。
  2. 确认以下 Azure 路由行为:
    • 当流量离开 vSocket 局域网接口时,目的 MAC将是 Azure 虚拟路由器(12:34:56:78:9a:bc)。 这是因为 Azure 将所有流量都通过其内部虚拟路由器,即使设备在同一子网内。

    • 返回的数据包通常带有内部 VM源 MACAzure 在将数据包交付给 vSocket 前移除了路由器 MAC。

与传统的第二层网络不同,Azure 不允许子网内主机间直接通信。 所有流量通过 Azure 虚拟路由器。 这种行为可能会使数据包捕获显得不对称。

排查路由到非本地子网的问题

如果流量无法到达非本地子网中的资源:

  1. 请按照排查未到达内部资源的流量中说明的步骤进行操作。
  2. 验证非本地子网在 CMA 中是否存在。 确保网关设置为局域网(本地)子网的第一个可用 IP 地址。
  3. 确认 vSocket 局域网路由表中出现非本地子网

排查 VNet 到 VNet 路由问题

在对等的 VNet 之间路由时,请验证以下内容:

  1. 确保 VNET 对等和路由表已根据如何在 Azure 多 VNet 环境中使用 vSocket的说明进行了配置
  2. 请按照排查未到达内部资源的流量中说明的步骤进行操作。
  3. 验证目标子网(在辐射 VNet中)在 CMA 中是否存在。 确保网关设置为局域网(本地)子网的第一个可用 IP 地址。
  4. 验证 vSocket 的局域网接口上的 有效路由。 必须包括目的地子网,下一跳设置为 VNET 对等。
  5. 验证 内部 VM界面上的 有效路由。 必须包括本地子网,下一跳设置为 VNET 对等,以及带有下一跳设置为局域网 IP 地址,或在 HA 部署中设置为浮动 IP 地址的 0.0.0.0/0路由。

排查 HA 路由问题

在 HA 部署中,请验证以下内容:

  1. 导航到主 vSocket 的局域网接口,设置 > IP 配置,并确认 浮动 IP设置为辅助 IP 地址。
  2. 确保 vSocket 上的局域网路由表包含浮动 IP 作为下一跳的 0.0.0.0/0 路由。 如果没有,请参阅 解决 HA 浮动 IP 问题
  3. 确保在故障切换期间,浮动 IP 迁移到新的主 vSocket,并在角色变更时按预期进行。

有关排查 HA 环境的更多信息,请参阅Azure HA vSocket 排查

解决发现的问题

根据故障排除中识别的根本原因应用适当的解决方案。

解决缺失或错误的路由

  1. 局域网路由表中创建或更新用户定义路由,以在需要时覆盖 Azure 系统路由。
  2. 将路由表与正确的子网关联。
  3. 选择局域网接口,然后导航到 帮助 > 有效路由。 重新验证期望路径现在是否为首选。

解决 NSG 相关流量阻塞

  1. 为所需的协议、端口和源/目标前缀添加显式允许规则
  2. 确保允许规则的优先级高于拒绝规则。
  3. 规则更新后重新测试流量流。
  4. 选择局域网接口,然后导航到 帮助 > 有效安全规则。 重新验证现在预期的允许规则是否为首选。

解决 HA 浮动 IP 问题

  1. 按照 Azure HA vSocket 排查中的步骤解决 浮动 IP 地址分配给主 vSocket 的问题。
  2. 如果需要,更新局域网路由表以将下一跳引用为浮动 IP。
  3. 执行 控制的故障切换 测试以验证行为。

向 Cato 支持提出问题

如果路由行为在配置验证后仍不一致,请升级到Cato 支持 。 提供以下信息以加速根本原因分析。

  • 内部拓扑的描述。
  • 子网路由表的截图。
  • 有效路由的截图。
  • 网络安全组入站和出站规则。
  • vSocket LAN 接口的 IP 转发状态确认。
  • 来自 vSocket 和受影响的虚拟机的数据包捕获。

这篇文章有帮助吗?

0 人中有 0 人觉得有帮助

0 条评论