इसे छोड़कर कंटेंट पर जाएं

साइट कंसोल

इस डिप्लॉयमेंट के एक CE से 2026-07-28 को कैप्चर किया गया। sitecli/capture-manifest.json यह दर्ज करता है कि कौन सा नोड था, और scripts/capture-sitecli.sh --check एक लाइव CE के विरुद्ध कमांड सरफ़ेस को पुनः सत्यापित करता है।

प्रत्येक Customer Edge, F5 के साइट कंसोल को https://<sli-ip>:65500 पर सर्व करता है। इस डिप्लॉयमेंट पर यह आमतौर पर सबसे पहले आज़माने वाला रास्ता होता है।

यह आपसे सबसे कम मांगता है: वितरित करने के लिए कोई SSH कुंजी नहीं, बनाए रखने के लिए कोई जंप होस्ट नहीं, नोड पर कोई सार्वजनिक IP नहीं, और इसे सक्षम करने के लिए कोई VM प्रतिस्थापन नहीं। कौन कनेक्ट कर सकता है, यह एक Azure RBAC निर्णय बन जाता है। और इसे साइट के पंजीकृत होने की आवश्यकता नहीं है: यह पृष्ठ पहली बार तब कैप्चर किया गया था जब तीनों साइटें site_state: FAILED रिपोर्ट कर रही थीं, और उन्हीं नोड्स के विरुद्ध ONLINE होने के बाद अपरिवर्तित रूप से पुनः सत्यापित किया गया।

अड़चन यह है कि साइट कंसोल केवल नोड के आंतरिक (SLI) पते पर उत्तर देता है, जो केवल VNet के भीतर से पहुँच योग्य है। Azure Bastion नेटवर्क पर कुछ और रखे बिना उस अंतर को समाप्त कर देता है।

शुरू करने से पहले

Section titled “शुरू करने से पहले”
  1. Azure में साइन इन करें और Bastion एक्सटेंशन जोड़ें। टनलिंग एक नेटिव-क्लाइंट सुविधा है और एक्सटेंशन डिफ़ॉल्ट रूप से इंस्टॉल नहीं होता।

    Terminal window
    az login
    az extension add --name bastion
  2. CE वर्चुअल मशीन, उसके नेटवर्क इंटरफ़ेस, और Bastion होस्ट पर Reader रखें। यह Microsoft की दस्तावेज़ीकृत आवश्यकता है और यहाँ असत्यापित है — इस डिप्लॉयमेंट में प्रत्येक रन सब्सक्रिप्शन ओनर के रूप में था, इसलिए कोई निम्नतर भूमिका पर्याप्त या अपर्याप्त सिद्ध नहीं की गई है।

  3. पुष्टि करें कि Bastion डिप्लॉय है और सक्षम है। Basic SKU न टनलिंग का समर्थन करता है न 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 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 को कमांड लाइन से पासवर्ड लेने के बजाय उसके लिए प्रॉम्प्ट करने को कहता है, जहाँ वह शेल इतिहास और प्रोसेस सूची में पहुँच जाता।

एक प्रमाणपत्र चेतावनी, एक साथ तीन कारणों से। प्रमाणपत्र की सीधे जाँच करने पर:

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 से कनेक्ट कर रहे हैं, इसलिए यह मेल नहीं खाएगा। और जिस बिल्ड पर यह डिप्लॉयमेंट चलता है, उस पर प्रमाणपत्र 25 अक्टूबर 2025 को समाप्त हो गया — उपकरण इसे शिप करता है, और इस रिपॉज़िटरी में कुछ भी इसका नवीनीकरण नहीं करता।

एक स्पष्ट ब्राउज़र चेतावनी की अपेक्षा करें, और हर बार उसकी अपेक्षा करें। ऊपर की subject पंक्ति उपयोगी हिस्सा है: यही वह तरीका है जिससे आप पुष्टि करते हैं कि आप उपकरण तक पहुँचे, न कि लोकल पोर्ट 65500 पर सुन रही किसी और चीज़ तक।

admin के रूप में साइन इन करें। यह दस्तावेज़ीकरण पासवर्ड प्रकाशित नहीं करता, और नहीं करना चाहिए।

इसे प्रकाशित न करने के दो कारण यहाँ जितना दिखता है उससे अधिक महत्वपूर्ण हैं:

  • यह दस्तावेज़ीकरण सार्वजनिक है। फ़्लीट का वर्तमान कंसोल पासवर्ड छापना “Bastion पर Reader रखता है” को इस पृष्ठ को पढ़ने वाले किसी भी व्यक्ति के लिए पूर्ण उपकरण एक्सेस में बदल देगा।
  • दस्तावेज़ीकरण में प्रकाशित पासवर्ड उस क्षण गलत हो जाता है जब कोई उसे रोटेट करता है, और सबसे भ्रामक तरीके से गलत — पाठक निष्कर्ष निकालता है कि उसकी पहुँच टूटी हुई है, न कि यह कि पृष्ठ पुराना है।

एक बार रोटेट हो जाने के बाद, इसे वहाँ से लें जहाँ आपकी टीम परिचालन गुप्त जानकारी रखती है।

टनल को रिसोर्स id ही क्यों लक्षित करना चाहिए

Section titled “टनल को रिसोर्स id ही क्यों लक्षित करना चाहिए”

--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_enabled true है। Microsoft उस सेटिंग की परवाह किए बिना IP-आधारित नेटिव-क्लाइंट कनेक्शनों पर कस्टम पोर्ट का समर्थन नहीं करता (Azure docs), और 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_name null या खाली हैBastion डिप्लॉय नहीं हैenable_bastion = true सेट करें और apply करें
टनल शुरू होता है लेकिन रिसोर्स id खाली हैjq फ़िल्टर ने साइट की के बजाय VM नाम का उपयोग कियाeastus01/02/03 पर की करें
401 Unauthorized, realm Volterra Site Consoleकोई खराबी नहीं — अप्रमाणित अनुरोधadmin क्रेडेंशियल दें
ब्राउज़र प्रमाणपत्र अस्वीकार करता हैस्व-हस्ताक्षरित, नाम बेमेल, और अक्टूबर 2025 से समाप्तअपेक्षित; पुष्टि करें कि subject CN=site-local.volterra.io है और आगे बढ़ें