From 1e2dd78c298a4720cf4b11757b648408e3bc8f1f Mon Sep 17 00:00:00 2001 From: Roger Date: Wed, 5 Aug 2026 18:18:55 +0000 Subject: [PATCH] RULE: SPECs por projecto; Invest/ERP/Infra no vault + sidebar --- Infra-Network/README.md | 9 + .../SPEC_ARCH_B_BIG_PRIVATE_NETWORK.md | 206 ++++++++++++++++++ .../SPEC_R7000_DDWRT_PROXMOX_NETWORK.md | 182 ++++++++++++++++ Infra-Network/SPEC_R8000_CREDENTIALS.md | 63 ++++++ README.md | 31 ++- 5 files changed, 473 insertions(+), 18 deletions(-) create mode 100644 Infra-Network/README.md create mode 100644 Infra-Network/SPEC_ARCH_B_BIG_PRIVATE_NETWORK.md create mode 100644 Infra-Network/SPEC_R7000_DDWRT_PROXMOX_NETWORK.md create mode 100644 Infra-Network/SPEC_R8000_CREDENTIALS.md diff --git a/Infra-Network/README.md b/Infra-Network/README.md new file mode 100644 index 0000000..8d13fe7 --- /dev/null +++ b/Infra-Network/README.md @@ -0,0 +1,9 @@ +# Infra / Network SPECs + +SPECs de rede (big / BIG1 / routers). Repo Forgejo: a criar `ligbox/infra-network` se ainda não existir. + +| SPEC | Ficheiro | +|------|----------| +| Arch B private network | SPEC_ARCH_B_BIG_PRIVATE_NETWORK.md | +| R7000 DD-WRT + Proxmox | SPEC_R7000_DDWRT_PROXMOX_NETWORK.md | +| R8000 credentials | SPEC_R8000_CREDENTIALS.md | diff --git a/Infra-Network/SPEC_ARCH_B_BIG_PRIVATE_NETWORK.md b/Infra-Network/SPEC_ARCH_B_BIG_PRIVATE_NETWORK.md new file mode 100644 index 0000000..9fb6fad --- /dev/null +++ b/Infra-Network/SPEC_ARCH_B_BIG_PRIVATE_NETWORK.md @@ -0,0 +1,206 @@ +# 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* diff --git a/Infra-Network/SPEC_R7000_DDWRT_PROXMOX_NETWORK.md b/Infra-Network/SPEC_R7000_DDWRT_PROXMOX_NETWORK.md new file mode 100644 index 0000000..b3fdec5 --- /dev/null +++ b/Infra-Network/SPEC_R7000_DDWRT_PROXMOX_NETWORK.md @@ -0,0 +1,182 @@ +# SPEC — DD-WRT R7000 + Proxmox BIG (Rede LAN/WAN) + +**Data:** 2026-07-08 +**Responsável:** Roger / iTecnologys +**Dispositivo:** Netgear R7000 — DD-WRT v3.0-r44715 + +--- + +## 1. Topologia correta + +``` +Internet + │ +[AT&T Gateway] 192.168.1.254 + │ DHCP + Firewall + Gateway principal + │ + ├── [BIG Proxmox] 192.168.1.137 (cabos eno3/eno4 → portas LAN) + │ + └── [R7000 DD-WRT] 192.168.1.1 (modo AP — só Wi-Fi + switch) + │ + Dispositivos Wi-Fi +``` + +**Regra de ouro:** O DD-WRT **não é firewall principal** — o gateway AT&T (`.254`) é a fronteira. O DD-WRT é **AP + switch**. + +--- + +## 2. Modo de operação: AP (Access Point) + +| Papel | Dispositivo | +|-------|-------------| +| Gateway + DHCP + DNS | AT&T `.254` | +| Proxmox host | BIG `.137` | +| Wi-Fi + switch LAN | R7000 `.1.1` | + +--- + +## 3. Configuração DD-WRT — Setup → Basic Setup + +| Campo | Valor | Por quê | +|-------|-------|---------| +| **WAN Connection Type** | `Disabled` | R7000 não roteia internet | +| **Local IP (LAN)** | `192.168.1.1` | IP de gestão do DD-WRT | +| **Subnet Mask** | `255.255.255.0` | Mesma rede | +| **Gateway** | `192.168.1.254` | Encaminhar para AT&T | +| **Local DNS** | `192.168.1.254` | DNS do gateway | +| **DHCP Server** | **Disable** | Evitar conflito com `.254` | +| **STP** | Disable | Evitar loops | + +--- + +## 4. Configuração DD-WRT — Security → Firewall + +| Campo | Valor | Por quê | +|-------|-------|---------| +| **SPI Firewall** | Enable | Proteção básica | +| **Block WAN Requests** | Enable | Bloquear scans externos | +| **Filter WAN NAT Redirection** | Enable | Segurança | +| **AP Isolation** | **Disable** | Proxmox precisa falar com LAN | + +--- + +## 5. Configuração DD-WRT — Wireless → Advanced + +| Campo | Valor | +|-------|-------| +| **AP Isolation** | **Disable** | +| **Set AP on different subnet** | **Disable** | +| **Multicast forwarding** | Enable (se houver VMs) | + +--- + +## 6. Configuração DD-WRT — Services + +| Serviço | Porta | WAN Access | Notas | +|---------|-------|------------|-------| +| **Lighttpd HTTP** | `8085` | **Disable** | Só LAN | +| **Lighttpd HTTPS** | `443` | **Disable** | Só LAN | +| **SSH (dropbear)** | `2222` | **Disable** | Só LAN | +| **Telnet** | `23` | **Disable** | Backup, desativar depois | +| **DNSMasq** | `53` | — | **Disable** se DHCP off | + +--- + +## 7. Configuração DD-WRT — Administration → Management + +| Campo | Valor | +|-------|-------| +| **Web GUI Management (WAN)** | **Disable** | +| **SSH Management (WAN)** | **Disable** | +| **Remote Access** | **Tudo Disable** | +| **Boot Wait** | **Enable** (recovery) | + +--- + +## 8. Portas físicas R7000 — cabeamento + +| Porta R7000 | Uso | Conectar | +|-------------|-----|----------| +| **WAN (amarela)** | Desativada | **Nada** ou uplink ao `.254` (opcional) | +| **LAN 1–4 (pretas)** | Bridge LAN | **BIG eno3 + eno4**, switch, PCs | + +**NUNCA** ligar Proxmox só na porta WAN — `eth0` não está no `br0`. + +--- + +## 9. Configuração Proxmox BIG (host) + +| Campo | Valor | +|-------|-------| +| **IP** | `192.168.1.137` (estático) | +| **Gateway** | `192.168.1.254` | +| **DNS** | `192.168.1.254` | +| **Interfaces** | `eno3` + `eno4` (bond ou ativas) | +| **Proxmox Web** | `https://192.168.1.137:8006` | +| **SSH** | `root@192.168.1.137` | +| **Tailscale** | `100.90.196.58` (quando internet voltar) | + +--- + +## 10. O que estava errado (causa do problema) + +| Erro | Efeito | +|------|--------| +| **DHCP ativo no DD-WRT** | BIG recebeu gateway `.1.1` em vez de `.254` | +| **lan_gateway=0.0.0.0** | DD-WRT sem rota para internet | +| **wk_mode=gateway** com WAN disabled | Modo inconsistente | +| **Cabo na porta WAN** | Proxmox isolado da LAN (`eth0` ∉ `br0`) | +| **Lighttpd WAN Access Enable** | Exposição desnecessária | + +--- + +## 11. NVRAM (aplicar via SSH) + +```bash +ssh -p 2222 root@192.168.1.1 + +nvram set wan_proto=disabled +nvram set lan_gateway=192.168.1.254 +nvram set wan_gateway=192.168.1.254 +nvram set wan_dns=192.168.1.254 +nvram set dnsmasq_enable=0 +nvram set wk_mode=lan +nvram set wl_ap_isolate=0 +nvram set remote_mgt_ssh=0 +nvram commit +reboot +``` + +--- + +## 12. Validação pós-configuração + +```bash +# No DD-WRT: +ping -c 3 192.168.1.254 # gateway OK +ping -c 3 192.168.1.137 # BIG OK +arp -a | grep 137 # MAC do BIG visível + +# No laptop: +ping 192.168.1.137 +curl -k https://192.168.1.137:8006 +ssh root@192.168.1.137 +``` + +--- + +## 13. Segurança — camadas + +``` +Camada 1: AT&T Gateway (.254) → firewall ISP +Camada 2: pfSense (VM no BIG) → firewall interno +Camada 3: Traefik (VM no BIG) → reverse proxy +Camada 4: Cloudflare Tunnel → acesso externo sem expor IP +Camada 5: DD-WRT (R7000) → só AP, sem exposição WAN +``` + +O DD-WRT **não substitui** pfSense/Traefik — só entrega conectividade LAN limpa ao Proxmox. + +--- + +*Aplicar configuração e reboot do DD-WRT antes de testar Proxmox.* diff --git a/Infra-Network/SPEC_R8000_CREDENTIALS.md b/Infra-Network/SPEC_R8000_CREDENTIALS.md new file mode 100644 index 0000000..00710b1 --- /dev/null +++ b/Infra-Network/SPEC_R8000_CREDENTIALS.md @@ -0,0 +1,63 @@ +# SPEC — Netgear R8000 (Nighthawk X6) Credentials + +**Data:** 2026-07-08 +**Responsável:** Roger / iTecnologys +**Dispositivo:** Netgear Nighthawk X6 AC3200 — Model **R8000** + +--- + +## Identificação + +| Campo | Valor | +|-------|-------| +| **Modelo** | Netgear R8000 (Nighthawk X6) | +| **MAC** | `28:80:88:35:86:40` | +| **IP LAN (atual)** | `192.168.1.115` (DHCP do Sagemcom) | +| **Serial** | `4MKD027BA0346` | + +--- + +## Acesso Web (Router Login) + +| Campo | Valor | +|-------|-------| +| **URL** | `http://192.168.1.115` ou `http://routerlogin.net` | +| **Usuário** | `admin` | +| **Senha** | `password` (fábrica — confirmar se foi alterada) | + +--- + +## Wi-Fi (etiqueta do equipamento) + +| Campo | Valor | +|-------|-------| +| **SSID** | `NETGEAR73` | +| **Password** | `dailyshrub462` | + +--- + +## Topologia (confirmar) + +``` +Sagemcom (.254) + └── R8000 (.115) ← este equipamento + └── cabo(s) → R7000 DD-WRT (.1) + └── R630 BIG (.137) +``` + +--- + +## Investigação + +| Item | Resultado | +|------|-----------| +| IP na LAN | `192.168.1.115` (MAC confirma etiqueta) | +| Modo | AP/Repetidor (DHCP do Sagemcom) | +| VLAN trunk | **Não** (firmware stock) | +| Cabos → R7000 | Confirmar físico (provável 1 cabo) | + +**Conclusão:** R8000 não suporta VLAN. Rede privada fica **dentro do Proxmox** (vmbr10), não no caminho físico. + +--- + +*Credenciais fornecidas por Roger — etiqueta física do R8000.* diff --git a/README.md b/README.md index c9bb5cb..c492660 100644 --- a/README.md +++ b/README.md @@ -1,30 +1,25 @@ # Obsidian Vault — Ligbox Cloud -Vault central CT130 · sync Git `ligbox/obsidian-vault` +Vault central CT130 · Forgejo `https://git.spec.ligbox.com.br/ligbox/` -## MyVexx / Invest (novo) +**Regra:** cada SPEC no **projecto** (pasta vault + repo Forgejo). Ver RULE em Invest-MyVexx. -| Doc | Link | -|-----|------| -| Hub Invest | [Invest-MyVexx.md](Invest-MyVexx/Invest-MyVexx.md) | -| **SPEC-051** Unified Dashboard + Index Hub | [SPEC-051](Invest-MyVexx/SPEC-051-INVEST-UNIFIED-DASHBOARD-INDEX-HUB.md) | -| SPEC-050 AI Agents paper-only | [SPEC-050](Invest-MyVexx/SPEC-050-INVEST-AI-AGENTS-PAPER.md) | -| RULE SSH CT124→CT130 | [RULE](Invest-MyVexx/RULE-SSH-CT124-TO-CT130-SPEC-HUB.md) | +## Projectos -## Conteúdo +| Pasta vault | Forgejo | +|-------------|---------| +| `Invest-MyVexx/` | [invest-myvexx](https://git.spec.ligbox.com.br/ligbox/invest-myvexx) — SPEC-050, **SPEC-051** | +| `ERP-Odoo-Ligit-MyVexx/` | [erp-odoo-ligit-myvexx](https://git.spec.ligbox.com.br/ligbox/erp-odoo-ligit-myvexx) | +| `Infra-Network/` | [infra-network](https://git.spec.ligbox.com.br/ligbox/infra-network) | +| `ligbox-ops-platform/` | [ligbox-ops-platform](https://git.spec.ligbox.com.br/ligbox/ligbox-ops-platform) | -| Pasta | Descrição | -|-------|-----------| -| `Invest-MyVexx/` | SPECs Invest (050, **051**) + RULE SSH | -| `ERP-Odoo-Ligit-MyVexx/` | SPECs ERP CONTIX+ | -| `ligbox-ops-platform/` | Specs, docs, LAPTOP, chat bruto | -| `ligbox-ops-platform/LAPTOP/` | Export C: / sessões Cursor | -| `ligbox-ops-platform/specs/` | Spec Kit features | +## Links rápidos Invest + +- [SPEC-051](Invest-MyVexx/SPEC-051-INVEST-UNIFIED-DASHBOARD-INDEX-HUB.md) +- [SPEC-050](Invest-MyVexx/SPEC-050-INVEST-AI-AGENTS-PAPER.md) ## Obsidian Desktop ```bash git clone https://git.spec.ligbox.com.br/ligbox/obsidian-vault.git ``` - -Plugin **Obsidian Git** → pull antes de editar, push depois.