Agregue zonas adicionales fuera de la base de datos MySQL

Agregue zonas adicionales fuera de la base de datos MySQL

Al necesitar un backend MySQL para mi servidor DNS, he decidido cambiar de Bind a PowerDNS, cuyo backend MySQL es un poco más conveniente.

Básicamente: los usuarios agregan dominios a mi base de datos usando una interfaz web, esos dominios están registrados y disponibles para PowerDNS. Cuando consulto al servidor DNS sobre estos dominios, obtengo una respuesta válida. Funciona de maravilla.

El hecho es que necesito agregar dominios y zonas mías a mis registros DNS, y agregarlos a la base de datos rompería la lógica de mi aplicación (solo los usuarios de esta aplicación deberían agregar dominios). Me gustaría agregar dominios y zonas adicionales a PowerDNS, sin agregarlos directamente a mi base de datos.

¿Hay alguna forma de registrar dominios adicionales, en un archivo, por ejemplo, que se pueda leer antes de realizar cualquier consulta MySQL? ¿O tal vez un archivo alternativo, en caso de que no se encuentre nada entre mis registros MySQL?

Respuesta1

Solución encontrada, enlas profundidades de la plataforma de lanzamiento de PowerDNS! Hay una manera de leer archivos de datos DNS antes de usar el backend de MySQL, y esa es... ¡usando dos backends! Citando:

Como se describe enhttp://doc.powerdns.com/modules.html- simplemente no con tantas palabras;) - PowerDNS puede lanzar cualquier cantidad de backends diferentes o los mismos a través de la declaración de lanzamiento. Por lo general, uno simplemente haría eso en el archivo de configuración pdns.conf en lugar de en la línea de comando. Esos backends se agotarán para obtener respuestas a su consulta de DNS en el orden en que aparecen en la declaración de lanzamiento. Esto significa que si su primer backend en la fila puede responder la pregunta, lo hará y si solo el cuarto en la fila puede responder la pregunta, tendrá el retraso del bucle a través de los primeros tres backends hasta que PowerDNS envíe la respuesta. Por lo tanto, es imperativo que se asegure de que sus servidores respondansuficientemente rapidodonde recibir y responder lo suficientemente rápido en <1 s debería ser suficiente para ser compatible con la mayoría de los servidores de nombres recursivos; sin embargo, más rápido es mejor, por supuesto.

Para mi problema, elegí usar:

  • Un backend Bind, que sirve como backend prioritario basado en archivos.
  • El backend de MySQL, que ocupa el segundo lugar.

Básicamente, todo lo que se necesita es un pequeño cambio de configuración en pdns.local:

launch=bind,gmysql

He oído que podrías ser aún más específico con (asigna nombres a los servidores):

launch=bind:first,gmysql:second

Luego, simplemente agregue parámetros para ambos backends:

# Bind backend configuration
bind-config=/path/to/your/zones/file

# MySQL configuration
gmysql-host=localhost
gmysql-port=
gmysql-dbname=db
gmysql-user=user
gmysql-password=passwd
gmysql-dnssec=no

Todo lo que tiene que hacer es crear un archivo de zona Bind ( zone{}bloques) que haga referencia a archivos específicos del dominio (que contengan registros SOA, A, MX, NS, ...).

Reanudar !

información relacionada