跳到內容

站台主控台

擷取時間為 2026-07-28,來源為本部署中的其中一個 CE。sitecli/capture-manifest.json 記錄了是哪一個節點,而 scripts/capture-sitecli.sh --check 會針對實際運作中的 CE 重新驗證指令介面。

每個 Customer Edge 都會在 https://<sli-ip>:65500 上提供 F5 的站台主控台。在本 部署中,這通常是應該優先嘗試的途徑。

它對您的要求最少:不需要散發 SSH 金鑰、不需要維護跳板主機、節點上不需要公用 IP, 也不需要替換 VM 才能啟用。誰可以連線變成一項 Azure RBAC 決策。而且它不需要站台 已完成註冊:本頁最初擷取時,三個站台全都回報 site_state: FAILED,而在這些節點變成 ONLINE 之後,對同樣的節點重新驗證的結果並無變化。

其代價是站台主控台只會在節點的內部(SLI)位址上回應,而該位址只能從 VNet 內部觸及。 Azure Bastion 弭平了這個落差,而不需要在網路上放置其他任何東西。

  1. 登入 Azure 並加入 Bastion 擴充功能。通道功能屬於原生用戶端功能,且該擴充功能 預設並未安裝。

    Terminal window
    az login
    az extension add --name bastion
  2. 對 CE 虛擬機器、其網路介面以及 Bastion 主機持有 Reader 權限。 這是 Microsoft 文件所述的需求,且在此未經驗證 — 本部署中的每一次執行都是以 訂用帳戶擁有者身分進行,因此並未證實任何較低權限的角色是否足夠或不足。

  3. 確認 Bastion 已部署且具備所需能力。Basic SKU 既不支援通道也不支援以 IP 連線, 因此此處的 StandardTrue 兩者都至關重要。

    Terminal window
    az network bastion list -g "$(terraform output -raw resource_group_name)" \
    --query "[].{name:name, sku:sku.name, tunneling:enableTunneling}" -o table
    Name Sku Tunneling
    ----------------- -------- -----------
    mcn-ce-ha-bastion Standard True

請從 terraform output 取得數值,而不要手動輸入 — 資源 id 不是應該手工拼湊的東西。

  1. 讀取 Bastion 主機名稱、資源群組,以及目標 CE 的 VM 資源 id。

    Terminal window
    cd terraform
    BASTION=$(terraform output -raw bastion_name)
    RG=$(terraform output -raw resource_group_name)
    VM_ID=$(terraform output -json ce_vm_ids | jq -r '.eastus01')
    mcn-ce-ha-bastion
    rg-mcn-ce-ha-<deployer>
    /subscriptions/…/providers/Microsoft.Compute/virtualMachines/f5-xc-ce-vm-01
  2. 啟動通道。它會持續開著連接埠直到停止,因此請將其放到背景執行或使用第二個終端機。

    Terminal window
    az network bastion tunnel \
    --name "$BASTION" \
    --resource-group "$RG" \
    --target-resource-id "$VM_ID" \
    --resource-port 65500 \
    --port 65500 &
    WARNING: Opening tunnel on port: 65500
    WARNING: Tunnel is ready, connect on port 65500
    WARNING: Ctrl + C to close

    這三行都以 WARNING: 為前綴。那是 Azure CLI 將進度寫到 stderr,並不是問題。 請等到出現 Tunnel is ready 後再連線。

  3. 確認接聽端是本機、位於 loopback 上:

    Terminal window
    lsof -nP -iTCP:65500 -sTCP:LISTEN
    COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
    Python 41648 you 7u IPv4 … 0t0 TCP 127.0.0.1:65500 (LISTEN)
  4. 開啟主控台。通道讓它成為本機服務,因此位址是 localhost — 而不是節點的位址。

    Terminal window
    open https://localhost:65500/ # macOS
    xdg-open https://localhost:65500/ # Linux
  5. 完成後請停止通道 — 按 Ctrl-C,若放到背景執行則使用 kill %1。 讓它持續開啟會佔用本機連接埠 65500 以及該 Bastion 工作階段。

一個認證對話框,而不是登入頁面。 主控台使用 HTTP Basic 驗證,因此瀏覽器會自行 彈出使用者名稱與密碼提示。沒有表單可看:

