# SPEC — Architecture B: Rede Privada Proxmox BIG (vmbr0/vmbr1/vmbr2) **Data:** 2026-07-08 **Responsável:** Roger / iTecnologys **Host:** Dell R630 BIG — `big-itecnologys-wardrobe` **Status:** Implementado (fase 1) --- ## 1. Objetivo Proteger **infraestrutura de servidores** no BIG sem alterar o Sagemcom (`.254`): - Rede **casa** (`192.168.1.0/24`) — gestão e uplink - Rede **privada** (`10.10.10.0/24`) — VMs, Traefik, Tunnel, Wazuh, mail - **pfSense VM 100** — firewall entre zonas - **Cloudflare Tunnel** — acesso externo sem expor IP (fase 2) **Não objetivo:** firewall de toda a casa (TV, telemóveis, PCs no Sagemcom). --- ## 2. Topologia física ``` Internet │ Sagemcom (.254) ← inalterado (DHCP, firewall ISP) ├── Smart TV, PCs, IoT └── R8000 (.115) → R7000 DD-WRT (.1) → eno3 (1 cabo) │ Dell R630 BIG ``` | Regra física | Detalhe | |--------------|---------| | **1 cabo** | eno3 → porta LAN R7000 | | **eno4 DOWN** | Evitar loop L2 (STP off no DD-WRT) | | **Sem VLAN no R8000** | Stock não faz trunk — isolamento é virtual no Proxmox | --- ## 3. Switches virtuais (Proxmox bridges) | Bridge | Rede | Porta física | Função | |--------|------|--------------|--------| | **vmbr0** | `192.168.1.0/24` | eno3 | Casa — host `.137`, uplink internet | | **vmbr1** | `10.10.10.0/24` | nenhuma | **Privada** — VMs serviços | | **vmbr2** | `10.0.0.0/30` | nenhuma | Link interno host ↔ pfSense WAN | ### Host BIG | Campo | Valor | |-------|-------| | IP gestão (vmbr0) | `192.168.1.137/24` | | Gateway | `192.168.1.254` | | IP privado (vmbr1) | `10.10.10.1/24` | | pfSense WAN (vmbr2) | `10.0.0.1/30` → pfSense `10.0.0.2` | | Tailscale | `100.90.196.58` | | SSH remoto | `tailscale ssh root@big-itecnologys-wardrobe` | | Proxmox GUI | `https://192.168.1.137:8006` | --- ## 4. pfSense VM 100 (`pfsense-firewall`) | NIC | Bridge | Função | |-----|--------|--------| | net0 | vmbr1 | LAN privada `10.10.10.0/24` | | net1 | vmbr2 | WAN interna `10.0.0.0/30` | | net2 | vmbr0 | Interface casa (opcional/gestão) | ### Configuração pfSense (GUI) | Interface | IP | Notas | |-----------|-----|-------| | LAN (vmbr1) | `10.10.10.1/24` | DHCP `10.10.10.100-200` | | WAN (vmbr2) | `10.0.0.2/30` | Gateway `10.0.0.1` | | DNS | `192.168.1.254` ou `1.1.1.1` | Via NAT host | ### Regras firewall essenciais | Regra | Ação | |-------|------| | LAN → Internet | ALLOW | | LAN → `192.168.1.0/24` | BLOCK (isolamento) | | Casa → LAN | ALLOW só portas gestão necessárias | | Inbound WAN casa → VMs | BLOCK (usar Cloudflare Tunnel) | --- ## 5. VMs e serviços por bridge | VMID | Nome | Bridge | IP típico | |------|------|--------|-----------| | 100 | pfsense-firewall | vmbr1+vmbr2+vmbr0 | `10.10.10.1` | | 120 (LXC) | web-traefik | vmbr1 | `10.10.10.120` | | 101-108, 500, 600, 700 | serviços | vmbr1 | `10.10.10.x` | **Regra:** VMs sensíveis (Traefik, Tunnel, Wazuh, mail) **só em vmbr1**. --- ## 6. Isolamento host (iptables) Já aplicado em `/etc/network/interfaces` (vmbr1 post-up): ``` FORWARD: DROP 10.10.10.0/24 → !10.10.10.0/24 FORWARD: ACCEPT 10.10.10.0/24 → UDP/53 (DNS) ``` Persistência: `/etc/network/interfaces.d/99-arch-b-private` --- ## 7. Nginx reverse proxy (host BIG) Domínios `*.myvexx.com` no host nginx (`:80` / `192.168.1.137:443`): ``` server.myvexx.com → proxy_pass http://10.10.10.120:80 (Traefik CT120) ``` | Ficheiro | Função | |----------|--------| | `myvexx-proxy` | HTTP :80 → Traefik | | `myvexx-landing-https` | HTTPS server/mycloud → Traefik | | `myvexx-proxmox` | proxmox.myvexx.com → :8006 | --- ## 8. Cloudflare Tunnel (fase 2) | Item | Valor | |------|-------| | Objetivo | Acesso externo sem port forward | | Instalar em | LXC/VM só em vmbr1 | | DNS | Cloudflare zone `myvexx.com` | | Token | Configurar em CT120 ou VM dedicada | --- ## 9. Equipamentos LAN | Device | IP | Doc | |--------|-----|-----| | Sagemcom | `.254` | Gateway casa | | R8000 | `.115` | `SPEC_R8000_CREDENTIALS.md` | | R7000 DD-WRT | `.1` | `SPEC_R7000_DDWRT_CREDENTIALS.md` | | BIG | `.137` | Este documento | --- ## 10. Validação ```bash # No BIG (via Tailscale) ip addr show vmbr1 | grep 10.10.10.1 ip link show eno4 | grep DOWN ping -c2 10.10.10.120 ping -c2 8.8.8.8 qm list | grep pfsense iptables -L FORWARD -n | grep 10.10.10 # Teste local nginx curl -sI -H 'Host: server.myvexx.com' http://127.0.0.1/ ``` --- ## 11. Fases de implementação | Fase | Estado | Conteúdo | |------|--------|----------| | **1** | ✅ Feito | vmbr1 `10.10.10.1`, eno4 down, iptables, persistência | | **2** | Pendente | pfSense GUI — DHCP LAN, regras finais | | **3** | Pendente | Cloudflare Tunnel (substituir port forward) | | **4** | Opcional | Proxmox `:8006` só via Tailscale/vmbr1 | | **5** | Opcional | VLAN física se R8000 DD-WRT no futuro | --- ## 12. Troubleshooting | Sintoma | Causa provável | Ação | |---------|----------------|------| | Rede cai ao ligar 2º cabo | Loop L2 eno3+eno4 | eno4 DOWN, 1 cabo | | SSH LAN falha | Tailscale SSH ativo | `tailscale set --ssh=false` | | server.myvexx.com fora | DNS → IP casa + port forward | Ver secção DNS abaixo | | VMs sem internet | pfSense WAN/LAN | Verificar VM100 | --- ## 13. DNS server.myvexx.com | Campo | Valor | |-------|-------| | DNS público | `server.myvexx.com` → `51.171.219.218` (IP casa) | | myvexx.com | → `95.216.14.146` (Hetzner) | | Backend local | nginx → `10.10.10.120` (OK internamente) | | Acesso externo | Requer port forward Sagemcom :80/:443 → `.137` | --- *Documento gerado automaticamente — Architecture B BIG Proxmox*