Hemos creado un servidor personal utilizando una solución docker de CoreDNS, que modificaremos para poder utilizarla a nuestro gusto.
Vamos a crear una nueva zona, en la que añadiremos los host esxi que tenemos dentro de nuestro laboratorio, en este caso:
- vcenter100
- esxi101
- esxi102
- esxi103
Partimos de que tenemos un CoreDNS ya ejecutandose, (si no lo tienes y te gustaría configurarlo puedes ver nuestro anterior post), por lo que vamos a modificar el fichero Corefile que tenemos en nuestro motor de docker.
Si recordais tenemos una carpeta ~/containers/coredns/ donde tenemos el fichero Corefile
cat ~/containers/coredns/Corefile

Lo primero que vamos a crear es un fichero que contendrá la zona DNS deseada, a modo base de datos, con los registros que nos interese añadir. En este caso vsphere.local
nano containers/coredns/db.vsphere.local
Añadimos las siguientes líneas para configurar la zona y añadir los host pertinentes:
$TTL 604800 @ IN SOA dns.vsphere.local. admin.vsphere.local. ( 3 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; vcenter100.vsphere.local. IN A 192.168.0.100 esxi101.vsphere.local. IN A 192.168.0.101 esxi102.vsphere.local. IN A 192.168.0.102 esxi103.vsphere.local. IN A 192.168.0.103
Hay muchas formas de declarar las zonas, y diferentes formas de darle los parámetros de TTL, hemos pensado que esta es la más sencilla/visual
Debería quedar así:

Una vez hemos generado el fichero de la zona, debemos decirle a Corefile donde se tiene que dirigir, en el caso de que le hagan una petición de *.vsphere.local.
Modificamos el fichero Corefile
nano ~containers/coredns/Corefile
Añadimos estas líneas:
.:53 {
forward . 8.8.8.8 {
except vsphere.local
}
log
}
vsphere.local:53 {
file /root/db.vsphere.local vsphere.local
errors
log
}
Diferencias respecto al fichero de origen, le hemos dicho que las entradas que hagan referencias al dominio vsphere.local las obvie y no las reenvíe.
Creamos una zona de escucha al dominio vsphere.local y en el puerto específico 53.
Utilizamos el plugin file, para decirle el fichero a consultar en caso de petición al dominio vsphere.local.
Es importante decirle la ruta, donde se encontrará el fichero de la base de datos una vez esté montado en el contenedor, si os fijáis estamos trabajando sobre nuestro usuario user, pero en el docker ese usuario no existe y trabaja todo con el usuerio root del contenedor.
Una vez hemos realizado los cambios debería quedar así:

Una vez hecho los cambios, ¿Deberíamos reiniciar de alguna forma el servicio para que cargue la nueva zona?
Lo más fácil es reiniciar el contenedor.
docker restart coredns
Siempre que no eliminemos este contenedor, tendrá adjunto el volumen con la información de la configuración del DNS, podemos reiniciarlo, pararlo, y ejecutar infinididad de acciones. Si el contenedor se elimina, hay que volver a añadir el volumen.
docker inspect coredns

Comprobamos si nos resuelve correctamente el nombre del esxi101 por ejemplo:
dig @localhost esxi101.vpshere.local

Así tenemos otra forma más en la que sacarle partido a docker, CoreDNS y por supuesto está funcionando en Raspberry Pi.