phpIPAM + PowerDNS integrados a Proxmox SDN

IPAM y DNS dinámico que acompaña el ciclo de vida de tus VMs

El problema del IPAM manual

En cuanto el número de VMs supera la docena, una planilla con IPs deja de funcionar. Las colisiones pasan, los registros DNS quedan desactualizados y el troubleshooting se multiplica.

La solución: phpIPAM para gestión de direccionamiento, PowerDNS con API, y el plugin de Proxmox SDN conectando ambos.

Figura 4 — Integración phpIPAM + PowerDNS + Proxmox SDN. Subnets ficticias de ejemplo.

Arquitectura del stack

  • phpIPAM (ipam01 · 10.0.0.30): gestiona subnets, asigna IPs, expone API REST
  • PowerDNS Authoritative (pdns01 · 10.0.0.31): recibe actualizaciones via API al crear/eliminar VMs
  • PowerDNS Recursor (mismo host · port 53): resolver para los nodos, forward a Auth para zonas internas
  • Proxmox SDN plugin (PowerdnsPlugin.pm): integración nativa en libpve-network-perl

PowerDNS 5.x cambió rutas de API respecto a 4.x. El plugin de Proxmox fue escrito para 4.x y requiere un parche en PowerdnsPlugin.pm para corregir los paths y los trailing dots en nombres de zona. Sin ese parche, la integración falla silenciosamente.

Subnets de ejemplo

  • VLAN10 Gestión: 10.0.10.0/24 — Gateway: 10.0.10.1
  • VLAN20 VMs:     10.0.20.0/24 — Gateway: 10.0.20.1
  • VLAN30 Cluster: 10.0.30.0/24 — sin gateway (L2 interno)
  • VLAN40 Storage: 10.0.40.0/24 — sin gateway (L2 interno)

Instalación de phpIPAM

  1. Instalar en VM Debian 12: phpipam + nginx + mariadb
  2. Configurar API: Administration → API → Add App Key — anotar app_id y app_code
  3. Crear subnets correspondientes a tus VLANs/SDN zones
  4. Habilitar DNS integration en cada subnet

💡 Tip:  Asignale a ipam01 la primera IP usable de la subred de gestión (10.0.10.2) y agregala a /etc/hosts de todos los nodos. Si el DNS falla, phpIPAM sigue accesible.

Instalación de PowerDNS 5.x

  • Instalar desde repos oficiales de PowerDNS — no el paquete de Debian (versión vieja)
  • Configurar backend gmysql sobre MariaDB
  • Habilitar API en pdns.conf: api=yes, api-key=TU_KEY, webserver=yes
  • Crear zona: pdnsutil create-zone lab.internal
  • Instalar pdns-recursor por separado con forward-zones=lab.internal=127.0.0.1:5300

⚠️ Gotcha:  El recursor tiene una lista dont-query que incluye 127.0.0.0/8 por defecto. Si el authoritative escucha en loopback, el recursor no le habla. Hay que usar la IP real del host o ajustar dont-query.

Integración con Proxmox SDN

Datacenter → SDN → IPAM → Add → PowerDNS. Ingresar URL de API, key y zona base (lab.internal).

Al crear una VM con IP asignada por SDN: Proxmox registra el A record en PowerDNS automáticamente. Al eliminar la VM, el registro se borra.


Comentarios

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *