Skip to main content

Varios PiHole sincronizados

Ahora que ya dispone de un PiHole configurado, quiza interesa tener un segundo o tercer PiHole, para ponerlos como DNS1, DNS2, DNS3... el problema es que PiHole utiliza una base de datos SQLite por lo tanto la base de datos está en local y no tienen soporte actualmente para MySQL.

Por lo que si se realiza un cambio en uno de los PiHole, se deberá ir manualmente y modificar los datos en tantos PiHole como se dispongan. Hay un programa creado por un developer que se encarga de realizar dicha sincronización, aunque a mí personalmente no me convence puesto que necesita conectarse por ssh al servidor donde esta el pihole principal, aparte de instalar cierto software que quiza no nos interesa.

También porque si infectan una de las máquinas, podran hacer uso de esa conexión SSH para conectarse a la otra máquina y por lo tanto hacer un salto entre ellas.

Por ello os dejo aquí la solución que se me ha ocurrido, que no es mas que hacer uso de un GIT que será el que tenga la configuración "master" que los otros PiHole replicarán.

Creación de PiHole que borraremos

Puede crear un PiHole del cual una vez haya configurado como desee, obtendrá los siguientes ficheros que posteriormente copiará al repositorio GIT.

  • custom.list
  • setupVars.conf

custom.list

Es un fichero en el que se guardan los registros DNS locales, en otras palabras es como el fichero hosts de un equipo. Se suele usar para crear los registros que queramos resolver localmente. Por ejemplo, si queremos que al estar dentro de la empresa un dominio se solvente con la IP local, lo añadiremos ahí.

Cree un fichero llamado custom.list y añada los registros que quiera.

10.15.50.6 docs.psc.local
10.15.50.5 puppet.psc.local
10.15.60.10 hv1.psc.local
10.15.60.11 hv2.psc.local
10.15.50.10 dns1.psc.local
10.15.50.11 dns2.psc.local

setupVars.conf

El fichero setupVars.conf es el fichero que tiene la configuración de PiHole, como los servidores upstream (servidores DNS a los que consultará en caso de no conocer el dominio).

INSTALL_WEB_INTERFACE=true
WEBPASSWORD=contiene la password cifrada de la web
PIHOLE_INTERFACE=eth0
QUERY_LOGGING=true
BLOCKING_ENABLED=true
DNSMASQ_LISTENING=single
DNS_FQDN_REQUIRED=false
DNS_BOGUS_PRIV=false
DNSSEC=true
REV_SERVER=false
PIHOLE_DNS_1=9.9.9.11
PIHOLE_DNS_2=149.112.112.11
PIHOLE_DNS_3=1.1.1.1
PIHOLE_DNS_4=1.0.0.1

Creación de repositorio GIT

Para hacerlo, comenzaremos creando un repositorio en Github privado

Active la casilla Readme para que incialice el repositorio.

Guarde los cambios. Si desea poder gestionar o modificar los ficheros desde un notepad, necesitará poder subir los cambios con un cliente Git. Puede usar SourceTree para ello https://www.sourcetreeapp.com/ (disponible para Mac / Windows).

Clone el repositorio a SourceTree introduciendo la URL del repositorio que se ha creado, a continuación dejo un vídeo de como realizarlo https://www.youtube.com/watch?v=5K4gong_lA0.

y una vez creado el repositorio accedaAcceda a la pestañacarpeta Settingslocal >del Deployrepositorio Keys, ya(la que parase poderha sincronizarclonado en su equipo) y copie los PiHoleficheros neindicados anteriormente.

  • custom.list
  • setupVars.conf

A continuación añada un nuevo fichero llamado .gitignore con el siguiente contenido.

# Extensions
*.db
*.leases
*.sha1
*.domains
*.bak

# Explicit files
dns-servers.conf
pihole-FTL.conf
local.list
versions
logrotate

# Folders
migration_backup/