mcpField
A
alibabacloud-network-reachability-analysis

alibabacloud-network-reachability-analysis

github.com/aliyun云与 DevOps281275 次安装1 天前更新
代码仓库

关于 alibabacloud-network-reachability-analysis

这是一个引导 Agent 使用 Alibaba Cloud NIS 进行网络可达性诊断的技能,适用于排查云上及混合云路径问题。它结合正反向路径分析、Mermaid 拓扑图和途经资源监控,并将操作限制为只读诊断。

主要功能

  1. 01正向与反向路径分析
  2. 02定位安全组及路由阻断
  3. 03生成 Mermaid 网络拓扑
  4. 04查询途经资源监控数据
  5. 05仅执行只读诊断

适用场景

  1. 01排查 ECS 与其他资源间的连通性
  2. 02诊断 VPN 或 VBR 混合云路径
  3. 03检查网络路径上的资源监控异常

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/aliyun/alibabacloud-aiops-skills --skill alibabacloud-network-reachability-analysis

安装后在 Claude Code 中输入/alibabacloud-network-reachability-analysis确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
acceptance-criteria.md
cli-installation-guide.md
ram-policies.md
verification-method.md

详细介绍

NIS 网络可达性分析 / NIS 网络可达性分析

语言 / Language:请使用与用户相同的语言回复。 如果用户使用中文,请使用下方的中文(zh-CN)提示词。 如果用户使用英语,请使用下方的英语(en)提示词。

引导 Agent 使用 Alibaba Cloud NIS 进行交互式网络可达性分析。 涵盖正向/反向路径分析、拓扑可视化(Mermaid),以及路径上资源的监控诊断。

架构:NIS (CreateAndAnalyzeNetworkPath + GetNetworkReachableAnalysis) + CloudMonitor (DescribeMetricData)

⚠️ 关键 / CRITICAL:仅限只读操作

此技能仅执行只读网络诊断。严禁创建、修改或删除任何云资源。

本技能仅执行只读网络诊断操作。严禁创建、修改或删除任何云资源。

允许:CreateAndAnalyzeNetworkPath、GetNetworkReachableAnalysis、DescribeMetricData、Describe* API

允许:分析任务创建与查询、监控数据查询、Describe* 类查询 API

禁止:Create*(CreateAndAnalyzeNetworkPath 除外)、Modify*、Delete*、Start*、Stop*、Run* API

禁止:创建类 API(除 CreateAndAnalyzeNetworkPath 外)、修改、删除、启停、执行类 API

安装

预检:需要 Aliyun CLI >= 3.3.1 运行 aliyun version,确认版本 >= 3.3.1。如果尚未安装或版本过低, 请参阅 references/cli-installation-guide.md 查看安装说明。 然后**[必须]**运行 aliyun configure set --auto-plugin-install true,以启用自动安装插件。

aliyun version
aliyun configure set --auto-plugin-install true

身份验证

预检:需要 Alibaba Cloud 凭证

安全规则:

  • 切勿读取、回显或打印 AK/SK 值(例如,禁止运行 echo $ALIBABA_CLOUD_ACCESS_KEY_ID)
  • 切勿要求用户在对话或命令行中直接输入 AK/SK
  • 切勿使用包含明文凭证值的 aliyun configure set
  • 仅使用 aliyun configure list 检查凭证状态
aliyun configure list --user-agent AlibabaCloud-Agent-Skills

检查输出中是否存在有效配置(AK、STS 或 OAuth 身份)。

如果不存在有效配置,请在此处停止。

  1. 从 Alibaba Cloud 控制台获取凭证
  2. 在此会话之外配置凭证(在终端中运行 aliyun configure,或在 shell 配置文件中设置环境变量)
  3. 返回后,重新运行 aliyun configure list,确认显示有效配置

RAM 权限

完整的 RAM 策略请参阅 references/ram-policies.md。

所需操作:nis:CreateAndAnalyzeNetworkPath、nis:GetNetworkReachableAnalysis、cms:DescribeMetricData。

参数确认

重要:参数确认 — 在执行任何命令或 API 调用之前, 必须向用户确认所有可自定义参数(例如 RegionId、实例 ID、IP 地址、 协议、端口、资源类型等)。 未经用户明确批准,切勿假定或使用默认值。

通过交互方式收集以下参数:

ParameterRequiredDescription (EN)说明 (ZH)Default
RegionIdYes分析任务所在地域分析任务所在地域—
SourceTypeYesecs、vsw、internetIp、vpn、vbr源端类型—
SourceIdYes源资源 ID(如果是 internetIp,则填写公网 IP)源资源 ID(公网 IP 类型直接填 IP)—
SourceIpAddressConditional云下 IP,vpn/vbr 时必填云下私网 IP,vpn/vbr 时必填—
TargetTypeYesecs、vsw、internetIp、vpn、vbr、clb目的端类型—
TargetIdYes目的资源 ID(如果是 internetIp,则填写公网 IP)目的资源 ID(公网 IP 类型直接填 IP)—
TargetIpAddressConditional云下 IP,vpn/vbr 时必填云下私网 IP,vpn/vbr 时必填—
ProtocolYestcp、udp 或 icmp协议类型—
TargetPortConditional使用 tcp/udp 时必填tcp/udp 时必填—
SourcePortOptional源端口源端口—
交互收集逻辑

根据用户使用的语言选择对应提示词:

步骤 1 — 询问资源类型

ENZH
“源资源类型是什么?(ecs / vsw / internetIp / vpn / vbr)”“请问源端资源类型是什么?(ecs / vsw / internetIp / vpn / vbr)”
“目的资源类型是什么?(ecs / vsw / internetIp / vpn / vbr / clb)”“请问目的端资源类型是什么?(ecs / vsw / internetIp / vpn / vbr / clb)”

步骤 2 — 按类型提示

ConditionEN PromptZH Prompt
internetIp“分析公网 IP 时,请直接将公网 IP 地址作为 ID 提供。”“分析公网路径时,请直接提供公网 IP 地址作为 ID 传入。”
vpn / vbr“进行混合云分析时,除了资源 ID,还请提供云下 IP(您所在网络的私网 IP)。”“连接云下环境时,除了资源 ID,请务必提供您的云下私网 IP (On-Premise IP) 以确保分析准确。”

步骤 3 — 协议和端口

ENZH
“使用什么协议?(tcp / udp / icmp)目的端口是多少?”“请问使用什么协议?(tcp / udp / icmp)目的端口是多少?”

核心工作流

步骤 1:正向路径分析
aliyun nis create-and-analyze-network-path \
  --source-id <SourceId> \
  --source-type <SourceType> \
  --target-id <TargetId> \
  --target-type <TargetType> \
  --protocol <Protocol> \
  --target-port <TargetPort> \
  --source-ip-address <SourceIpAddress> \
  --target-ip-address <TargetIpAddress> \
  --region <RegionId> \
  --user-agent AlibabaCloud-Agent-Skills

如果 SourceType/TargetType 不是 vpn 或 vbr,则省略 --source-ip-address / --target-ip-address。 如果 Protocol 是 icmp,则省略 --target-port。

记录返回的 NetworkReachableAnalysisId。

⚠️ 强制:正向分析完成后,必须始终执行反向路径分析。

必须在步骤 2 完成后立即执行步骤 3(反向路径分析)。切勿跳过或省略反向路径检查。

必须在正向分析完成后立即执行 Step 3(反向路径分析)。严禁跳过或省略反向路径检查。

步骤 2:轮询正向结果
aliyun nis get-network-reachable-analysis \
  --network-reachable-analysis-id <ForwardAnalysisId> \
  --region <RegionId> \
  --user-agent AlibabaCloud-Agent-Skills

重复执行,直到 NetworkReachableAnalysisStatus 为 finish。提取 Reachable、NetworkReachableAnalysisResult。

步骤 3:反向路径分析

交换源和目的:

  • 正向 SourceId/Type → 反向 TargetId/Type
  • 正向 TargetId/Type → 反向 SourceId/Type
  • 正向 SourceIpAddress → 反向 TargetIpAddress
  • 正向 TargetIpAddress → 反向 SourceIpAddress

端口处理:

  • 反向 --source-port = 正向 TargetPort(服务端监听端口)
  • 反向 --target-port = 49152 ~ 65535 范围内的随机临时端口(客户端随机临时端口)

由于客户端发起连接时使用动态分配的临时端口,反向路径(服务端→客户端)的目的端口应使用临时端口范围(49152-65535)内的随机值来模拟真实回程流量。

由于客户端发起连接时使用动态分配的临时端口,反向路径(服务端→客户端)的目的端口应使用临时端口范围(49152-65535)内的随机值来模拟真实回程流量。

aliyun nis create-and-analyze-network-path \
  --source-id <OriginalTargetId> \
  --source-type <OriginalTargetType> \
  --target-id <OriginalSourceId> \
  --target-type <OriginalSourceType> \
  --protocol <Protocol> \
  --source-port <OriginalTargetPort> \
  --target-port <RandomPort_49152_to_65535> \
  --source-ip-address <OriginalTargetIpAddress> \
  --target-ip-address <OriginalSourceIpAddress> \
  --region <RegionId> \
  --user-agent AlibabaCloud-Agent-Skills

