PowerDNS


PowerDNS es un programa de servidor DNS , escrito en C++ y licenciado bajo la GPL . Se ejecuta en la mayoría de los derivados de Unix . PowerDNS presenta una gran cantidad de backends diferentes que van desde archivos de zona de estilo BIND simples hasta bases de datos relacionales [3] y algoritmos de balanceo de carga / conmutación por error . Se proporciona un recursor de DNS como un programa separado.

El desarrollo de PowerDNS comenzó en 1999 y originalmente era un producto patentado comercial. En noviembre de 2002, el código fuente se hizo público bajo la licencia GPL v2 de código abierto. [4] [5]

PowerDNS Authoritative Server ( pdns_server ) consta de un solo núcleo y varios backends cargables dinámicamente que se ejecutan en subprocesos múltiples . El núcleo maneja todo el procesamiento de paquetes y la inteligencia de DNS, mientras que uno o más backends entregan registros de DNS utilizando métodos de almacenamiento arbitrarios .

Se admiten las transferencias de zona y las notificaciones de actualización, y los procesos pueden ejecutarse sin privilegios y en chroot . Se mantienen varios cachés para acelerar el procesamiento de consultas. El control de tiempo de ejecución está disponible a través del comando pdns_control , que permite la recarga de zonas separadas, purgas de caché, notificaciones de zona y estadísticas de volcados en formato Multi Router Traffic Grapher / rrdtool . La información en tiempo real también se puede obtener a través del servidor web integrado opcional .

El servidor autorizado de PowerDNS es compatible con DNSSEC a partir de la versión 3.0. Si bien se pueden atender zonas prefirmadas, también es posible realizar firmas en línea y administración de claves. Esto tiene la ventaja de ser relativamente fácil, pero la desventaja de que el material de claves criptográficas está presente en los propios servidores (lo que también es cierto para cualquier servidor HTTPS cuando no se usa con un HSM , por ejemplo).

Esta parte de PowerDNS utiliza una combinación de subprocesos nativos y subprocesos de espacio de usuario, mediante el uso de Boost y la biblioteca MTasker, [7] que es una biblioteca multitarea cooperativa simple. También está disponible como un paquete independiente.