Terminal window
curl -skI https://localhost:65500/
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Volterra Site Console"
Content-Type: text/html; charset=utf-8
Content-Length: 0

出現帶有該 realm 的 401 表示主控台運作正常。這正是未經驗證的請求應該得到的回應 — 而對同一個 URL 提供 admin 認證會回傳 200,這也是您在開啟瀏覽器前確認認證的方式:

Terminal window
curl -sk -u admin -o /dev/null -w '%{http_code}\n' https://localhost:65500/
Enter host password for user 'admin':
200

-u admin 後不加冒號會讓 curl 提示輸入密碼,而不是從命令列取得,否則密碼會留在 shell 歷史紀錄與行程清單中。

一則憑證警告,同時有三個原因。 直接檢查憑證:

Terminal window
openssl s_client -connect localhost:65500 -servername localhost </dev/null 2>/dev/null \
| openssl x509 -noout -subject -issuer -dates
subject=C=US, ST=California, L=Santa Clara, O=Volterra, OU=Volterra Edge Services, CN=site-local.volterra.io
issuer=C=US, ST=California, L=Santa Clara, O=Volterra, OU=Volterra Edge Services, CN=site-local.volterra.io
notBefore=Oct 25 04:51:31 2024 GMT
notAfter=Oct 25 04:51:31 2025 GMT

subject 與 issuer 相同,因此它是自簽憑證。名稱為 site-local.volterra.io,而您連線的 是 localhost,因此不會相符。而且在本部署所執行的組建上,該憑證已於 2025 年 10 月 25 日到期 — 設備隨附此憑證,而本儲存庫中沒有任何機制會更新它。

請預期看到一則直白的瀏覽器警告,而且每次都會出現。上面的 subject 那一行才是有用的 部分:那是您確認自己連到的是設備,而不是其他在本機連接埠 65500 上接聽之服務的方式。

admin 登入。本文件不會公布密碼,也不應公布。

不公布它之所以在此比看起來更重要,有兩個原因:

  • 本文件是公開的。印出整個機群目前的主控台密碼,會讓「持有 Bastion 的 Reader 權限」 對任何讀到本頁的人而言變成完整的設備存取權。
  • 在文件中公布的密碼,在有人輪替它的那一刻就是錯的,而且錯得最具誤導性 — 讀者會 以為自己的存取權壞了,而不是這一頁過時了。

一旦密碼經過輪替,請從您團隊存放營運機密的地方取得。

--target-resource-id 是必要的。改以節點的位址為目標會被拒絕 — 無論您使用哪個位址皆然,因此此處刻意沒有印出任何真實位址:

Terminal window
az network bastion tunnel --name "$BASTION" -g "$RG" \
--target-ip-address <any-sli-address> --resource-port 65500 --port 65501
ERROR: Custom ports are not allowed. Allowed ports for Tunnel with IP connect is 22, 3389.

原因並非以 IP 連線的功能被停用 — 在此 Bastion 上 ip_connect_enabledtrue。 無論該設定為何,Microsoft 都不支援在以 IP 為基礎的原生用戶端連線上使用自訂連接埠 (Azure 文件),而 65500 是自訂連接埠。在此檢查 Bastion 組態並不會有結果;請使用資源 id。

徵狀原因解法
ERROR: Custom ports are not allowed. Allowed ports for Tunnel with IP connect is 22, 3389.使用了 --target-ip-address改用 --target-resource-id
ERROR: Defined port is currently unavailable另一條通道已佔用該本機連接埠停止另一條通道,或傳入不同的 --port--resource-port 維持 65500
terraform output -raw bastion_namenull 或空值Bastion 未部署設定 enable_bastion = true 並套用
通道啟動但資源 id 為空jq 篩選使用了 VM 名稱而非站台索引鍵eastus01/02/03 為索引鍵
401 Unauthorized,realm 為 Volterra Site Console並非故障 — 這是未經驗證的請求提供 admin 認證
瀏覽器拒絕該憑證自簽、名稱不符,且自 2025 年 10 月起已到期屬預期情形;確認 subject 為 CN=site-local.volterra.io 後繼續