Desde hace unos días he estado haciendo algunas modificaciones a mi homelab y la red. A raíz de las polémicas recientes entre IBM/Red Hat y la comunidad, he terminado explorando Red Hat Enterprise Linux para uso en varios de mis mini servidores, entre ellos, hobbiton
que ahora tiene RHEL 9.2. Salvando algunas diferencias con respecto a mi habitual uso de Debian GNU/Linux en mis servidores y Fedora /Arch Linux en algunas de mis Thinkpads termine reconstruyendo todo.
RHEL 9.2 trae podman
para gestionar contenedores de manera predeterminada, así que decidí aprender algo sobre la marcha y hacer docker
a un lado. Este cambio trae algunas consecuencias, sobre todo porque no se ejecuta como un daemon, sino en espacio de usuario y hay que tomar algunos workarounds para gestionar los contenedores que impactan puertos de red <1024 por tema de permisos.
Estuve explorando la opción que plantea Juanma en su blog, pero el tráfico aparece en el PiHole como proveniente en su totalidad del localhost y no separado por cliente como ocurre normalmente.
Lo primero, es el tema de los puertos. El PiHole funciona con varios puertos como indica la documentación, para el fin que persigo, limpiar la red de la casa de los molestos ads solo necesito hacer andar el puerto 53 que esta destinado al DNS. Los puertos 53/tcp y 53/udp requieren permisos de superusuario para su uso, pero esto se puede solucionar con un forward en el firewall hacia un puerto no privilegiado.
Lo siguiente es editar el comando original de ejecución de docker (aquí hay una excelente explicación sobre esto), pero antes necesitaremos crear dos volumenes.
Finalmente estando en la cli, lanzo el comando podman run ...
tal cual se muestra a continuación:
Ya después de todo, podremos conectarnos a nuestro pihole
y verificar que todo funciona:
Por si necesitamos cambiar la clave de login por una diferente a la que pusimos en los parámetros de podman:
También podemos verificar que esta corriendo adecuadamente el contenedor en cockpit
Ahora es momento de crear una unidad para systemd
para que pihole inicie al arrancar el servidor. Antes debemos eliminar el contenedor que levantamos de prueba, pues con systemd
será ejecutado por el superusuario y no queremos errores por contenedores que se llamen igual.
Necesitamos también habilitar los puertos en el firewall:
Podemos validar estos cambios y las redirecciones de puerto con el comando sudo firewall-cmd --list-all
Ahora creamos el archivo /etc/systemd/system/pihole.service
con el contenido a continuación:
Por último, necesitamos un ajuste en la configuración del PiHole, sin el cual no funciona ni identifica el tráfico. En Settings > DNS, vamos a la sección Interface settings y seleccionamos la opción Respond only on interface tap0. Esta opción debería habilitarse con el parámetro -e INTERFACE="tap0"
pero por alguna razón no lo hace, una vez hecho y guardado el cambio, las siguientes veces que reiniciemos el contenedor no habrá que volver a hacer el ajuste a menos que eliminemos los volúmenes.
Finalmente seteamos el inicio del contenedor con systemd
Hasta aquí tendremos funcionando un contenedor con PiHole que hará desaparecer la mayor parte de la publicidad mientras navegas en la red de tu casa así como otros códigos maliciosos que podrían ejecutarse en un navegador. Para mejorar el PiHole en estos menesteres es necesario añadir otras listas de bloqueo, las listas que yo utilizo las importo desde aquí. Escogiendo 2 de cada sección, de las que están marcadas en verde.
@linkmoises
Aún no hay comentarios...