コンテンツにスキップ

サイトコンソール

2026-07-28 に、本デプロイメントの 1 台の CE から取得。sitecli/capture-manifest.json にどのノードかが記録されており、scripts/capture-sitecli.sh --check により稼働中の CE に対してコマンド群を再検証できます。

すべての Customer Edge は https://<sli-ip>:65500 で F5 のサイトコンソールを提供します。 本デプロイメントでは通常、これが最初に試すべき経路です。

要求されるものが最も少ない方法です。配布する SSH キーも、維持する踏み台ホストも、ノード上の パブリック IP も、有効化のための VM 置き換えも不要です。誰が接続できるかは Azure RBAC の 判断になります。またサイトが登録されている必要もありません。本ページは 3 つのサイトすべてが 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

    3 行すべてに WARNING: が付いています。これは Azure CLI が進行状況を stderr に書き出して いるだけで、問題ではありません。接続する前に Tunnel is ready を待ってください。

  3. リスナーがローカルのループバック上にあることを確認します。

    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

そのレルムを伴う 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 はコマンドラインからパスワードを取得する代わりに 入力を促します。コマンドラインに書くとシェル履歴やプロセス一覧に残ってしまいます。

証明書の警告が、同時に 3 つの理由で発生します。 証明書を直接確認すると次のとおりです。

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 としてサインインします。本ドキュメントはパスワードを公開しませんし、公開すべきでも ありません。

公開しないことが、見た目以上にここで重要である理由は 2 つあります。

  • 本ドキュメントは公開されています。フリート現行のコンソールパスワードを掲載すれば、「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_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 を設定して apply する
トンネルは開始するがリソース ID が空jq フィルターがサイトキーではなく VM 名を使用したeastus01/02/03 をキーにする
401 Unauthorized、レルム Volterra Site Console障害ではない — 認証されていないリクエストadmin 資格情報を渡す
ブラウザが証明書を拒否する自己署名、名前の不一致、2025 年 10 月以降期限切れ想定どおり。subject が CN=site-local.volterra.io であることを確認して続行する