VMware NSX
免责声明:这是一个社区维护的开源项目,与 VMware, Inc. 或 Broadcom Inc. 无关联、不经其认可亦非由其赞助。“VMware”和“NSX”是 Broadcom 的商标。源代码在 github.com/zw008/VMware-NSX MIT 许可下公开可审计。
VMware NSX 网络管理 — 用于分段、网关、NAT、路由和 IPAM 的 32 个 MCP 工具。
面向域的网络技能,适用于 NSX-T / NSX 4.x 策略 API。 配套技能:vmware-nsx-security(DFW/防火墙)、vmware-aiops(VM 生命周期)、vmware-monitor(只读监控)、vmware-storage(iSCSI/vSAN)、vmware-vks(Tanzu Kubernetes)、vmware-aria(指标/告警/容量)、vmware-avi(AVI/ALB/AKO)、vmware-harden(合规基准)。 | vmware-pilot(工作流编排)| vmware-policy(审计/策略)|
此技能的功能
| 类别 | 工具 | 数量 | 读/写 |
|---|---|---|---|
| 分段 | 列出、获取详情、创建、更新、删除 | 5 | 2R / 3W |
| Tier-0 网关 | 列出、获取详情、BGP 邻居、配置 BGP | 4 | 3R / 1W |
| Tier-1 网关 | 列出、获取详情、创建、更新、删除 | 5 | 2R / 3W |
| NAT | 列出规则、创建规则、删除规则 | 3 | 1R / 2W |
| 静态路由 | 列出、创建、删除 | 3 | 1R / 2W |
| IP 池 | 列出、获取使用情况、创建池、删除池 | 4 | 2R / 2W |
| 架构清单 | 传输区域、传输节点、边缘集群 | 3 | 3R / 0W |
| 健康 | NSX 告警、传输节点状态、边缘集群状态、管理器状态 | 4 | 4R / 0W |
| 故障排除 | 逻辑端口状态、VM 到分段查找 | 2 | 2R / 0W |
总计:33 个工具(20 个只读 + 13 个写入)
快速安装
uv tool install vmware-nsx-mgmt
vmware-nsx doctor
何时使用此技能
- 列出、创建或修改 NSX 分段(覆盖 / VLAN 方式)
- 创建或管理 Tier-0 / Tier-1 网关
- 配置 NAT 规则(SNAT、DNAT、反射)
- 查看或添加静态路由,检查 BGP 邻居
- 管理 IP 池和子网分配
- 检查 NSX 告警、传输节点健康、边缘集群状态
- 查找 VM 连接到的分段
- 排查逻辑端口状态
使用配套技能处理:
- 分布式防火墙、安全组、DFW 规则、IDS/IPS →
vmware-nsx-security - VM 生命周期、部署、来宾操作 →
vmware-aiops - vSphere 清单、健康、告警、事件 →
vmware-monitor - 存储:iSCSI、vSAN、数据存储 →
vmware-storage - Tanzu Kubernetes →
vmware-vks - 负载均衡、AVI/ALB、AKO、Ingress →
vmware-avi
相关技能 — 技能路由
| 用户意图 | 推荐技能 |
|---|---|
| NSX 网络:分段、网关、NAT、路由、IPAM | vmware-nsx ← 此技能 |
| NSX 安全:DFW 规则、安全组、IDS/IPS | vmware-nsx-security |
| 只读 vSphere 监控、告警、事件 | vmware-monitor |
| VM 生命周期、部署、来宾操作 | vmware-aiops |
| 存储:iSCSI、vSAN、数据存储 | vmware-storage |
| Tanzu Kubernetes(vSphere 8.x+) | vmware-vks |
| Aria Ops:指标、告警、容量规划 | vmware-aria |
| 带审批的多步骤工作流 | vmware-pilot |
| 合规基准(CIS / 等保 / PCI-DSS)、漂移检测、LLM 修复建议 | vmware-harden(uv tool install vmware-harden) |
| 负载均衡器、AVI、ALB、AKO、Ingress | vmware-avi(uv tool install vmware-avi) |
| 审计日志查询 | vmware-policy(vmware-audit CLI) |
常见工作流
创建应用网络(分段 + T1 网关 + NAT)
预检(判断,而非盲目顺序):
- 子网冲突检查:通过
inventory list-segments和networking list-ip-pools扫描是否有任何覆盖与提议的 CIDR 重叠。重叠子网会导致非对称路由或静默黑洞 —— NSX 不会警告你。 - 边缘集群容量:确认选择的
--edge-cluster健康(inventory list-edge-clusters+health edge-cluster-status <id>)且未达到 SR(服务路由器)限制。满载的边缘集群会允许 T1 创建,但路由会失败。 - T0 上行:父 T0 必须已配置 BGP/静态路由上游 —— 否则 SNAT 内部工作,但外部流量无法到达。
- NAT IP:
--translatedIP 必须来自 T0 通告的可路由地址池;使用随机 IP 会创建半工作状态的网络。 - 始终先执行
--dry-run—— 一旦分段连接到正在运行的 VM,删除它需要分离每个端口。
步骤:
vmware-nsx gateway create-tier1 app-t1 --name app-t1 --edge-cluster <ec-path> --tier0 <t0-path> --dry-run→ 审查,然后实际执行vmware-nsx segment create app-web-seg --name app-web-seg --tz <tz-overlay-path> --subnet <gw-cidr>vmware-nsx nat create-rule --tier1 app-t1 --rule-id snat-1 --action SNAT --source <private-cidr> --translated <pub-ip>- 端到端验证:
inventory list-segments、networking list-nat-rules app-t1,并测试连接到新分段的 VM - 失败时:连接错误或 HTTP 错误会打印一条教学行(例如,403 → 检查 NSX 角色权限;404 → 运行匹配的列表命令以获取确切 ID)。运行
vmware-nsx doctor验证连接性和凭据,修复后重新运行失败步骤 —— 先前完成的步骤是幂等的 PUT,安全可重试。
检查网络健康
判断:不要只枚举健康端点 —— 关联它们。以下顺序映射原因到症状:如果管理器宕机,传输节点也会显示为宕机(误报);从上到下修复。
vmware-nsx health manager-status—— 如果任何管理器节点处于DEGRADED或DOWN,先停止在此处解决,再信任下游信号vmware-nsx inventory list-transport-nodes然后health transport-node-status <id>查找任何不是UP的节点 —— 标记宕机 ≥ 5 分钟的节点;瞬时波动是正常的vmware-nsx inventory list-edge-clusters然后health edge-cluster-status <id>—— 验证 SR 放置是否平衡;一个边缘承载 80% 的 SR 是单点故障vmware-nsx health alarms --severity HIGH(重复执行CRITICAL)—— 严重性过滤器是精确匹配,不是“及以上”- 与
vmware-monitor交叉检查 vSphere 主机事件 —— 主机失去 vCenter 连接通常伪装成 NSX 问题
排查 VM 连接问题
判断:连接故障发生在三个层之一。首先确定哪个层,然后深入排查 —— 不要胡乱尝试。
- 第 1 层 — VM 到分段:VM 没有分段、错误的 vNIC 或端口管理性关闭 →
troubleshoot vm-segment+troubleshoot port-status - 第 2 层 — 分段到网关:分段未连接到 T1,T1 未连接到 T0 →
inventory get-tier1显示没有 Tier-0 路径 - 第 3 层 — 网关到上游:T0 BGP/静态缺失或 SNAT 未配置 →
networking bgp-neighbors、networking list-nat-rules
步骤(一旦识别出故障层即停止):
- 第 1 层:
troubleshoot vm-segment my-vm-01→ 如果没有端口,首先检查 vSphere vNIC 绑定 - 第 1 层:
troubleshoot port-status <segment-id>→ 管理性关闭或 DFW 阻止?如果是 DFW,跳转到 vmware-nsx-security - 第 2 层:
inventory get-tier1 app-t1→ Tier-0 路径存在且路由通告已启用?如果否,则 T1↔T0 链接断开 - 第 3 层:
networking bgp-neighbors tier0-gw→ 所有邻居ESTABLISHED?波动 → 上游问题 - 第 3 层:
networking list-nat-rules app-t1→ SNAT 规则覆盖源 CIDR?错误的 CIDR 是最常见原因
多目标操作
所有命令接受 --target <name> 以针对配置中的特定 NSX Manager 执行操作:
# 默认目标(config.yaml 中的第一个)
vmware-nsx inventory list-segments
# 特定目标
vmware-nsx inventory list-segments --target nsx-prod
vmware-nsx health alarms --target nsx-lab
使用模式
| 场景 | 推荐 | 原因 |
|---|---|---|
| 本地/小模型(Ollama、Qwen) | CLI | ~2K tokens vs MCP 的 ~8K |
| 云端模型(Claude、GPT-4o) | 任一 | MCP 提供结构化 JSON I/O |
| 自动化流水线 | MCP | 类型安全参数,结构化输出 |
MCP 工具(33 个 — 20 读、13 写)
所有 MCP 工具接受可选的 target 参数以选择要连接的 NSX Manager。
| 类别 | 工具 | 类型 | 描述 |
|---|---|---|---|
| 分段 | list_segments | 读 | 列出所有分段,包括类型、子网、管理状态、端口计数 |
get_segment | 读 | 获取分段详情,包括端口和子网配置 | |
create_segment | 写 | 创建覆盖或 VLAN 分段,包含子网和网关 | |
update_segment | 写 | 更新分段属性(名称、子网、网关链接) | |
delete_segment | 写 | 删除分段(在连接的端口上发出警告) | |
| Tier-0 GW | list_tier0_gateways | 读 | 列出 Tier-0 网关,包含 HA 模式和传输子网 |
get_tier0_gateway | 读 | 获取 Tier-0 详情:HA 模式、故障转移、传输子网 | |
get_bgp_neighbors | 读 | 列出 BGP 邻居会话,包含状态、ASN、前缀 | |
configure_tier0_bgp | 写 | 在 Tier-0 上配置 BGP(本地 AS、ECMP、SR 间 iBGP) | |
| Tier-1 GW | list_tier1_gateways | 读 | 列出 Tier-1 网关,包含链接的 Tier-0 和路由通告 |
get_tier1_gateway | 读 | 获取 Tier-1 详情:Tier-0 链接、路由通告 | |
create_tier1_gateway | 写 | 创建 Tier-1 网关,包含边缘集群和 Tier-0 链接 | |
update_tier1_gateway | 写 | 更新 Tier-1 属性(路由通告、Tier-0 链接) | |
delete_tier1_gateway | 写 | 删除 Tier-1 网关(首先移除默认本地服务) | |
| NAT | list_nat_rules | 读 | 列出 Tier-1 网关上的 NAT 规则 |
create_nat_rule | 写 | 在网关上创建 SNAT/DNAT/反射 NAT 规则 | |
delete_nat_rule | 写 | 删除 NAT 规则 | |
| 静态路由 | list_static_routes | 读 | 列出 Tier-1 网关上的静态路由 |
create_static_route | 写 | 添加静态路由,包含网络和下一跳 | |
delete_static_route | 写 | 移除静态路由 | |
| IP 池 | list_ip_pools | 读 | 列出 IP 池,包含使用情况摘要 |
get_ip_pool_usage | 读 | 显示池的分配利用率 | |
create_ip_pool | 写 | 创建新的 IP 地址池,包含分配范围 | |
delete_ip_pool | 写 | 永久删除 IP 地址池 | |
| 架构 | list_transport_zones | 读 | 列出传输区域,包含类型(OVERLAY/VLAN) |
list_transport_nodes | 读 | 列出传输节点,包含节点类型和状态 | |
list_edge_clusters | 读 | 列出边缘集群,包含成员计数和部署类型 | |
| 健康 | list_nsx_alarms | 读 | 列出按严重性过滤的活动 NSX 告警 |
get_transport_node_status | 读 | 传输节点连接性和配置状态 | |
get_edge_cluster_status | 读 | 边缘集群成员状态和故障转移配置 | |
get_nsx_manager_status | 读 | NSX Manager 集群健康和节点角色 | |
| 故障排除 | get_logical_port_status | 读 | 分段上所有端口的实现状态 |
get_segment_port_for_vm | 读 | 通过显示名称查找 VM 连接到的分段 |
读/写拆分:20 个工具是只读的,12 个修改状态。写入工具需要显式参数并由审计日志记录。--dry-run 预览是 CLI 功能;MCP 写入工具直接执行。
CLI 快速参考
# 清单(只读)
vmware-nsx inventory list-segments [--target <name>]
vmware-nsx inventory get-segment <segment-id>
vmware-nsx inventory list-tier0s
vmware-nsx inventory get-tier0 <tier0-id>
vmware-nsx inventory list-tier1s
vmware-nsx inventory get-tier1 <tier1-id>
vmware-nsx inventory list-transport-zones
vmware-nsx inventory list-transport-nodes
vmware-nsx inventory list-edge-clusters
# 网络(只读)
vmware-nsx networking list-nat-rules <tier1-id>
vmware-nsx networking bgp-neighbors <tier0-id>
vmware-nsx networking list-static-routes <tier1-id>
vmware-nsx networking list-ip-pools
vmware-nsx networking ip-pool-usage <pool-id>
# 分段管理(写入)
vmware-nsx segment create <id> --name <name> --tz <tz-path> [--vlan '100' | '100-200'] [--subnet <gw-cidr>] [--dry-run]
vmware-nsx segment update <id> [--name <name>] [--subnet <gw-cidr>] [--dry-run]
vmware-nsx segment delete <id> [--dry-run]
# 网关管理(写入)
vmware-nsx gateway create-tier1 <id> --name <name> [--tier0 <t0-path>] [--edge-cluster <ec-path>] [--dry-run]
vmware-nsx gateway update-tier1 <id> [--name <name>] [--tier0 <t0-path>] [--advertise <types>] [--dry-run]
vmware-nsx gateway delete-tier1 <id> [--dry-run]
vmware-nsx gateway configure-tier0-bgp <tier0-id> --local-as <asn> [--ecmp/--no-ecmp] [--dry-run]
# NAT(写入)
vmware-nsx nat create-rule --tier1 <id> --rule-id <id> --action SNAT --source <cidr> --translated <ip> [--dry-run]
vmware-nsx nat delete-rule --tier1 <id> --rule-id <id> [--dry-run]
# 静态路由(写入)
vmware-nsx route create-static --tier1 <id> --route-id <id> --network <cidr> --next-hop <ip> [--dry-run]
vmware-nsx route delete-static --tier1 <id> --route-id <id> [--dry-run]
# IP 池(写入)
vmware-nsx ip-pool create <pool-id> --name <name> --start <ip> --end <ip> --cidr <cidr> [--gateway <ip>] [--dry-run]
# 健康与故障排除(只读)
vmware-nsx health alarms [--severity CRITICAL]
vmware-nsx health transport-node-status <node-id>
vmware-nsx health edge-cluster-status <cluster-id>
vmware-nsx health manager-status
vmware-nsx troubleshoot vm-segment <vm-name>
vmware-nsx troubleshoot port-status <segment-id>