若源/目的类型不是 vpn 或 vbr,可省略 --source-ip-address / --target-ip-address。

步骤 4:轮询反向结果

与步骤 2 相同,使用反向 NetworkReachableAnalysisId。

步骤 5:结果解读

关键:始终使用主动发起的分析任务返回的 topologyData.positive。 忽略任何响应中的 topologyData.reverse——它不可靠。

始终使用主动发起的分析任务返回的 topologyData.positive。 忽略任何响应中的 topologyData.reverse——它不可靠。

对正向和反向分别:

  1. 检查 Reachable 字段。若为 true,则路径连通。
  2. 若为 false,分析 NetworkReachableAnalysisResult 中的字段:
    • errorCode — 根因错误码
    • securityGroupData — 拦截流量的安全组规则
    • routeData — 导致丢包的路由表条目
步骤 6:拓扑可视化(Mermaid)

根据 topologyData.positive 生成 Mermaid 图:

graph LR
  • 节点:从 nodeList 中提取 nodeType 和 bizInsId
  • 连线:根据 linkList 构建有向边

示例:

graph LR
    ECS_i-src["ECS: i-bp1xxx"] --> VRouter_vrt-1["VRouter: vrt-xxx"]
    VRouter_vrt-1 --> VSW_vsw-1["VSW: vsw-xxx"]
    VSW_vsw-1 --> ENI_eni-1["ENI: eni-xxx"]
    ENI_eni-1 --> ECS_i-dst["ECS: i-bp2xxx"]
步骤 7:途经资源监控诊断

对于 topologyData 中途经的资源 ID,若匹配以下前缀,查询最近 1 小时的监控数据:

前缀命名空间指标
ecs-acs_ecs_dashboardCPUUtilization, ConnectionUtilization, DiskReadWriteIOPSUtilization, BurstCredit, DiskIOQueueSize
eip-acs_vpc_eipout_ratelimit_drop_speed, net_out.rate_percentage, net_rxPkgs.rate
nat-acs_nat_gatewayErrorPortAllocationCount, SessionLimitDropConnection, SessionActiveConnectionWaterLever, SessionNewConnectionWaterLever, BWRateOutToOutside, DropTotalPps
clb-acs_slb_dashboardUnhealthyServerCount, UpstreamCode5xx, InstanceQpsUtilization, InstanceMaxConnectionUtilization, UpstreamRt, StatusCode4xx
vbr-acs_physical_connectionVbrHealthyCheckLossPercent, VbrHealthyCheckLatency, PkgsRateLimitDropOutFromVpcToVbr, RateOutFromVpcToIDC

查询命令(CMS 使用 PascalCase API 风格,而非插件模式):

aliyun cms DescribeMetricData \
  --Namespace <Namespace> \
  --MetricName <MetricName> \
  --Dimensions '[{"instanceId":"<ResourceId>"}]' \
  --StartTime <1HourAgoTimestamp> \
  --EndTime <NowTimestamp> \
  --Period 60 \
  --user-agent AlibabaCloud-Agent-Skills

频率限制:每个账户每秒 10 次调用。跨多个指标的批量查询应相应控制调用频率。

清理

NIS 可达性分析为只读操作——不会创建或修改任何云资源。 无需清理。 NIS 可达性分析为只读操作——不会创建或修改任何云资源,无需清理。

使用限制

  1. 仅支持 IPv4 — 仅支持 IPv4 路径分析。
  2. 单向分析 — 每次分析均为单向;反向路径需要交换源和目的后另建任务。
  3. CMS 配额 — DescribeMetricData 与其他 CMS 查询 API 共用每月 1,000,000 次免费调用额度。
  4. CMS 频控 — 每个账户每秒 10 次调用(包括 RAM 用户)。

最佳实践 / 最佳实践

  1. 始终执行正向和反向分析,以确认双向连通性。
  2. 路径不可达时,优先检查安全组规则和路由表。
  3. 对于 vpn/vbr 场景,务必提供云下私网 IP。
  4. 使用 Mermaid 拓扑图帮助用户可视化流量路径。
  5. 仅查询实际路径上的资源监控数据,以减少 API 调用。
  6. 将监控异常与可达性结果一并呈现,提供完整诊断。

参考文件 / 参考文件

参考文件内容(英文)内容(中文)
references/ram-policies.md所需 RAM 权限所需 RAM 权限策略
references/verification-method.md逐步验证命令逐步验证命令
references/acceptance-criteria.md正确/错误 CLI 模式正确/错误 CLI 模式对照
references/cli-installation-guide.mdAliyun CLI 安装指南阿里云 CLI 安装指南

评论

支持 Markdown