Pular para o conteúdo

Console do Site

Capturado em 28/07/2026 a partir de um CE deste deployment. sitecli/capture-manifest.json registra qual nó, e scripts/capture-sitecli.sh --check reverifica a superfície de comandos contra um CE ativo.

Todo Customer Edge serve o Console do Site da F5 em https://<sli-ip>:65500. Neste deployment, normalmente é a rota a se tentar primeiro.

É o que exige menos de você: nenhuma chave SSH para distribuir, nenhum host de salto para manter, nenhum IP público no nó e nenhuma substituição de VM para habilitá-lo. Quem pode se conectar passa a ser uma decisão de RBAC do Azure. E não é necessário que o site esteja registrado: esta página foi capturada inicialmente enquanto os três sites reportavam site_state: FAILED, e reverificada sem alterações contra os mesmos nós depois que eles estavam ONLINE.

O detalhe é que o Console do Site responde apenas no endereço interno (SLI) do nó, acessível somente de dentro da VNet. O Azure Bastion fecha essa lacuna sem colocar mais nada na rede.

  1. Faça login no Azure e adicione a extensão do Bastion. O tunelamento é um recurso de cliente nativo e a extensão não é instalada por padrão.

    Terminal window
    az login
    az extension add --name bastion
  2. Tenha a função Reader na máquina virtual do CE, em sua interface de rede e no host Bastion. Este é o requisito documentado pela Microsoft e está não verificado aqui — toda execução neste deployment foi feita como proprietário da assinatura, portanto nenhuma função menor foi demonstrada como suficiente ou insuficiente.

  3. Confirme que o Bastion está implantado e é capaz. A SKU Basic não suporta nem tunelamento nem conexão baseada em IP, portanto Standard e True aqui são ambos essenciais.

    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

Obtenha os valores a partir de terraform output em vez de digitá-los — o id do recurso não é algo para montar à mão.

  1. Leia o nome do host Bastion, o grupo de recursos e o id do recurso da VM do CE de destino.

    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. Inicie o túnel. Ele mantém a porta aberta até ser interrompido, portanto execute-o em segundo plano ou use um segundo terminal.

    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

    Todas as três linhas têm o prefixo WARNING:. Isso é a Azure CLI escrevendo o progresso no stderr, não um problema. Aguarde Tunnel is ready antes de conectar.

  3. Confirme que o listener é local, no 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. Abra o console. O túnel o torna local, portanto o endereço é localhost — não o endereço do nó.

    Terminal window
    open https://localhost:65500/ # macOS
    xdg-open https://localhost:65500/ # Linux
  5. Pare o túnel quando terminar — Ctrl-C, ou kill %1 se você o colocou em segundo plano. Deixá-lo aberto mantém a porta local 65500 e a sessão do Bastion.

Um diálogo de credenciais, não uma página de login. O console usa autenticação HTTP Basic, portanto o navegador exibe seu próprio prompt de usuário e senha. Não há formulário para observar:

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

Um 401 com esse realm é o console funcionando corretamente. É o que uma requisição não autenticada deveria receber — e fornecer a credencial admin à mesma URL responde 200, que é como você confirma a credencial antes de abrir um navegador:

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 sem dois-pontos faz o curl solicitar a senha em vez de recebê-la pela linha de comando, onde ela acabaria no histórico do shell e na lista de processos.

Um aviso de certificado, por três motivos ao mesmo tempo. Verificando o certificado diretamente:

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

O subject é igual ao issuer, portanto é autoassinado. O nome é site-local.volterra.io enquanto você está se conectando a localhost, portanto não haverá correspondência. E na build que este deployment executa, o certificado expirou em 25 de outubro de 2025 — o appliance o entrega, e nada neste repositório o renova.

Espere um aviso direto do navegador, e espere-o todas as vezes. A linha do subject acima é a parte útil: é como você confirma que alcançou o appliance e não outra coisa qualquer escutando na porta local 65500.

Faça login como admin. Esta documentação não publica a senha, e não deve.

Dois motivos pelos quais não publicá-la importa mais aqui do que pode parecer:

  • Esta documentação é pública. Imprimir a senha atual do console da frota transformaria “ter Reader no Bastion” em acesso completo ao appliance para qualquer um que leia a página.
  • Uma senha publicada na documentação está errada no momento em que alguém a rotaciona, e errada da forma mais enganosa — o leitor conclui que seu acesso está quebrado, e não que a página está desatualizada.

Depois que ela for rotacionada, obtenha-a de onde sua equipe guarda segredos operacionais.

Por que o túnel deve apontar para o id do recurso

Seção intitulada “Por que o túnel deve apontar para o id do recurso”

--target-resource-id é obrigatório. Apontar para o endereço do nó é recusado — qualquer que seja o endereço usado, portanto deliberadamente nenhum endereço real é impresso aqui:

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.

O motivo não é que a conexão baseada em IP esteja desabilitada — neste Bastion ip_connect_enabled é true. A Microsoft não suporta portas personalizadas em conexões de cliente nativo baseadas em IP, independentemente dessa configuração (documentação do Azure), e 65500 é uma porta personalizada. Inspecionar a configuração do Bastion aqui não leva a nada; use o id do recurso.

SintomaCausaSolução
ERROR: Custom ports are not allowed. Allowed ports for Tunnel with IP connect is 22, 3389.Uso de --target-ip-addressUse --target-resource-id
ERROR: Defined port is currently unavailableOutro túnel já está usando essa porta localPare o outro túnel, ou passe um --port diferente; --resource-port permanece 65500
terraform output -raw bastion_name é null ou vazioO Bastion não está implantadoDefina enable_bastion = true e aplique
O túnel inicia, mas o id do recurso está vazioO filtro jq usou o nome da VM em vez da chave do siteUse a chave eastus01/02/03
401 Unauthorized, realm Volterra Site ConsoleNão é uma falha — requisição não autenticadaForneça a credencial admin
O navegador recusa o certificadoAutoassinado, nome divergente e expirado desde out/2025Esperado; confirme que o subject é CN=site-local.volterra.io e prossiga