概述
本文涵盖在 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 局域网接口、内部子网和虚拟机之间的网络拓扑。
请参考下面的拓扑图以获取指导。
排查流量未到达内部资源
- 在 站点配置 > 网络中验证内部子网是否正确定义在 CMA 中。 非本地子网必须将网关设置为局域网(本地)子网的第一个可用 IP 地址。
- 检查 局域网路由表:
- 确认 0.0.0.0/0路由已配置下一跳设置为局域网 IP 地址,或在 HA 部署中设置为浮动 IP 地址。
- 如果只有特定前缀应通过 vSocket 到达,请为这些前缀定义明确的路由,并使用相同的下一跳配置。
- 验证所有需要的内部子网都在路由表中。
- 如果路由或子网丢失,请参阅解决缺失或错误的路由
- 确认 0.0.0.0/0路由已配置下一跳设置为局域网 IP 地址,或在 HA 部署中设置为浮动 IP 地址。
- 检查局域网接口的 有效路由。
- 选择局域网接口,然后导航到 帮助 > 有效路由。
- 有效路由包括系统(默认)路由和用户定义路由(UDR)。
- 识别哪个路由对目的地前缀具有优先权。 非首选路由将显示为“无效”。
- 如果系统(默认)路由覆盖了用户定义的路由,请参阅解决缺失或错误的路由
- 验证 网络安全组 规则:
- 确认显式允许规则是否存在于入站和出站流量中。
- 特别注意规则的优先级和方向。
- 选择局域网接口并验证 有效安全规则。 确保所有相关 NSG 规则允许预期流量。
- 如果 NSG 规则阻止了流量,请参阅解决 NSG 相关流量阻塞
- 检查 vSocket 局域网网络接口上的 IP 转发状态。 此设置必须启用以允许 vSocket 局域网接收发往其他目的地的流量。
- 在 vSocket WebUI 上运行LAN中的PCAP捕获,同时生成活动流量。 继续后续步骤来分析它们。
分析内部 PCAP 捕获
- 查看从 vSocket 的 LAN 捕获的数据包。
- 确认以下 Azure 路由行为:
当流量离开 vSocket 局域网接口时,目的 MAC将是 Azure 虚拟路由器(12:34:56:78:9a:bc)。 这是因为 Azure 将所有流量都通过其内部虚拟路由器,即使设备在同一子网内。
- 返回的数据包通常带有内部 VM的源 MAC。 Azure 在将数据包交付给 vSocket 前移除了路由器 MAC。
与传统的第二层网络不同,Azure 不允许子网内主机间直接通信。 所有流量通过 Azure 虚拟路由器。 这种行为可能会使数据包捕获显得不对称。
排查路由到非本地子网的问题
如果流量无法到达非本地子网中的资源:
- 请按照排查未到达内部资源的流量中说明的步骤进行操作。
- 验证非本地子网在 CMA 中是否存在。 确保网关设置为局域网(本地)子网的第一个可用 IP 地址。
- 确认 vSocket 局域网路由表中出现非本地子网
排查 VNet 到 VNet 路由问题
在对等的 VNet 之间路由时,请验证以下内容:
- 确保 VNET 对等和路由表已根据如何在 Azure 多 VNet 环境中使用 vSocket的说明进行了配置
- 请按照排查未到达内部资源的流量中说明的步骤进行操作。
- 验证目标子网(在
辐射 VNet 中)在 CMA 中是否存在。 确保网关设置为局域网(本地)子网的第一个可用 IP 地址。 - 验证 vSocket 的局域网接口上的 有效路由。 必须包括目的地子网,下一跳设置为 VNET 对等。
- 验证 内部 VM界面上的 有效路由。 必须包括本地子网,下一跳设置为 VNET 对等,以及带有下一跳设置为局域网 IP 地址,或在 HA 部署中设置为浮动 IP 地址的 0.0.0.0/0路由。
排查 HA 路由问题
在 HA 部署中,请验证以下内容:
- 导航到主 vSocket 的局域网接口,设置 > IP 配置,并确认 浮动 IP设置为辅助 IP 地址。
- 确保 vSocket 上的局域网路由表包含浮动 IP 作为下一跳的 0.0.0.0/0 路由。 如果没有,请参阅 解决 HA 浮动 IP 问题
- 确保在故障切换期间,浮动 IP 迁移到新的主 vSocket,并在角色变更时按预期进行。
有关排查 HA 环境的更多信息,请参阅Azure HA vSocket 排查
解决发现的问题
根据故障排除中识别的根本原因应用适当的解决方案。
解决缺失或错误的路由
- 在 局域网路由表中创建或更新用户定义路由,以在需要时覆盖 Azure 系统路由。
- 将路由表与正确的子网关联。
- 选择局域网接口,然后导航到 帮助 > 有效路由。 重新验证期望路径现在是否为首选。
解决 NSG 相关流量阻塞
- 为所需的协议、端口和源/目标前缀添加显式允许规则。
- 确保允许规则的优先级高于拒绝规则。
- 规则更新后重新测试流量流。
- 选择局域网接口,然后导航到 帮助 > 有效安全规则。 重新验证现在预期的允许规则是否为首选。
解决 HA 浮动 IP 问题
- 按照 Azure HA vSocket 排查中的步骤解决 浮动 IP 地址分配给主 vSocket 的问题。
- 如果需要,更新局域网路由表以将下一跳引用为浮动 IP。
- 执行 控制的故障切换 测试以验证行为。
向 Cato 支持提出问题
如果路由行为在配置验证后仍不一致,请升级到Cato 支持 。 提供以下信息以加速根本原因分析。
- 内部拓扑的描述。
- 子网路由表的截图。
- 有效路由的截图。
- 网络安全组入站和出站规则。
- vSocket LAN 接口的 IP 转发状态确认。
- 来自 vSocket 和受影响的虚拟机的数据包捕获。
0 条评论
请登录写评论。