VMware NSX
免責聲明:這是一個社群維護的開源專案,與 VMware, Inc. 或 Broadcom Inc. 無關聯、未經其背書或贊助。「VMware」和「NSX」是 Broadcom 的商標。原始碼可在 github.com/zw008/VMware-NSX 以 MIT 授權公開審查。
VMware NSX 網路管理 — 32 個用於區段、閘道、NAT、路由和 IPAM 的 MCP 工具。
專注於 NSX-T / NSX 4.x Policy 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 |
| 結構庫存 | 傳輸區域、傳輸節點、Edge 叢集 | 3 | 3R / 0W |
| 健康狀態 | NSX 警報、傳輸節點狀態、Edge 叢集狀態、管理程式狀態 | 4 | 4R / 0W |
| 故障排除 | 邏輯連接埠狀態、VM 對應區段查詢 | 2 | 2R / 0W |
總計:33 個工具(20 個唯讀 + 13 個寫入)
快速安裝
uv tool install vmware-nsx-mgmt
vmware-nsx doctor
何時使用此技能
- 列出、建立或修改 NSX 區段(Overlay / VLAN 支援)
- 建立或管理 Tier-0 / Tier-1 閘道
- 設定 NAT 規則(SNAT、DNAT、Reflexive)
- 檢視或新增靜態路由、檢查 BGP 鄰居
- 管理 IP 位址池和子網路分配
- 檢查 NSX 警報、傳輸節點健康狀態、Edge 叢集狀態
- 查找 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 叢集容量:確認選擇的
--edge-cluster處於健康狀態(inventory list-edge-clusters+health edge-cluster-status <id>)且未達到 SR(服務路由器)限制。一個完全加載的 Edge 叢集會接受 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 → 執行對應的 list 命令以獲取確切 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 放置是否平衡;一個 Edge 持有 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 約 8K for MCP |
| 雲端模型 (Claude, GPT-4o) | 任一 | MCP 提供結構化的 JSON I/O |
| 自動化管道 | MCP | 型別安全參數、結構化輸出 |
MCP 工具(33 個 — 20 個讀取、13 個寫入)
所有 MCP 工具都接受可選的 target 參數來選擇要連線的 NSX Manager。
| 類別 | 工具 | 類型 | 描述 |
|---|---|---|---|
| 區段 | list_segments | 讀取 | 列出所有區段,包含類型、子網路、管理狀態、連接埠計數 |
get_segment | 讀取 | 取得區段詳細資訊,包含連接埠和子網路設定 | |
create_segment | 寫入 | 建立 Overlay 或 VLAN 區段,包含子網路和閘道 | |
update_segment | 寫入 | 更新區段屬性(名稱、子網路、閘道連結) | |
delete_segment | 寫入 | 刪除區段(在存在已連接的連接埠時發出警告) | |
| Tier-0 閘道 | 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 閘道 | list_tier1_gateways | 讀取 | 列出 Tier-1 閘道,包含連結的 Tier-0 和路由通告 |
get_tier1_gateway | 讀取 | 取得 Tier-1 詳細資訊:Tier-0 連結、路由通告 | |
create_tier1_gateway | 寫入 | 建立 Tier-1 閘道,包含 Edge 叢集和 Tier-0 連結 | |
update_tier1_gateway | 寫入 | 更新 Tier-1 屬性(路由通告、Tier-0 連結) | |
delete_tier1_gateway | 寫入 | 刪除 Tier-1 閘道(首先移除預設的 locale-service) | |
| NAT | list_nat_rules | 讀取 | 列出 Tier-1 閘道上的 NAT 規則 |
create_nat_rule | 寫入 | 在閘道上建立 SNAT/DNAT/Reflexive 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 | 讀取 | 列出 Edge 叢集,包含成員計數和部署類型 | |
| 健康狀態 | list_nsx_alarms | 讀取 | 列出依嚴重性過濾的活動 NSX 警報 |
get_transport_node_status | 讀取 | 傳輸節點連線和設定狀態 | |
get_edge_cluster_status | 讀取 | Edge 叢集成員狀態和容錯移轉設定 | |
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>
# 診斷
vmware-nsx doctor
環境設定
設定檔 ~/.vmware-nsx/config.yaml 包含連線詳細資訊:
default:
nsx_manager: nsx01.example.com
username: admin
# 建議使用環境變數,不要使用純文字密碼
password: "${NSX_PASSWORD}"
# 或者:api_token: "${NSX_API_TOKEN}"
verify_ssl: true
nsx-prod:
nsx_manager: nsx-prod.example.com
username: admin
password: "${NSX_PROD_PASSWORD}"
verify_ssl: true
nsx-lab:
nsx_manager: nsx-lab.example.com
username: admin
password: "${NSX_LAB_PASSWORD}"
verify_ssl: false # 僅限實驗室環境