DNSBox

DNS y HTTPS para nombres de host basados en IP

Accede a un servicio HTTP público mediante *.dnsbox.io o ejecuta DNSBox en tu propia red privada.

Disponible en v0.5.2

¿Actualizas desde v0.4.x? Sigue la guía de migración antes de sustituir una instalación existente. Guía de migración

Usar el servicio público

No necesitas una cuenta ni registrar un dominio. Tu backend debe tener una IP pública permitida y ejecutar un servicio HTTP en el puerto 80 accesible desde DNSBox.

Sustituye 198.51.100.20 por la dirección IPv4 pública de tu servidor:

https://198-51-100-20.dnsbox.io

DNS resuelve el nombre de host a un proxy DNSBox. El proxy termina la conexión HTTPS y reenvía HTTP a la IP codificada en el nombre de host. No instala ningún certificado en tu servidor.

Let's Encrypt valida el nombre de host mediante DNS-01. El certificado corresponde a ese nombre, no a la dirección IP en sí. La primera conexión TLS puede tardar más mientras se emite el certificado.

La conexión del navegador a DNSBox usa HTTPS. La conexión de DNSBox al backend usa HTTP. Se admiten cambios de protocolo a WebSocket.

Un backend IPv6 puede codificarse como 2a01-4f8-c17-b8f--1.dnsbox.io. Un guion representa dos puntos; dos guiones representan ::.

Comprueba primero la resolución DNS y después HTTPS. Usa tu propio backend HTTP accesible para esta prueba:

dig +short 198-51-100-20.dnsbox.io
curl -v https://198-51-100-20.dnsbox.io/

La respuesta DNS contiene la dirección del proxy. Una conexión TLS válida y una respuesta HTTP correcta del backend son comprobaciones independientes.

Ejecutar dentro de una red privada

El modo TLS local funciona sin DNS público, redirección de puertos ni acceso a Internet. DNSBox crea su propia autoridad de certificación. Los clientes deben confiar en esa CA.

Ejemplo: DNSBox en 192.168.1.2, con backends HTTP en 192.168.1.0/24:

./dnsboxd --domain=home.arpa --ip=192.168.1.2 \
  --tls-mode=local --allowed-cidrs=192.168.1.0/24 \
  --dns-listen=192.168.1.2:53 --https-listen=192.168.1.2:443 \
  --data-dir=/var/lib/dnsbox

Reenvía únicamente la zona home.arpa desde el resolvedor de tu LAN a 192.168.1.2. DNSBox es autoritativo para su zona; no es un resolvedor recursivo de uso general.

Emite un certificado local para crear la CA y después instala /var/lib/dnsbox/ca/root.crt en el almacén de autoridades de confianza de cada cliente. Mantén root.pem en privado. La guía de despliegue incluye el comando de inicialización.

Para un backend en 192.168.1.50, abre https://192-168-1-50.home.arpa. Los clientes de la LAN necesitan acceso a los puertos DNS y HTTPS de DNSBox; DNSBox necesita acceso al puerto HTTP del backend.

Configurar una red privada

Alojar tu propia instancia con Let's Encrypt

Usa un dominio o subdominio que controles y delega su zona DNS a tu servidor de nombres DNSBox. Un solo nodo puede servir la zona; varios nodos aportan redundancia.

Para la validación DNS-01 pública, permite tráfico entrante UDP 53 y TCP 53, además de HTTPS saliente y resolución DNS. No se necesita el puerto 80 entrante. El puerto 443 solo debe ser accesible para los clientes previstos.

Los backends HTTP privados pueden usar certificados de confianza pública para sus nombres de host cuando la validación DNS-01 es pública. Autoriza esos backends explícitamente con --allowed-cidrs y configura DNS y las rutas para tus clientes.

Si usas varios nodos, configura la misma lista de servidores de nombres y los mismos registros en todos ellos, además de TLS mutuo para replicar los desafíos. Cada nodo configurado debe confirmar el desafío antes de continuar con la emisión.

Hay archivos de distribución para Linux, macOS y Windows. El instalador admite --no-systemd para el arranque manual o con otro supervisor de procesos. No desactiva el resolvedor del sistema.

Instalación y configuración del clúster

Certificados para ocserv y otros servicios

El servicio público no exporta sus claves privadas. Si tu servicio necesita archivos de certificado, aloja DNSBox con una zona delegada que controles.

Ejecuta --issue con un nombre de host que codifique una IP dentro de esa zona. DNSBox escribe una cadena de certificados PEM y una clave privada en <data-dir>/certs y después termina. Durante la emisión ACME sirve DNS, pero deja libre el puerto HTTPS 443.

Apunta ese nombre de host directamente a tu servicio mediante un registro A/AAAA explícito. Para ocserv, configura server-cert y server-key. El proxy HTTP de DNSBox no implementa OpenConnect ni DTLS.

Configura la renovación y recarga tu servicio cuando cambien los archivos. Un comando de ejecución única no renueva certificados después de terminar. No ejecutes dos procesos DNSBox con el mismo directorio de datos.

Ejemplo de exportación de certificados

Preguntas

¿Puedo usar IP privadas con el servicio público?

No. El proxy público está destinado a backends públicos permitidos. Ejecuta tu propia instancia con una lista explícita de rangos CIDR permitidos para las direcciones privadas.

¿Qué ocurre si cambia mi IP?

La IP forma parte del nombre de host. Usa un nombre nuevo para la nueva IP; los clientes que usen el nombre anterior seguirán apuntando a la dirección anterior.

¿DNSBox demuestra la propiedad de la IP del backend?

DNS-01 demuestra el control del nombre de host DNS. No verifica la propiedad de la IP del backend ni del contenido que sirve.

¿Los certificados se renuevan automáticamente?

Un servicio DNSBox en ejecución renueva los certificados que gestiona. Los certificados exportados necesitan un proceso de renovación y una recarga del servicio que los utiliza.

¿Qué ocurre si el backend está desconectado?

DNS y TLS pueden seguir funcionando, pero el proxy no puede devolver el contenido de la aplicación. Comprueba el servicio HTTP del backend, su cortafuegos y su accesibilidad.

¿Dónde puedo informar de un problema?

Abre una incidencia en GitHub con la versión de DNSBox, el modo de despliegue y los mensajes de error pertinentes. Elimina claves privadas, tokens y otros secretos.

Incidencias en GitHub

Referencia técnica

Referencia de configuración

Código fuente