CI DNS: Pi-Hole¶
El primer contenedor que creo es el DNS (Domain Name System), porque sin DNS las cosas no funcionan.
1. Despliegue del Contenedor¶
En el host, clonamos el contenedor base:
sudo lxc-copy -n CB01-deb12 -N CI01-dns
2. Configuración de Red (IP Estática)¶
Modificamos el fichero configuración /var/lib/lxc/CI01-dns/config con el contenido del archivo config.
Una vez establecida la IP y los recursos iniciamos en contenedor.
sudo lxc-start -n CI01-DNS
sudo lxc-attach -n CI01-DNS
Para poder instalar y resolver dominios, congiguramos DNS:
rm /etc/resolv.conf
echo "nameserver 8.8.8.8" > /etc/resolv.conf
echo "nameserver 1.1.1.1" >> /etc/resolv.conf
3. Instalación de Pi-hole¶
Ejecutaremos el script oficial de instalación de Pi-hole.
curl -sSL https://install.pi-hole.net | bash
En el asistente seleccionaremos:
* Interface: eth0.
* Upstream DNS: Google o Cloudflare.
* Web Interface: On.
* Log Queries: On (para Grafana).
4. Ajustes de Seguridad¶
Firewall¶
Pi-hole necesita abrir varios puertos para funcionar como DNS y para su panel web.
# DNS (Tráfico de red)
ufw allow 53/tcp
ufw allow 53/udp
# Panel Web (Administración)
ufw allow 80/tcp
ufw allow 443/tcp
# Opcional, si quieres que pi-hole actúe como servidor DHCP
ufw allow 67/udp
ufw allow 68/udp
# Recargar reglas
ufw reload
Acceso Web¶
Ahora ya podemos acceder a la interfaz web entrando en http o https :$IP/admin
La contraseña se establece ejecutando:
pihole setpassword
5. Monitorización¶
Como ya instalamos el Node Exporter en el contenedor base, Pi-hole ya envía las métricas a Grafana automáticamente.
6. Bonus: Evitar conflictos con el puerto 53¶
En algunas instalaciones de Debian, systemd-resolved utiliza el puerto 53. Si el instalador de Pi-hole da error, ejecuta esto:
systemctl stop systemd-resolved
systemctl disable systemd-resolved