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