{ "meta": { "title": "Análise de bridges e reparação guiada | Documentação ProxMenux", "description": "Deteta bridges vmbrX com portas físicas em falta ou inválidas, tipicamente após a reenumeração PCI. Apresenta-os com sugestões de comandos de shell e propõe uma reparação guiada em 5 passos com cópia de segurança obrigatória.", "ogTitle": "Análise de bridges e reparação guiada | Documentação ProxMenux", "ogDescription": "Verifique e repare portas de bridges Proxmox após alterações de hardware, com um procedimento guiado que permite reverter em segurança." }, "header": { "title": "Análise de ponte e reparo guiado", "description": "Verifica cada bridge vmbrX declarado em /etc/network/interfaces e se as suas portas físicas existem. Caso faltem, propõe uma reparação passo a passo. A análise é só de leitura; a reparação exige confirmação, apresenta uma pré-visualização e cria uma cópia de segurança.", "section": "Rede" }, "intro": { "title": "O que isto faz", "body": "Lê cada ponte em /etc/network/interfaces, olha para sua linha bridge-ports e verifica se cada porta declarada (por exemplo. enp3s0) realmente existe na máquina. Se falta uma porta, propõe um substituto e – com consentimento explícito – aplica a alteração com um backup, visualização, aplicação, verificação." }, "when": { "heading": "Quando precisares disto", "intro": "Linux atribui nomes de interface previsíveis de topologia PCI e ordem de fenda. Vários eventos os embaralham e deixam o /etc/network/interfaces referindo-se a nomes que já não existem:", "items": [ "Adicionar ou remover uma placa PCIe (placa de rede, GPU, HBA ou adaptador NVMe).", "Mudar uma placa existente para outro slot PCIe.", "BIOS / UEFI atualiza que re-enumeram dispositivos PCI.", "Migrando o disco de inicialização para hardware diferente." ], "outro": "Após a próxima inicialização, a ponte tenta anexar a uma porta que já não existe, falha em aparecer, e o host perde sua rede. Nomes de interface persistentes impede que isso aconteça novamente — mas se você já estiver bloqueado, esta página é o caminho de recuperação." }, "bigPicture": { "heading": "O quadro geral", "diagram1": { "arrowLabel": "passo 1", "nodes": { "sourceLabel": "/etc/network/interfaces", "sourceDetail": "auto vmbr0\niface vmbr0 inet static\n bridge-ports enp3s0", "bridgeLabel": "Analisar (somente leitura)", "bridgeDetail": "ip link show enp3s0\n→ não existe", "targetLabel": "Relatório + sugestão", "targetDetail": "❌ enp3s0: NÃO ENCONTRADA\nSubstituir por: eno1\n(ainda sem alterações)" } }, "diagram2": { "arrowLabel": "aplicar com backup", "nodes": { "sourceLabel": "Reparação guiada", "sourceDetail": "1. Cópia de Segurança\n2. Mostrar actual\n3. Antevisão das alterações\n4. Aplicar\n5. Verificar", "targetLabel": "/etc/network/interfaces (novo)", "targetDetail": "auto vmbr0\niface vmbr0 inet static\n bridge-ports eno1" } } }, "step1": { "heading": "Passo 1: análise (somente leitura)", "intro": "Ao selecionar Analisar configuração de bridges, a ferramenta para imediatamente se o host não usar a pilha clássica Debian/Proxmox. Caso contrário, verifica cada bridge e apresenta:", "items": [ "Nome do bridge, estado atual (UP / DOWN) e IP atribuído.", "Cada porta declarada e se existe atualmente (ip link show <port>).", "Para cada porta inválida: uma substituição proposta (a primeira interface física disponível) mais o comando exato sed para aplicá-lo manualmente.", "Bridges sem qualquer linha bridge-ports e entradas auto órfãs sem bloco iface correspondente." ], "readonlyTitle": "Garantia apenas para leitura", "readonlyBody": "Até este ponto o script não executou um único comando modificando. Você pode deixar a análise aberta, copiar os comandos sed sugeridos e aplicá-los manualmente se preferir — ou aceitar o próximo prompt para inserir o reparo guiado." }, "step2": { "heading": "Passo 2: reparação guiada (5 passos)", "intro": "Só se inicia se aceitar a proposta no fim da análise. Cada passo mostra o que vai acontecer e pede confirmação antes de continuar.", "steps": [ { "title": "1. Cópia de segurança", "body": "Copia /etc/network/interfaces para /var/backups/proxmenux/interfaces_backup_<TIMESTAMP>. O caminho exato de backup é mostrado antes da cópia e novamente depois, com o comando rollback.", "tone": "blue" }, { "title": "2. Rever a configuração actual", "body": "Abre o /etc/network/interfaces ao vivo numa janela de rolagem para que possa ver exactamente o que está prestes a ser alterado.", "tone": "blue" }, { "title": "3. Antever as alterações propostas", "body": "Lista exatamente os bridges afetados e as substituições de portas previstas. Se já não for necessária reparação porque a porta reapareceu entre as verificações, o processo termina com «Não são necessárias alterações.»", "tone": "blue" }, { "title": "4. Aplicar alterações", "body": "Para cada ponte afetada, executa sed -i \"/iface $bridge/,/bridge-ports/ s/bridge-ports.*/bridge-ports $new_ports/\" contra /etc/network/interfaces. Se uma ponte não tiver nenhuma substituição válida disponível, a substituição é ignorada e relatada na etapa 5.", "tone": "amber" }, { "title": "5. Verificação", "body": "Lê novamente o ficheiro e confirma a existência da nova porta de cada bridge. Mostra o comando para reverter (cp <backup> /etc/network/interfaces). Por fim propõe Reiniciar a rede — aceite apenas se tiver acesso de reserva à consola.", "tone": "emerald" } ], "restartTitle": "Reiniciar a rede ≠ anular sem risco", "restartBody": "A reparação é gravada no disco mesmo que não reinicie o serviço. systemctl restart networking aplica a alteração agora e pode interromper a sessão SSH se a nova porta estiver errada. Se recusar, a alteração entra na mesma em vigor no próximo arranque — confirme primeiro a configuração ou reverta com o comando apresentado." }, "edits": { "heading": "O que é editado (exatamente)", "body": "Apenas a linha bridge-ports de cada bridge afetado. As outras diretivas (address, netmask, gateway, bridge-stp, …) ficam intactas. Neste procedimento o script não cria nem remove blocos iface — isso cabe à Análise de configuração & limpeza." }, "troubleshoot": { "heading": "Resolução de Problemas", "unsupportedTitle": "A análise para com «Pilha de rede não suportada»", "unsupportedBody": "O host usa netplan, systemd-networkd ou NetworkManager. A ferramenta só suporta /etc/network/interfaces. Mude primeiro o host para a pilha clássica ou altere a configuração com as ferramentas nativas do gestor (por exemplo netplan apply).", "noSuggestTitle": "Nenhuma sugestão é impressa para uma porta inválida", "noSuggestBody": "O host tem zero interfaces físicas livres (tudo já está em outra ponte ou não existe). A análise remonta a sugerir bridge-ports none para que a ponte possa pelo menos subir sem um porto. Adicionar um NIC ou migrar portas entre pontes manualmente antes de repetir.", "stillDownTitle": "O reparo completa, mas a ponte ainda está em baixo", "stillDownBody": "sed atualizou o arquivo, mas systemctl restart networking foi recusado. Execute-o manualmente assim que a nova configuração for verificada, ou reinicie. Se o reinício foi aceito e a ponte ainda estiver baixa, execute ip link show para confirmar a nova porta existe, em seguida, verifique journalctl -u networking para o erro real (cabo desconectado, link não negociado, porto já um membro de outra ponte).", "lostSshTitle": "Perdi o acesso SSH logo após reiniciar a rede", "lostSshIntro": "Use console / IPMI / iKVM para chegar ao host. Restaurar o backup:", "lostSshOutro": "Em seguida, re-execute a análise do console para descobrir por que a sugestão não funcionou (normalmente: a porta de substituição não está realmente conectada)." }, "related": { "heading": "Relacionado", "items": [ { "label": "Nomes de interface persistentes", "href": "/docs/network/persistent-names", "tail": " — atribuir nomes aos endereços MAC para que este cenário deixe de acontecer." }, { "label": "Análise de configuração e limpeza guiada", "href": "/docs/network/config-analysis", "tailRich": " — para os blocos iface órfãos (a outra metade do mesmo problema)." }, { "label": "Cópia de segurança e reinício das interfaces", "href": "/docs/network/backup-restore", "tail": " — instantâneos manuais e o navegador de restauração." } ] } }