- หน้าแรก
- เครือข่ายมัลติคลาวด์
- Customer Edge diagnostics
- Reaching a Customer Edge
- คอนโซลไซต์
คอนโซลไซต์
บันทึกเมื่อ 2026-07-28 จาก CE หนึ่งเครื่องของการติดตั้งนี้ sitecli/capture-manifest.json
บันทึกว่าเป็นโหนดใด และ scripts/capture-sitecli.sh --check จะตรวจสอบชุดคำสั่ง
ซ้ำอีกครั้งกับ CE ที่ทำงานอยู่จริง
Customer Edge ทุกเครื่องให้บริการคอนโซลไซต์ของ F5 ที่ https://<sli-ip>:65500 ในการติดตั้งนี้
มักเป็นเส้นทางที่ควรลองก่อน
มันเรียกร้องจากคุณน้อยที่สุด: ไม่ต้องแจกจ่ายคีย์ SSH ไม่ต้องดูแล jump host ไม่ต้องมี IP สาธารณะบน
โหนด และไม่ต้องเปลี่ยน VM เพื่อเปิดใช้งาน ใครที่จะเชื่อมต่อได้กลายเป็น การตัดสินใจของ Azure
RBAC และไม่จำเป็นต้องให้ไซต์ลงทะเบียนแล้ว: หน้านี้ถูกบันทึกครั้งแรกขณะที่ทั้งสามไซต์รายงาน
site_state: FAILED และตรวจสอบซ้ำแล้วไม่มีการเปลี่ยนแปลงกับโหนดเดียวกันเมื่อโหนดเหล่านั้นอยู่ในสถานะ ONLINE
ข้อจำกัดคือคอนโซลไซต์ตอบสนองเฉพาะบนที่อยู่ภายใน (SLI) ของโหนดเท่านั้น ซึ่งเข้าถึงได้จากภายใน VNet เท่านั้น Azure Bastion ปิดช่องว่างนั้นโดยไม่ต้องเพิ่ม สิ่งอื่นใดบนเครือข่าย
ก่อนเริ่มต้น
หัวข้อที่มีชื่อว่า “ก่อนเริ่มต้น”-
ลงชื่อเข้าใช้ Azure และเพิ่มส่วนขยาย Bastion การทำทันเนลเป็นคุณสมบัติของไคลเอนต์เนทีฟ และส่วนขยายนี้ไม่ได้ติดตั้งมาโดยค่าเริ่มต้น
Terminal window az loginaz extension add --name bastion -
ต้องมีสิทธิ์ Reader บนเครื่องเสมือน CE, เน็ตเวิร์กอินเทอร์เฟซของมัน และโฮสต์ Bastion นี่เป็นข้อกำหนดที่ Microsoft ระบุไว้ในเอกสาร และ ยังไม่ได้รับการตรวจสอบที่นี่ — ทุกการรันในการ ติดตั้งนี้ดำเนินการในฐานะเจ้าของ subscription ดังนั้นจึงยังไม่มีการแสดงว่าบทบาทที่เล็กกว่านั้นเพียงพอ หรือไม่เพียงพอ
-
ยืนยันว่า Bastion ถูกติดตั้งและมีความสามารถที่ต้องการ SKU แบบ Basic ไม่รองรับทั้งการทำทันเนลและ การเชื่อมต่อแบบอ้างอิง IP ดังนั้น
StandardและTrueที่นี่จึงมีความสำคัญทั้งคู่Terminal window az network bastion list -g "$(terraform output -raw resource_group_name)" \--query "[].{name:name, sku:sku.name, tunneling:enableTunneling}" -o tableName Sku Tunneling----------------- -------- -----------mcn-ce-ha-bastion Standard True
เปิดทันเนล
หัวข้อที่มีชื่อว่า “เปิดทันเนล”นำค่าต่างๆ มาจาก terraform output แทนการพิมพ์เอง — resource id ไม่ใช่สิ่งที่
ควรประกอบขึ้นด้วยมือ
-
อ่านชื่อของโฮสต์ Bastion, resource group และ resource id ของ VM ของ CE เป้าหมาย
Terminal window cd terraformBASTION=$(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-bastionrg-mcn-ce-ha-<deployer>/subscriptions/…/providers/Microsoft.Compute/virtualMachines/f5-xc-ce-vm-01 -
เริ่มทันเนล มันจะเปิดพอร์ตไว้จนกว่าจะหยุด ดังนั้นให้รันเป็นเบื้องหลังหรือใช้ เทอร์มินัลที่สอง
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: 65500WARNING: Tunnel is ready, connect on port 65500WARNING: Ctrl + C to closeทั้งสามบรรทัดมีคำนำหน้าว่า
WARNING:นั่นเป็นเพราะ Azure CLI เขียนความคืบหน้าไปที่ stderr ไม่ใช่ปัญหา รอให้ปรากฏTunnel is readyก่อนเชื่อมต่อ -
ยืนยันว่าตัวรับฟังอยู่ในเครื่อง บน loopback:
Terminal window lsof -nP -iTCP:65500 -sTCP:LISTENCOMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEPython 41648 you 7u IPv4 … 0t0 TCP 127.0.0.1:65500 (LISTEN) -
เปิดคอนโซล ทันเนลทำให้มันอยู่ในเครื่อง ดังนั้นที่อยู่คือ
localhost— ไม่ใช่ ที่อยู่ของโหนดTerminal window open https://localhost:65500/ # macOSxdg-open https://localhost:65500/ # Linux -
หยุดทันเนลเมื่อคุณใช้งานเสร็จ —
Ctrl-Cหรือkill %1หากคุณรันไว้เป็นเบื้องหลัง การเปิดค้างไว้จะยึดพอร์ตท้องถิ่น 65500 และเซสชัน Bastion ไว้
สิ่งที่คุณจะเห็น
หัวข้อที่มีชื่อว่า “สิ่งที่คุณจะเห็น”กล่องโต้ตอบขอข้อมูลรับรอง ไม่ใช่หน้าล็อกอิน คอนโซลใช้การยืนยันตัวตนแบบ HTTP Basic ดังนั้น เบราว์เซอร์จะแสดงกล่องขอชื่อผู้ใช้และรหัสผ่านของตัวเอง ไม่มีฟอร์มให้ดู:
curl -skI https://localhost:65500/HTTP/1.1 401 UnauthorizedWWW-Authenticate: Basic realm="Volterra Site Console"Content-Type: text/html; charset=utf-8Content-Length: 0401 พร้อม realm นั้นคือคอนโซลทำงานได้ถูกต้อง เป็นสิ่งที่คำขอที่ไม่ได้ยืนยันตัวตน
ควรได้รับ — และการส่งข้อมูลรับรอง admin ไปที่ URL เดียวกันจะตอบ
200 ซึ่งเป็นวิธียืนยันข้อมูลรับรองก่อนเปิดเบราว์เซอร์:
curl -sk -u admin -o /dev/null -w '%{http_code}\n' https://localhost:65500/Enter host password for user 'admin':200-u admin โดยไม่ใส่เครื่องหมายทวิภาคทำให้ curl ถามรหัสผ่านแทนที่จะรับมาจาก
บรรทัดคำสั่ง ซึ่งจะไปปรากฏในประวัติเชลล์และในรายการโปรเซส
คำเตือนเรื่องใบรับรอง ด้วยสามเหตุผลในคราวเดียว ตรวจสอบใบรับรองโดยตรง:
openssl s_client -connect localhost:65500 -servername localhost </dev/null 2>/dev/null \ | openssl x509 -noout -subject -issuer -datessubject=C=US, ST=California, L=Santa Clara, O=Volterra, OU=Volterra Edge Services, CN=site-local.volterra.ioissuer=C=US, ST=California, L=Santa Clara, O=Volterra, OU=Volterra Edge Services, CN=site-local.volterra.ionotBefore=Oct 25 04:51:31 2024 GMTnotAfter=Oct 25 04:51:31 2025 GMTsubject เท่ากับ issuer ดังนั้นมันเป็นใบรับรองที่ลงนามด้วยตนเอง ชื่อคือ site-local.volterra.io ขณะที่
คุณกำลังเชื่อมต่อไปที่ localhost ดังนั้นจึงไม่ตรงกัน และในบิลด์ที่การติดตั้งนี้
ใช้อยู่ ใบรับรองหมดอายุเมื่อวันที่ 25 ตุลาคม 2025 — อุปกรณ์ให้มาเช่นนั้น และไม่มีสิ่งใด
ในรีโพซิทอรีนี้ที่ต่ออายุมันให้
คาดหวังได้ว่าจะได้คำเตือนตรงๆ จากเบราว์เซอร์ และจะได้ทุกครั้ง บรรทัด subject ด้านบนคือ ส่วนที่มีประโยชน์: มันเป็นวิธียืนยันว่าคุณเชื่อมถึงอุปกรณ์จริง ไม่ใช่สิ่งอื่น ที่กำลังรับฟังอยู่บนพอร์ตท้องถิ่น 65500
ข้อมูลรับรองของ admin
หัวข้อที่มีชื่อว่า “ข้อมูลรับรองของ admin”ลงชื่อเข้าใช้เป็น admin เอกสารนี้ไม่เผยแพร่รหัสผ่าน และไม่ควรเผยแพร่
สองเหตุผลที่การไม่เผยแพร่มันมีความสำคัญที่นี่มากกว่าที่เห็น:
- เอกสารนี้เป็นสาธารณะ การพิมพ์รหัสผ่านคอนโซลปัจจุบันของฟลีตจะเปลี่ยน “มีสิทธิ์ Reader บน Bastion” ให้กลายเป็นการเข้าถึงอุปกรณ์อย่างเต็มที่สำหรับทุกคนที่อ่านหน้านี้
- รหัสผ่านที่เผยแพร่ในเอกสารจะผิดทันทีที่มีใครหมุนเวียนเปลี่ยนมัน และ ผิดในแบบที่ทำให้เข้าใจผิดมากที่สุด — ผู้อ่านจะสรุปว่าการเข้าถึงของตนเสียหาย ไม่ใช่ ว่าหน้านี้เก่าล้าสมัย
เมื่อมีการหมุนเวียนเปลี่ยนแล้ว ให้ไปเอามาจากที่ที่ทีมของคุณเก็บความลับด้านปฏิบัติการ
เหตุใดทันเนลจึงต้องชี้ไปที่ resource id
หัวข้อที่มีชื่อว่า “เหตุใดทันเนลจึงต้องชี้ไปที่ resource id”--target-resource-id เป็นสิ่งจำเป็น การชี้ไปที่ที่อยู่ของโหนดแทนจะถูกปฏิเสธ —
ไม่ว่าคุณจะใช้ที่อยู่ใด ดังนั้นจึงเจตนาไม่พิมพ์ที่อยู่จริงไว้ที่นี่:
az network bastion tunnel --name "$BASTION" -g "$RG" \ --target-ip-address <any-sli-address> --resource-port 65500 --port 65501ERROR: Custom ports are not allowed. Allowed ports for Tunnel with IP connect is 22, 3389.เหตุผลไม่ใช่ว่าการเชื่อมต่อแบบอ้างอิง IP ถูกปิดใช้งาน — บน Bastion นี้
ip_connect_enabled เป็น true Microsoft ไม่รองรับพอร์ตกำหนดเองผ่านการเชื่อมต่อ
ไคลเอนต์เนทีฟแบบอ้างอิง IP ไม่ว่าจะตั้งค่านั้นไว้อย่างไร
(เอกสาร Azure) และ 65500 คือ
พอร์ตกำหนดเอง การตรวจสอบการตั้งค่า Bastion ที่นี่ไม่นำไปสู่ผลลัพธ์ใด ให้ใช้ resource
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_name เป็น null หรือว่างเปล่า | ยังไม่ได้ติดตั้ง Bastion | ตั้งค่า enable_bastion = true แล้ว apply |
| ทันเนลเริ่มทำงานแต่ resource id ว่างเปล่า | ตัวกรอง jq ใช้ชื่อ VM แทนคีย์ของไซต์ | ใช้คีย์ eastus01/02/03 |
401 Unauthorized, realm Volterra Site Console | ไม่ใช่ความผิดพลาด — เป็นคำขอที่ไม่ได้ยืนยันตัวตน | ส่งข้อมูลรับรอง admin |
| เบราว์เซอร์ปฏิเสธใบรับรอง | ลงนามด้วยตนเอง ชื่อไม่ตรงกัน และหมดอายุตั้งแต่ ต.ค. 2025 | เป็นเรื่องคาดหมาย; ยืนยันว่า subject เป็น CN=site-local.volterra.io แล้วดำเนินการต่อ |
เส้นทางอื่นๆ
หัวข้อที่มีชื่อว่า “เส้นทางอื่นๆ”ONLINE.