Verfügbar in v0.5.2
- Einheitliche Nameserver-Einträge und authentifizierte Replikation von DNS-01-Challenges über mehrere Knoten.
- Private Installationen mit eigener lokaler Zertifizierungsstelle und ausdrücklich festgelegten CIDR-Freigaben für Backends.
- Export von Zertifikaten und Schlüsseln für Dienste, die TLS selbst übernehmen, darunter ocserv.
Wechselst du von v0.4.x? Befolge die Migrationsanleitung, bevor du eine bestehende Installation ersetzt. Migrationsanleitung
Den öffentlichen Dienst nutzen
Ein Konto oder eine Domainregistrierung ist nicht erforderlich. Dein Backend muss unter einer zugelassenen öffentlichen IP-Adresse einen HTTP-Dienst auf Port 80 bereitstellen, der von DNSBox erreichbar ist.
Ersetze 198.51.100.20 durch die öffentliche IPv4-Adresse deines Servers:
https://198-51-100-20.dnsbox.io
DNS löst den Hostnamen zur Adresse eines DNSBox-Proxys auf. Der Proxy nimmt die HTTPS-Verbindung entgegen und leitet HTTP an die im Hostnamen kodierte IP-Adresse weiter. Er installiert kein Zertifikat auf deinem Server.
Let's Encrypt validiert den Hostnamen über DNS-01. Das Zertifikat gilt für diesen Hostnamen, nicht für die reine IP-Adresse. Die erste TLS-Verbindung kann länger dauern, während ein Zertifikat ausgestellt wird.
Die Verbindung vom Browser zu DNSBox verwendet HTTPS. Die Verbindung von DNSBox zum Backend verwendet HTTP. WebSocket-Upgrades werden unterstützt.
Ein IPv6-Backend lässt sich als 2a01-4f8-c17-b8f--1.dnsbox.io kodieren. Ein einzelner Bindestrich steht für einen Doppelpunkt, ein doppelter Bindestrich für ::.
Prüfe zuerst die DNS-Auflösung, dann HTTPS. Verwende für diesen Test dein eigenes erreichbares HTTP-Backend:
dig +short 198-51-100-20.dnsbox.io
curl -v https://198-51-100-20.dnsbox.io/
Die DNS-Antwort enthält die Proxy-Adresse. Eine gültige TLS-Verbindung und eine erfolgreiche HTTP-Antwort des Backends sind getrennte Prüfungen.
Im privaten Netzwerk betreiben
Der lokale TLS-Modus funktioniert ohne öffentliches DNS, Portweiterleitung oder Internetzugang. DNSBox erstellt eine eigene Zertifizierungsstelle. Clients müssen dieser CA vertrauen.
Beispiel: DNSBox auf 192.168.1.2 mit HTTP-Backends in 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
Leite von deinem LAN-Resolver nur die Zone home.arpa an 192.168.1.2 weiter. DNSBox ist für seine Zone autoritativ und kein allgemeiner rekursiver Resolver.
Stelle ein lokales Zertifikat aus, um die CA zu erstellen. Installiere anschließend /var/lib/dnsbox/ca/root.crt im Speicher für vertrauenswürdige Zertifizierungsstellen jedes Clients. Halte root.pem geheim. Den Befehl zur Ersteinrichtung findest du in der Installationsanleitung.
Öffne für ein Backend auf 192.168.1.50 die Adresse https://192-168-1-50.home.arpa. LAN-Clients benötigen Zugriff auf die DNS- und HTTPS-Ports von DNSBox. DNSBox benötigt Zugriff auf den HTTP-Port des Backends.
Selbst betreiben mit Let's Encrypt
Verwende eine Domain oder Subdomain, die du kontrollierst, und delegiere ihre DNS-Zone an deinen DNSBox-Nameserver. Ein einzelner Knoten kann die Zone bedienen; mehrere Knoten bieten Redundanz.
Erlaube für die öffentliche DNS-01-Validierung eingehenden Verkehr auf UDP 53 und TCP 53 sowie ausgehendes HTTPS und DNS-Auflösung. Eingehender Verkehr auf Port 80 ist nicht erforderlich. Port 443 muss nur für die vorgesehenen Clients erreichbar sein.
Private HTTP-Backends können öffentlich vertrauenswürdige Zertifikate für Hostnamen verwenden, wenn die DNS-01-Validierung öffentlich erfolgt. Gib diese Backends ausdrücklich mit --allowed-cidrs frei und richte DNS und Routing für deine Clients ein.
Konfiguriere bei mehreren Knoten auf jedem dieselbe Nameserver-Liste und dieselben Einträge sowie gegenseitiges TLS für die Challenge-Replikation. Jeder konfigurierte Peer muss die Challenge bestätigen, bevor die Ausstellung fortgesetzt wird.
Release-Archive für Linux, macOS und Windows sind verfügbar. Das Installationsprogramm unterstützt --no-systemd für den manuellen Start oder einen anderen Prozessmanager. Es deaktiviert den System-Resolver nicht.
Zertifikate für ocserv und andere Dienste
Der öffentliche Dienst exportiert seine privaten Schlüssel nicht. Wenn dein Dienst Zertifikatsdateien benötigt, betreibe DNSBox selbst mit einer delegierten Zone, die du kontrollierst.
Führe --issue mit einem Hostnamen aus, der eine IP-Adresse kodiert und zu dieser Zone gehört. DNSBox schreibt eine PEM-Zertifikatskette und einen privaten Schlüssel nach <data-dir>/certs und beendet sich dann. Während der ACME-Ausstellung stellt es DNS bereit, lässt aber den HTTPS-Port 443 frei.
Lass diesen Hostnamen mit einem ausdrücklichen A/AAAA-Eintrag direkt auf deinen Dienst zeigen. Konfiguriere für ocserv server-cert und server-key. Der HTTP-Proxy von DNSBox implementiert weder OpenConnect noch DTLS.
Richte die Erneuerung ein und lade deinen Dienst nach Änderungen an den Dateien neu. Ein einmalig ausgeführter Befehl erneuert nach seinem Ende keine Zertifikate. Betreibe keine zwei DNSBox-Prozesse mit demselben Datenverzeichnis.
Fragen
Kann ich private IP-Adressen mit dem öffentlichen Dienst verwenden?
Nein. Der öffentliche Proxy ist für zugelassene öffentliche Backends gedacht. Betreibe für private Adressen eine eigene Instanz mit ausdrücklich festgelegten CIDR-Freigaben.
Was passiert, wenn sich meine IP-Adresse ändert?
Die IP-Adresse ist Teil des Hostnamens. Verwende für die neue IP-Adresse einen neuen Hostnamen. Clients mit dem alten Namen greifen weiterhin auf die alte Adresse zu.
Weist DNSBox den Besitz der Backend-IP-Adresse nach?
DNS-01 weist die Kontrolle über den DNS-Hostnamen nach. Es prüft weder den Besitz der Backend-IP-Adresse noch die dort bereitgestellten Inhalte.
Werden Zertifikate automatisch erneuert?
Ein laufender DNSBox-Dienst erneuert die von ihm verwalteten Zertifikate. Für exportierte Zertifikate sind ein Erneuerungsprozess und das Neuladen des Dienstes erforderlich, der sie verwendet.
Was passiert, wenn das Backend offline ist?
DNS und TLS können weiterhin funktionieren, aber der Proxy kann die Inhalte der Anwendung nicht liefern. Prüfe den HTTP-Dienst des Backends, seine Firewall und seine Erreichbarkeit.
Wo kann ich ein Problem melden?
Erstelle ein GitHub-Issue mit der DNSBox-Version, dem Betriebsmodus und den relevanten Fehlermeldungen. Entferne private Schlüssel, Tokens und andere Geheimnisse.
Technische Referenz
- Autoritatives DNS über UDP und TCP. Hostnamen mit kodierten IP-Adressen werden zur konfigurierten Proxy-Adresse aufgelöst, nicht direkt zum Backend.
- Benutzerdefinierte A-, AAAA-, CNAME-, MX- und TXT-Einträge sowie ALIAS-Einträge am Zonenstamm mit Aktualisierung im Hintergrund.
- ACME DNS-01 oder eine lokale CA. Die Cluster-Replikation überträgt temporäre TXT-Challenges; private Zertifikatsschlüssel bleiben auf den jeweiligen Knoten.
- Die Verwaltungs-API lauscht ausschließlich auf der Loopback-Adresse, standardmäßig auf 127.0.0.1:8080. Fernzugriff erfolgt über einen SSH-Tunnel.