Inclui console handoff Desk↔Console (Spec 019), melhorias DNS Viewer (037), OpenPanel/Nextcloud/VM116 deploy notes, contracts stack e sidebar actualizado. Co-authored-by: Cursor <cursoragent@cursor.com>
226 lines
7.8 KiB
Markdown
226 lines
7.8 KiB
Markdown
# OpenPanel VM123 — DNS público porta 53 (BIND)
|
||
|
||
**Spec:** 028 — OpenPanel CE Ligbox Re-engenharia
|
||
**Data incidente/resolução:** 2026-06-22
|
||
**Solicitante:** Roger
|
||
**Status:** ✅ Resolvido e persistido
|
||
**VM:** VM123 (`10.10.10.123`) · **IP DNS público:** `95.216.14.162:53`
|
||
|
||
> Relatório operacional completo: [`../../exec-reports/EXEC_DNS53_PROXMOX_20260622_v3_FINAL.md`](../../exec-reports/EXEC_DNS53_PROXMOX_20260622_v3_FINAL.md)
|
||
> Runbook rede Proxmox: [`../../docs/network/ORIENTACAO_DNS53_PROXMOX_20260622.md`](../../docs/network/ORIENTACAO_DNS53_PROXMOX_20260622.md)
|
||
|
||
---
|
||
|
||
## 1. Papel do OpenPanel / BIND na VM123
|
||
|
||
O OpenPanel gere zonas DNS autoritativas dos clientes Ligbox. O serviço público corre em Docker:
|
||
|
||
| Item | Valor |
|
||
|------|-------|
|
||
| Container | `openpanel_dns` |
|
||
| Imagem | `ubuntu/bind9:latest` |
|
||
| Porta host | `0.0.0.0:53` (UDP/TCP) via `docker-proxy` |
|
||
| IP LAN | `10.10.10.123` |
|
||
| Rede Docker | `root_openpanel_network` · container `172.20.0.2` |
|
||
| Tipo | **Autoritativo** (não recursivo) |
|
||
|
||
**Zonas validadas (exemplos):**
|
||
|
||
| Zona | Teste | Resultado |
|
||
|------|-------|-----------|
|
||
| `betinplace.com` | `dig @10.10.10.123 betinplace.com MX` | `10 mail.betinplace.com.` |
|
||
| `diarissima.com` | `dig @10.10.10.123 diarissima.com MX` | `0 diarissima.com.` |
|
||
| `ligbox.com.br` | `dig @10.10.10.123 ligbox.com.br NS` | registos autoritativos OK |
|
||
| `google.com` | `dig @10.10.10.123 google.com` | **REFUSED** (esperado) |
|
||
|
||
Glue Cloudflare (delegação Ligbox):
|
||
|
||
| NS | A |
|
||
|----|---|
|
||
| `ns1.ligbox.com.br` | `95.216.14.162` |
|
||
| `ns2.ligbox.com.br` | `95.216.14.162` |
|
||
|
||
---
|
||
|
||
## 2. Arquitectura end-to-end (OpenPanel + Proxmox)
|
||
|
||
```text
|
||
Cliente / Internet
|
||
│
|
||
▼
|
||
95.216.14.162:53 ← IP público (Proxmox big1, glue DNS)
|
||
│ PREROUTING DNAT (Proxmox vmbr0)
|
||
▼
|
||
10.10.10.123:53 ← VM123 openpanel_dns (BIND Docker)
|
||
│ resposta para 10.10.10.254 (SNAT ida Proxmox)
|
||
▼
|
||
reverse NAT → cliente recebe resposta de 95.216.14.162 ✅
|
||
|
||
OpenPanel UI (:2083) ──► gere zonas ──► openpanel_dns (:53)
|
||
pfSense VM100 WAN 95.216.14.146 — NÃO é origem correcta do DNS público
|
||
```
|
||
|
||
**Importante para OpenPanel:** o painel e o BIND partilham a VM123, mas o **acesso público à porta 53** é terminado no **Proxmox** (DNAT + SNAT). Problemas de timeout externo são quase sempre **rede/NAT**, não configuração de zona no OpenPanel.
|
||
|
||
---
|
||
|
||
## 3. Sintoma (2026-06-22)
|
||
|
||
| Observação | Detalhe |
|
||
|------------|---------|
|
||
| Externo | `nslookup betinplace.com 95.216.14.162` → **timeout** (Windows Roger) |
|
||
| LAN directo BIND | `dig @10.10.10.123` → **OK** |
|
||
| OpenPanel / zonas | Correctas no BIND |
|
||
| Causa | Resposta DNS saía com IP **95.216.14.146** (pfSense) em vez de **95.216.14.162** |
|
||
|
||
---
|
||
|
||
## 4. Tentativas incorrectas (não repetir)
|
||
|
||
| Tentativa | Impacto OpenPanel/DNS |
|
||
|-----------|------------------------|
|
||
| DNAT Proxmox → `10.0.0.2:53` | Timeout — WAN pfSense legada inactiva |
|
||
| DNAT → `10.10.10.1:53` | Respostas Unbound LAN, não BIND OpenPanel |
|
||
| DNAT directo + `MASQUERADE -d 10.10.10.123:53` | Timeout — retorno quebrado |
|
||
| DNAT → `95.216.14.146:53` (pfSense) | Resposta com src 146, cliente descarta |
|
||
| Policy routing VM123 (Docker) | Ineficaz — tráfego BIND passa pela bridge Docker |
|
||
|
||
---
|
||
|
||
## 5. Solução final (activa)
|
||
|
||
### 5.1 Proxmox (`/etc/network/interfaces`)
|
||
|
||
```bash
|
||
# Entrada :53 → VM123 OpenPanel BIND
|
||
iptables -t nat -A PREROUTING -i vmbr0 -d 95.216.14.162 -p udp --dport 53 \
|
||
-j DNAT --to-destination 10.10.10.123:53
|
||
iptables -t nat -A PREROUTING -i vmbr0 -d 95.216.14.162 -p tcp --dport 53 \
|
||
-j DNAT --to-destination 10.10.10.123:53
|
||
|
||
# SNAT ida — permite retorno como 95.216.14.162
|
||
iptables -t nat -A POSTROUTING -d 10.10.10.123 -p udp --dport 53 ! -s 10.10.10.0/24 \
|
||
-j SNAT --to-source 10.10.10.254
|
||
iptables -t nat -A POSTROUTING -d 10.10.10.123 -p tcp --dport 53 ! -s 10.10.10.0/24 \
|
||
-j SNAT --to-source 10.10.10.254
|
||
|
||
# FORWARD retorno BIND → Internet
|
||
iptables -I FORWARD 4 -s 10.10.10.123 -p udp --sport 53 ! -d 10.10.10.0/24 -j ACCEPT
|
||
iptables -I FORWARD 5 -s 10.10.10.123 -p tcp --sport 53 ! -d 10.10.10.0/24 -j ACCEPT
|
||
```
|
||
|
||
### 5.2 Regra removida (crítica)
|
||
|
||
Em `/etc/iptables/rules.v4` — **não reactivar**:
|
||
|
||
```bash
|
||
#-A POSTROUTING -o vmbr4000 -j MASQUERADE
|
||
```
|
||
|
||
### 5.3 VM123 — sem alteração permanente necessária
|
||
|
||
O container `openpanel_dns` mantém-se standard. Default gateway VM123 = `10.10.10.1` (pfSense) para tráfego geral; o retorno DNS público é tratado pelo conntrack Proxmox após SNAT ida `10.10.10.254`.
|
||
|
||
---
|
||
|
||
## 6. Validação (pós-fix)
|
||
|
||
```bash
|
||
# Directo BIND OpenPanel
|
||
dig @10.10.10.123 betinplace.com MX +short
|
||
|
||
# Via IP público (como cliente externo)
|
||
dig @95.216.14.162 betinplace.com MX +short
|
||
dig @95.216.14.162 diarissima.com MX +short
|
||
|
||
# Windows
|
||
nslookup betinplace.com 95.216.14.162
|
||
nslookup -type=mx diarissima.com 95.216.14.162
|
||
```
|
||
|
||
**Resultado Roger (Windows 2026-06-22):** ✅ respostas recebidas.
|
||
|
||
---
|
||
|
||
## 7. Diagnóstico rápido (OpenPanel / porta 53)
|
||
|
||
```bash
|
||
# 1. Container BIND activo?
|
||
ssh root@10.10.10.123 "docker ps --filter name=openpanel_dns"
|
||
|
||
# 2. BIND responde local?
|
||
ssh root@10.10.10.123 "dig @127.0.0.1 betinplace.com MX +short"
|
||
|
||
# 3. Tráfego externo chega?
|
||
ssh root@10.10.10.123 "timeout 10 tcpdump -ni eth0 udp port 53 -c 5"
|
||
|
||
# 4. SNAT Proxmox activo?
|
||
iptables -t nat -L POSTROUTING -n -v | grep "10.10.10.123.*53"
|
||
|
||
# 5. Resposta sai de 162 (não 146)?
|
||
tcpdump -ni vmbr4000 udp port 53 and host 10.10.10.123
|
||
```
|
||
|
||
| Sintoma | Provável causa | Acção |
|
||
|---------|----------------|-------|
|
||
| `@10.10.10.123` OK, `@162` timeout | NAT Proxmox | Rever DNAT + SNAT ida |
|
||
| Container down | OpenPanel stack | `docker restart openpanel_dns` |
|
||
| Zona wrong | OpenPanel DNS UI | Rever zona no painel, não NAT |
|
||
| REFUSED google.com | Normal | BIND autoritativo only |
|
||
|
||
---
|
||
|
||
## 8. Pendências OpenPanel / delegação
|
||
|
||
| Item | Estado | Acção |
|
||
|------|--------|-------|
|
||
| Glue `ns1/ns2.ligbox.com.br` → 162 | ✅ | Cloudflare |
|
||
| `betinplace.com` NS no registrador | ⚠️ Pendente | Apontar para `ns1/ns2.ligbox.com.br` |
|
||
| pfSense port forward WAN :53 → 123 | Redundante | Limpeza opcional (IDs 63–66) |
|
||
| Documentação Spec 028 | ✅ | Este ficheiro |
|
||
|
||
---
|
||
|
||
## 9. Impacto no fluxo OpenPanel
|
||
|
||
| Fluxo | Porta 53 |
|
||
|-------|----------|
|
||
| Cliente consulta site via DNS público | Depende de `@95.216.14.162` |
|
||
| OpenPanel `domains-add` / gestão zona | Escreve no BIND local (`openpanel_dns`) |
|
||
| FOSSBilling → bridge → hosting | Não afectado directamente |
|
||
| Email / MX records | Servidos pelo mesmo BIND — validar MX após fix |
|
||
|
||
Ao provisionar **novo domínio** no OpenPanel:
|
||
|
||
1. Criar zona no painel (comportamento normal OpenPanel)
|
||
2. Validar: `dig @10.10.10.123 novo-dominio.com MX`
|
||
3. Validar público: `dig @95.216.14.162 novo-dominio.com MX`
|
||
4. No registrador: NS → `ns1.ligbox.com.br` / `ns2.ligbox.com.br`
|
||
|
||
---
|
||
|
||
## 10. Referências Spec 028
|
||
|
||
| Documento | Conteúdo |
|
||
|-----------|----------|
|
||
| `spec.md` | OpenPanel CE re-engenharia geral |
|
||
| `DNS53_OPENPANEL_PORTA53.md` | **Este documento** |
|
||
| `CONFIRMACAO-TESTE-API.md` | Teste API multidomínio |
|
||
| `../../exec-reports/EXEC_DNS53_PROXMOX_20260622_v3_FINAL.md` | Incidente completo Proxmox |
|
||
| `../../docs/network/ORIENTACAO_DNS53_PROXMOX_20260622.md` | Runbook rede |
|
||
| Spec **037** | DNS multi-conta Cloudflare (orquestração) |
|
||
|
||
---
|
||
|
||
## 11. Regras de ouro (OpenPanel + DNS53)
|
||
|
||
1. DNS público Ligbox/OpenPanel = **`95.216.14.162:53`** → VM123 BIND
|
||
2. Nunca assumir pfSense WAN `10.0.0.2` — usar **`95.216.14.146`** (vmbr0)
|
||
3. SNAT ida **`10.10.10.254`** no Proxmox é **obrigatório**
|
||
4. Não usar `MASQUERADE -o vmbr4000` nem `MASQUERADE -d 10.10.10.123:53`
|
||
5. Testar zonas **autoritativas** do OpenPanel, não domínios recursivos
|
||
6. Alterar `/etc/network/interfaces` Proxmox só com backup + aprovação Roger
|
||
|
||
---
|
||
|
||
*Spec 028 · VM130 spec-hub · OpenPanel DNS porta 53 · 2026-06-22*
|