ligbox-ops-platform/specs/028-openpanel-ce-ligbox-reengineering/DNS53_OPENPANEL_PORTA53.md
Ligbox Spec Hub c1881f58e6 chore: sync Console SSO, DNS viewer, specs e infra docs pendentes
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>
2026-06-25 20:10:17 +00:00

226 lines
7.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 6366) |
| 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*