DNSBox

DNS et HTTPS pour les noms d’hôte contenant une IP

Accédez à un service HTTP public via *.dnsbox.io, ou exécutez DNSBox dans votre propre réseau privé.

Disponible dans v0.5.2

Vous passez de v0.4.x à une nouvelle version ? Suivez le guide de migration avant de remplacer une installation existante. Guide de migration

Utiliser le service public

Aucun compte ni enregistrement de domaine n’est nécessaire. Votre serveur cible doit disposer d’une IP publique autorisée et d’un service HTTP sur le port 80, accessible depuis DNSBox.

Remplacez 198.51.100.20 par l’adresse IPv4 publique de votre serveur :

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

DNS résout le nom d’hôte vers un proxy DNSBox. Le proxy termine la connexion HTTPS et transmet les requêtes en HTTP à l’IP encodée dans le nom d’hôte. Il n’installe aucun certificat sur votre serveur.

Let's Encrypt valide le nom d’hôte par DNS-01. Le certificat couvre ce nom, pas l’adresse IP seule. La première connexion TLS peut prendre plus de temps pendant l’émission du certificat.

La connexion du navigateur à DNSBox utilise HTTPS. Celle de DNSBox au serveur cible utilise HTTP. Les changements de protocole vers WebSocket sont pris en charge.

Un serveur cible IPv6 peut être encodé sous la forme 2a01-4f8-c17-b8f--1.dnsbox.io. Un tiret représente un deux-points ; deux tirets représentent ::.

Vérifiez d’abord la résolution DNS, puis HTTPS. Utilisez votre propre serveur HTTP accessible pour ce test :

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

La réponse DNS contient l’adresse du proxy. Une connexion TLS valide et une réponse HTTP réussie du serveur cible sont deux vérifications distinctes.

Exécuter dans un réseau privé

Le mode TLS local fonctionne sans DNS public, redirection de ports ni accès à Internet. DNSBox crée sa propre autorité de certification. Les clients doivent faire confiance à cette CA.

Exemple : DNSBox sur 192.168.1.2, avec des serveurs HTTP cibles dans 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

Transférez uniquement la zone home.arpa du résolveur de votre réseau local vers 192.168.1.2. DNSBox fait autorité pour sa zone ; ce n’est pas un résolveur récursif généraliste.

Émettez un certificat local pour créer la CA, puis installez /var/lib/dnsbox/ca/root.crt dans le magasin d’autorités de confiance de chaque client. Gardez root.pem privé. Le guide de déploiement contient la commande d’initialisation.

Pour un serveur cible à l’adresse 192.168.1.50, ouvrez https://192-168-1-50.home.arpa. Les clients du réseau local doivent pouvoir accéder aux ports DNS et HTTPS de DNSBox ; DNSBox doit pouvoir accéder au port HTTP du serveur cible.

Configurer un réseau privé

Héberger votre instance avec Let's Encrypt

Utilisez un domaine ou sous-domaine que vous contrôlez et déléguez sa zone DNS à votre serveur de noms DNSBox. Un seul nœud peut servir la zone ; plusieurs nœuds apportent de la redondance.

Pour la validation DNS-01 publique, autorisez les connexions entrantes UDP 53 et TCP 53, ainsi que HTTPS en sortie et la résolution DNS. Le port 80 entrant n’est pas nécessaire. Le port 443 doit seulement être accessible aux clients prévus.

Les serveurs HTTP privés peuvent utiliser des certificats de nom d’hôte reconnus publiquement si la validation DNS-01 est publique. Autorisez explicitement ces serveurs avec --allowed-cidrs et configurez DNS et le routage pour vos clients.

Avec plusieurs nœuds, configurez la même liste de serveurs de noms et les mêmes enregistrements sur chacun, ainsi que TLS mutuel pour répliquer les défis. Chaque pair configuré doit confirmer le défi avant la poursuite de l’émission.

Des archives sont disponibles pour Linux, macOS et Windows. L’installateur accepte --no-systemd pour un démarrage manuel ou avec un autre superviseur de processus. Il ne désactive pas le résolveur du système.

Installation et configuration du cluster

Certificats pour ocserv et d’autres services

Le service public n’exporte pas ses clés privées. Si votre service a besoin de fichiers de certificat, hébergez DNSBox avec une zone déléguée que vous contrôlez.

Exécutez --issue avec un nom d’hôte encodant une IP dans cette zone. DNSBox écrit une chaîne de certificats PEM et une clé privée dans <data-dir>/certs, puis se termine. Pendant l’émission ACME, il sert le DNS mais laisse le port HTTPS 443 libre.

Faites pointer ce nom d’hôte directement vers votre service avec un enregistrement A/AAAA explicite. Pour ocserv, configurez server-cert et server-key. Le proxy HTTP de DNSBox n’implémente ni OpenConnect ni DTLS.

Prévoyez le renouvellement et rechargez votre service après modification des fichiers. Une commande ponctuelle ne renouvelle plus les certificats une fois terminée. N’exécutez pas deux processus DNSBox sur le même répertoire de données.

Exemple d’export de certificats

Questions

Puis-je utiliser des IP privées avec le service public ?

Non. Le proxy public est destiné aux serveurs publics autorisés. Exécutez votre propre instance avec une liste explicite de plages CIDR autorisées pour les adresses privées.

Que se passe-t-il si mon IP change ?

L’IP fait partie du nom d’hôte. Utilisez un nouveau nom pour la nouvelle IP ; les clients utilisant l’ancien nom continueront de viser l’ancienne adresse.

DNSBox prouve-t-il la propriété de l’IP du serveur cible ?

DNS-01 prouve le contrôle du nom d’hôte DNS. Il ne vérifie ni la propriété de l’IP du serveur cible ni celle du contenu qui y est servi.

Les certificats sont-ils renouvelés automatiquement ?

Un service DNSBox en cours d’exécution renouvelle les certificats qu’il gère. Les certificats exportés nécessitent un processus de renouvellement et le rechargement du service qui les utilise.

Que se passe-t-il si le serveur cible est hors ligne ?

DNS et TLS peuvent continuer de fonctionner, mais le proxy ne peut pas renvoyer le contenu de l’application. Vérifiez le service HTTP du serveur cible, son pare-feu et son accessibilité.

Où signaler un problème ?

Ouvrez un ticket GitHub en indiquant la version de DNSBox, le mode de déploiement et les messages d’erreur pertinents. Supprimez les clés privées, les jetons et les autres secrets.

Tickets GitHub

Référence technique

Référence de configuration

Code source