174 lines
5.9 KiB
Markdown
174 lines
5.9 KiB
Markdown
# 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`
|