En este post vamos a instalar un DNS basado en la solución CoreDNS, sobre docker. Hemos optado por esta opción para minimizar las capas, y solo tener que mantener y validar una única imagen.

Lo primero que vamos a hacer, será crear una carpeta donde guardaremos los ficheros necesarios.

$mkdir -p containers/coredns

Una vez tenemos esto ejecutamos el docker:

$docker run -d --name coredns --restart=always --volume=/home/user/containers/coredns/:/root/ -p 53:53/udp coredns/coredns -conf /root/Corefile

–name Es el nombre del contenedor una vez se ejecuta en nuestro repositorio

–restart Salvo que nosotros lo indiquemos mediante docker “stop” o sentencia similar, el docker intentará reiniciarse si falla su ejecución

–volume Indicamos la carpeta de nuestro host local, que adjuntaremos como volumen cuando se ejecute el docker, lo utilizaremos principalmente para el fichero de configuración, diferentes zonas DNS, o información adicional.

-p La redirección de puertos que haremos desde nuestro motor de docker (raspberry) con nuestros contenedores

coredns/coredns la imagen que utilizaremos (salvo que indiquemos lo contrario será “latest”)

-conf Indicamos la ruta, dentro del contenedor, donde se encuentra el fichero de instalación.

Ejemplo de uso:

Modificamos Corefile

nano containers/coredns/Corefile

Añadimos información de log sobre todos los destinos

.:53 {
    forward . 8.8.8.8
    log
}    

Generamos el docker:

$docker run -d --name coredns --restart=always --volume=/home/<username>/containers/coredns/:/root/ -p 53:53/udp coredns/coredns -conf /root/Corefile

Podemos probar que funciona haciendo un dig @localhost www.google.es

Configuramos un equipo cliente y le hacemos peticiones para generar tráfico.

Ahora revisamos los logs

$docker logs coredns

Vemos que el equipo cliente mío es el 192.168.0.10, en un momento nos aparecen todas las consulta que realiza a servicios DNS por el puerto 53.

También lo hemos ejecutado en nuestra Raspberry, realizando los mismos pasos en conjunto con nuestro OpenVPN Server y funcionando a las mil maravillas!

El conjunto entre imagen, volumenes, ficheros, etc, no pesa más de 40 Mb, ¡increíble!

Si no tienes instalado docker en tu Raspberry Pi, puedes seguir nuestros pasos.

Podemos conocer más información de CoreDNS en su repositorio de Github en su propia página web coredns.io/ dónde podemos encontrar el manual de uso.

Quizá hacer una mención especial al apartado de plugins, donde podemos encontrar extensiones que nos ayudarán a utilizar CoreDNS con plataformas Cloud como Azure, AWS o Google Cloud, además de poder integrarlo para gestionar Kubernetes e infraestructura de MicroServicios.