# Rede Proxmox — Interfaces e Bridges **Host:** `big1` · Proxmox VE 9.1.4 **Data:** 2026-06-08 **Ficheiro fonte:** `/etc/network/interfaces` **Âmbito:** documentação de referência para Spec Kit / constitution Ligbox --- ## Visão geral das bridges | Bridge | Papel | IPv4 no host | Portas físicas | Rede | |--------|-------|--------------|----------------|------| | **vmbr0** | WAN pública (Hetzner) | `95.216.14.162/26` | `eno1` | Internet | | **vmbr2** | Link pfSense WAN | `10.0.0.1/30` | nenhuma | `10.0.0.0/30` | | **vmbr1** | **LAN interna L2** (modelo alvo) | **sem IPv4 no host** | nenhuma | `10.10.10.0/24` | | **vmbr4000** | LAN Hetzner vSwitch (VLAN 4000) | `10.10.10.254/24` | `eno1.4000` | `10.10.10.0/24` | ### Princípio: vmbr1 — bridge interna sem IPv4 no host A **vmbr1** é a bridge **puramente L2** para a LAN das VMs (`10.10.10.0/24`): - `bridge-ports none` — isolada do hardware físico - **O host Proxmox não deve ter endereço IPv4 nesta bridge** - Função: transportar tráfego entre VMs na mesma sub-rede, sem o host actuar como gateway - Regras iptables de proteção anti-scan ficam associadas a esta secção no `interfaces` ```text auto vmbr1 iface vmbr1 inet manual # alvo: sem address no host bridge-ports none bridge-stp off bridge-fd 0 # post-up/down: FORWARD vmbr1↔vmbr0 + proteção 10.10.10.0/24 ``` ### Estado actual (drift documentado — 2026-06-08) | Item | Alvo (constitution) | Estado actual | |------|---------------------|---------------| | vmbr1 IPv4 no host | **nenhum** | `10.10.10.2/24` configurado | | VMs ligadas a vmbr1 | todas na LAN L2 | **0 VMs** — todas usam `vmbr4000` | | Gateway LAN VMs | pfSense `10.10.10.1` | misto: alguns CTs usam `10.10.10.254` | | Bridge operacional | vmbr1 (modelo) | **vmbr4000** (Hetzner vSwitch) | > **Nota:** alterações em `/etc/network/interfaces` exigem aprovação explícita tripla (regra de governança Ligbox). Este documento **não altera** o ficheiro — apenas regista o modelo e o drift. --- ## Diagrama lógico ```text Internet │ ▼ [eno1] ──► vmbr0 (95.216.14.162/26) ──► DNAT portas 80,443,25,587... ──► pfSense WAN 10.0.0.2 │ └── eno1.4000 (VLAN 4000, mtu 1400) │ ▼ vmbr4000 (10.10.10.254/24) ◄── ESTADO ACTUAL: todas as VMs/CTs │ ▼ VMs 10.10.10.x (101–122, CTs 107–120) vmbr2 (10.0.0.1/30) ◄──► pfSense WAN segment vmbr1 (L2 puro, alvo sem IP) ◄── MODELO ALVO para LAN isolada ``` --- ## Secções do `/etc/network/interfaces` ### vmbr0 — rede pública | Parâmetro | Valor | |-----------|-------| | IP | `95.216.14.162/26` | | Gateway | `95.216.14.129` | | Bridge | `eno1` | | SSH host | portas 22, 55679 | **Regras relevantes:** - FORWARD para `10.0.0.201–210:22` (SSH legado) - MASQUERADE SSH para `10.10.10.0/24:22` - DNAT em PREROUTING (portas mail/web → `10.0.0.2` pfSense WAN) ### vmbr2 — segmento pfSense | Parâmetro | Valor | |-----------|-------| | IP host | `10.0.0.1/30` | | Função | NAT + forward vmbr2 ↔ vmbr0 | | Destino WAN pfSense | `10.0.0.2` | ### vmbr1 — LAN interna (modelo + regras de segurança) **Configuração actual no ficheiro:** ```text auto vmbr1 iface vmbr1 inet static address 10.10.10.2/24 # ← DRIFT: deve ser removido no alvo bridge-ports none ``` **Regras iptables obrigatórias (secção vmbr1):** | Regra | Função | |-------|--------| | `FORWARD -i vmbr1 -o vmbr0 -j ACCEPT` | Saída controlada LAN → WAN | | `FORWARD -i vmbr0 -o vmbr1 -m state ESTABLISHED,RELATED -j ACCEPT` | Retorno | | `FORWARD -s 10.10.10.254 -d 10.0.0.2:22 -j ACCEPT` | SSH admin host → pfSense | | `FORWARD -s 10.10.10.0/24 ! -d 10.10.10.0/24 -j DROP` | **Anti-scan obrigatório** | | `FORWARD -s 10.10.10.0/24 ! -d 10.10.10.0/24 -p udp --dport 53 -j ACCEPT` | Excepção DNS | ### vmbr4000 — Hetzner Private Network (estado operacional) | Parâmetro | Valor | |-----------|-------| | Interface física | `eno1.4000` (VLAN 4000) | | IP host | `10.10.10.254/24` | | MTU | 1400 | | VMs/CTs | **100% dos convidados activos** | --- ## Tabela VMs — bridge e IP (2026-06-08) | ID | Nome | Bridge | IP LAN | SSH WAN | |----|------|--------|--------|---------| | 100 | pfsense | vmbr4000 | 10.10.10.1 | 2500 | | 101 | odoo17 | vmbr4000 | 10.10.10.101 | 2501 | | 102 | vm102-clone | vmbr4000 | 10.10.10.102 | 2502 | | 103 | ops-hub | vmbr4000 | 10.10.10.103 | 2503 | | 104 | wazuh | vmbr4000 | 10.10.10.104 | 2504 | | 105 | portainer | vmbr4000 | 10.10.10.105 | 2505 | | 106 | mini | vmbr4000 | 10.10.10.4 | 2506 | | 107 | fluxus-107 (CT) | vmbr4000 | 10.10.10.107 | 2507 | | 108 | mail.ligbox | vmbr4000 | 10.10.10.108 | 2508 | | 109 | debian-clone-109 | vmbr4000 | 10.10.10.109 | 2509 | | 112 | vm112-mail-ibytera | vmbr4000 | 10.10.10.112 | 2512 | | 113 | pmg-mail-gateway | vmbr4000 | 10.10.10.113 | 2513 | | 119 | qtm-uploader (CT) | vmbr4000 | 10.10.10.119 | — | | 121 | arrears-app-vm | vmbr4000 | 10.10.10.121 | — | | **122** | **ligbox-ops** | vmbr4000 | **10.10.10.122** | **2522** | **SSH WAN:** `ssh -p PORTA root@95.216.14.146` (pfSense NAT, não IP do host Proxmox). --- ## Verificações de segurança (diárias / pós-alteração) ```bash # 1. Anti-scan activo (deve mostrar DROP + DNS ACCEPT) iptables -S FORWARD | grep '10.10.10.0/24' # 2. Proibido: MASQUERADE geral da LAN (risco abuse Hetzner) iptables -t nat -L POSTROUTING -n | grep '10.10.10.0/24' # 3. DNAT só para pfSense WAN (10.0.0.2), nunca LAN iptables -t nat -L PREROUTING -n | grep DNAT # 4. Duplicatas iptables -t nat -L PREROUTING -n | sort | uniq -c | sort -rn | head ``` --- ## Referências - Inventário completo: `obsidian-infra/docs/TABELA_VMS_INVENTARIO_ATUALIZADA_2026-03-30.md` - Segurança Hetzner: `obsidian-infra/docs/VERIFICACAO_ROLES_SEGURANCA_HETZNER.md` - Constitution: `.specify/memory/constitution.md`