Technitium es un servidor DNS y DHCP que se ejecuta desde un contenedor de Docker. Configuraremos el stack de Docker de Technitium DNS; configuraremos el cortafuegos para permitir los puertos necesarios; y levantaremos el stack a través de Portainer. Ya que el DNS va a ejecutarse adentro del servidor, necesitamos asignar al servidor un IP estático en la red local. Configuraremos el servidor para no usar DHCP y asignarse un IP en la red. El stack consiste de los siguientes contenedores:
- Technitium: Servidor DNS y DHCP.
- Ejecutar:
./scripts/create_technitium_folder.sh
para generar el directorio del contenedor en el SSD. - Editar el archivo del stack:
nano ./files/technitium-stack.yml
. - Reemplazar
TZ=America/New_York
por el huso horario de su sistema. Puede usar esta lista como referencia: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones. - Ajustar el atributo
ipv4_address
en el contenedortechnitium
con un IP en el rango no asignable por el DHCP. Por ejemplo 192.168.1.10. - Copiar todo el contenido del archivo al portapapeles. Guardar y salir con
Ctrl + X, Y, Enter
. - Ejecutar:
./scripts/dns_firewalld_services.sh
. Configura Firewalld para los contenedores. El script abre el puerto para DNS para Technitium. - Agregar stack en Portainer desde el navegador.
- Acceder a Portainer a través de https://192.168.1.253:9443. Si sale una alerta de seguridad, puede aceptar el riesgo ya que Portainer usa un certificado de SSL autofirmado.
- Darle clic en "Get Started" y luego seleccionar "local".
- Seleccionar "Stacks" y crear un nuevo stack.
- Ponerle nombre "technitium" y pegar el contenido del docker-compose.yml que copió al portapapeles y crear el stack. Desde ahora modificaciones al stack se deben de hacer a través de Portainer y no en el archivo.
- Ejecutar:
./scripts/disable_resolved.sh
. Desactivamos el servicio de DNS local "systemd-resolved" para desocupar el puerto DNS que necesita Technitium. - Ver el nombre del dispositivo de red físico activo, por ejemplo
enp1s0
oeth0
:nmcli device status
. Si existe más de un dispositivo físico, seleccionar el que esté conectado al router con mejor velocidad. Reemplazar en los comandos siguientesenp1s0
por el dispositivo correcto. - Asignar IP estático y rango CIDR:
nmcli con mod enp1s0 ipv4.addresses 192.168.1.253/24
. Normalmente los routers de hogar usan un rango CIDR de/24
o su equivalente mascara de subred255.255.255.0
. Revise el manual de su router para más información. - Deshabilitar cliente DHCP:
nmcli con mod enp1s0 ipv4.method manual
. - Configurar el IP del router:
nmcli con mod enp1s0 ipv4.gateway 192.168.1.254
. Normalmente el router se asigna un IP estático que es el penúltimo IP del rango de IPs. - Configurar Technitium como DNS y Cloudflare como DNS de respaldo:
nmcli con mod enp1s0 ipv4.dns "192.168.1.10 1.1.1.1"
. Si gusta usar otro DNS como el de Google, puede cambiarlo. - Reactivar el dispositivo para que surtan efecto los cambios:
nmcli con up enp1s0
. Esto puede terminar la sesión SSH. de ser así, vuelva a hacerssh
al servidor. - Acceder a Technitium a través de https://192.168.1.10/.
- Crear un usuario admin y una contraseña. Se recomienda nuevamente el uso de Bitwarden para lo mismo.
- Navegar a la pestaña
Settings
. - En la pestaña
General
, asegurarse que el campoEnable DNSSEC Validation
esté habilitado. - Navegar a la pestaña
Web Service
y habilitar la opciónEnable HTTP to HTTPS Redirection
. El resto de las opciones debieron ser configuradas en eltechnitium-stack.yml
. - Navegar a la pestaña
Blocking
y configurar.- Seleccionar
Any Address
para la opciónBlocking Type
. - Agregar direcciones de listas de bloqueo a la lista de
Allow/Block List URLs
. Algunas recomendaciones de paginas donde conseguir listas: https://easylist.to/ y https://firebog.net/.
- Seleccionar
- Navegar a la pestaña
Proxy & Forwarders
y seleccionarCloudflare (DNS-over-HTTPS)
. Debería agregar a la lista deForwarders
y seleccionarDNS-over-HTTPS
como elForwarder Protocol
. Si desea usar un proveedor o protocolo diferente puede seleccionar o configurar uno diferente aquí. - Navegar a la pestaña
Zones
y configurar:- Hacer clic en el botón
Add Zone
. Zone
:lan
.- Hacer clic en el botón
Add
. - Hacer clic en el botón
Add Record
. Name
:server
. Esto configurará nuestro servidor en nuestro dominiolan
ya que el servidor tiene IP estático y no usa DHCP.IPv4 Address
:192.168.1.253
. Use el IP estático que le asignó al servidor.- Hacer clic en el botón
Add Record
. Name
:homeassistant
. Esto configurará Home Assistant en nuestro dominiolan
ya que tiene IP estático y no usa DHCP.IPv4 Address
:192.168.1.11
. Use el IP estático que le asignó a Home Assistant enhome-assistant-stack.yml
.- Hacer clic en el botón
Add Record
. Name
:technitium
. Esto configurará Technitium en nuestro dominiolan
ya que no se agrega a si mismo.IPv4 Address
:192.168.1.10
. Use el IP estático que le asignó a Technitium entechnitium-stack.yml
.- Hacer clic en el botón
Back
. - Si no va a exponer su servidor al internet, puede omitir el resto de este paso.
- Hacer clic en el botón
Add Zone
. Zone
:micasa.duckdns.org
. Use el subdominio que registró en DuckDNS.org.- Hacer clic en el botón
Add
. - Hacer clic en el botón
Add Record
. Name
:@
. Esto configurará la raíz del subdominio a que apunte a nuestro servidor.IPv4 Address
:192.168.1.253
. Use el IP estático que le asignó al servidor.- Hacer clic en el botón
Add Record
. Name
:*
. Esto configurará un subdominio comodín a que apunte a nuestro servidor.IPv4 Address
:192.168.1.253
. Use el IP estático que le asignó al servidor.- Hacer clic en el botón
Back
.
- Hacer clic en el botón
- Si alguna pagina está siendo bloqueada y no desea bloquearla, Navegar a la pestaña
Allowed
y agregar el dominio a la lista.
Dependiendo de su hardware, el DHCP se configurará de manera diferente. Por favor seleccione la opción que se ajuste a su situación. Si tiene control sobre del DNS que el DHCP de su router provee, seleccione Configurar DHCP del router
. De lo contrario, seleccione Configurar DHCP de Technitium
.