DNScrypt-Wrapper-Ein serverseitiger DNScrypt-Proxy.
Dies ist DNScrypt-Wrapper (serverseitiger DNScrypt-Proxy), mit dem Sie jedem Namensrösser DNScrypt-Unterstützung hinzufügen können.
Diese Software wird aus DNScrypt-Proxy geändert.
Installieren Sie zuerst Libsodium und libevent 2.1.1+.
Unter Linux:
$ ldconfig # if you install libsodium from source
$ git clone git://github.com/cofyc/dnscrypt-wrapper.git
$ cd dnscrypt-wrapper
$ make configure
$ ./configure
$ make install
Auf FreeBSD:
$ pkg install dnscrypt-wrapper
Auf openbsd:
$ pkg_add -r gmake autoconf
$ pkg_add -r libevent
$ git clone git://github.com/cofyc/dnscrypt-wrapper.git
$ cd dnscrypt-wrapper
$ gmake LDFLAGS='-L/usr/local/lib/' CFLAGS=-I/usr/local/include/
Auf macos:
$ brew install dnscrypt-wrapper
In Docker:
See https://github.com/jedisct1/dnscrypt-server-docker.
$ dnscrypt-wrapper --gen-provider-keypair
--provider-name=2.dnscrypt-cert. < yourdomain > --ext-address= < external server ip > Wenn Ihr Server keine Protokolle speichert, fügen Sie --nolog hinzu und wenn er DNSSEC unterstützt, fügen Sie --dnssec hinzu.
Dadurch werden zwei Dateien im aktuellen Verzeichnis erstellt: public.key und secret.key .
Dies ist ein langfristiges Schlüsselpaar, das sich nie ändern soll, es sei denn, der geheime Schlüssel wird beeinträchtigt. Stellen Sie sicher, dass das secret.key sicher gespeichert und unterstützt wird.
Es druckt auch den Stempel für DNScrypt-Proxy Version 2.x.
Wenn Sie vergessen haben, Ihren Anbieter öffentlichen Schlüssel zu retten:
$ dnscrypt-wrapper --show-provider-publickey --provider-publickey-file < your-publickey-file >Dies wird es ausdrucken.
$ dnscrypt-wrapper --gen-crypt-keypair --crypt-secretkey-file=1.key
$ dnscrypt-wrapper --gen-cert-file --crypt-secretkey-file=1.key --provider-cert-file=1.cert
--provider-publickey-file=public.key --provider-secretkey-file=secret.key In diesem Beispiel wird der zeitlich begrenzte geheime Schlüssel als 1.key und sein zugehöriges Zertifikat als 1.cert im aktuellen Verzeichnis gespeichert.
Zeitbegrenzte geheime Schlüssel und Zertifikate können jederzeit aktualisiert werden, ohne dass Clients ihre Konfiguration aktualisieren müssen.
HINWEIS: Standardmäßig läuft der geheime Schlüssel in 1 Tag (24 Stunden) zur Sicherheit ab. Sie können es ändern, indem --cert-file-expire-days=<your-expected-expiraiton-days> hinzufügen, aber es ist besser, den Kurzzeit-Geheimschlüssel zu verwenden und den Schlüssel-Rotations-Mechanismus zu verwenden.
$ dnscrypt-wrapper --resolver-address=8.8.8.8:53 --listen-address=0.0.0.0:443
--provider-name=2.dnscrypt-cert. < yourdomain >
--crypt-secretkey-file=1.key --provider-cert-file=1.cert Der Anbietername kann alles sein; Es muss nicht in einem vorhandenen Domain -Namen liegen. Es muss jedoch mit 2.dnscrypt-cert. , EG 2.dnscrypt-cert.example.com .
Wenn der Dienst mit dem --provider-cert-file Switch gestartet wird, serviert der Proxy das Zertifikat automatisch als TXT-Datensatz, wenn eine Abfrage für den Anbieternamen empfangen wird.
Alternativ kann der TXT -Datensatz von einem Namenserver für eine tatsächliche DNS -Zone, für die Sie maßgeblich sind, bedient werden. In diesem Szenario ist die Option --provider-cert-file nicht erforderlich, und Anweisungen für ungebundene und TinyDNs werden vom Programm beim Generieren eines Anbieterzertifikats angezeigt.
Sie können später Anweisungen erhalten, indem Sie ausgeführt werden:
$ dnscrypt-wrapper --show-provider-publickey-dns-records
--provider-cert-file < path/to/your/provider_cert_file >$ dnscrypt-proxy --local-address=127.0.0.1:55 --resolver-address=127.0.0.1:443
--provider-name=2.dnscrypt-cert. < yourdomain >
--provider-key= < provider_public_key >
$ dig -p 55 google.com @127.0.0.1 <provider_public_key> is public key generated by dnscrypt-wrapper --gen-provider-keypair , which looks like 4298:5F65:C295:DFAE:2BFB:20AD:5C47:F565:78EB:2404:EF83:198C:85DB:68F1:3E33:E952 .
Fügen Sie optional -d/--daemonize Flag hinzu, um als Daemon zu ausgeführt.
Führen Sie dnscrypt-wrapper -h aus, um die Befehlszeilenoptionen anzuzeigen.
Standardmäßig und mit Ausnahme der für die Zertifikate verwendeten Datensätze werden nur Abfragen mit dem DNScrypt -Protokoll akzeptiert.
Wenn Sie einen Dienst ausführen möchten, der nur mit DNScrypt zugänglich ist, möchten Sie dies.
Wenn Sie einen Dienst ausführen möchten, der sowohl mit als auch ohne DNScrypt zugänglich ist, möchten Sie normalerweise den Standard -DNS -Anschluss für den nicht authentifizierten DNS -Service (53) und verwenden Sie einen anderen Port für DNScrypt. Sie müssen auch dafür nichts ändern.
Wenn Sie jedoch beide auf demselben Port ausführen möchten, möglicherweise weil nur Port 53 auf Ihrem Server erreichbar ist, können Sie den Switch -U ( --unauthenticated ) zur Befehlszeile hinzufügen. Dies wird nicht empfohlen.
Zeitbegrenzte Schlüssel verfallen.
dnscrypt-proxy kann prüfen, ob der aktuelle Schlüssel für einen bestimmten Server nicht bald abläuft:
$ dnscrypt-proxy --resolver-address=127.0.0.1:443
--provider-name=2.dnscrypt-cert. < yourdomain >
--provider-key= < provider_public_key >
--test=10080 Die Option --test -Option folgt von einem "Grace -Rand".
Der Befehl wird sofort beendet, nachdem die Zertifikatgültigkeit überprüft wurde.
Der Exit -Code ist 0 , wenn ein gültiges Zertifikat verwendet werden kann, 2 , wenn keine gültigen Zertifikate verwendet werden können, 3 Wenn ein Zeitüberschreitungen stattgefunden haben, und 4 wenn ein aktuell gültiges Zertifikat vor der Marge abgelaufen ist.
Der Rand ist immer in Minuten angegeben.
Dies kann in einer Cron -Registerkarte verwendet werden, um einen Alarm auszulösen, bevor ein Schlüssel ausfällt.
Um zu einem neuen neuen Schlüssel zu wechseln:
Erstellen Sie zunächst einen neuen zeitlich begrenzten Schlüssel (ändern Sie den Anbieterschlüssel nicht!) Und sein Zertifikat:
$ dnscrypt-wrapper --gen-crypt-keypair --crypt-secretkey-file=2.key
$ dnscrypt-wrapper --gen-cert-file --crypt-secretkey-file=2.key --provider-cert-file=2.cert
--provider-publickey-file=public.key --provider-secretkey-file=secret.key
--cert-file-expire-days=1Zweitens, fordern Sie den neuen Benutzern mit, dass sie das neue Zertifikat verwenden sollen, aber den alten Schlüssel dennoch akzeptieren, bis alle Kunden das neue Zertifikat geladen haben:
$ dnscrypt-wrapper --resolver-address=8.8.8.8:53 --listen-address=0.0.0.0:443
--provider-name=2.dnscrypt-cert. < yourdomain >
--crypt-secretkey-file=1.key,2.key --provider-cert-file=1.cert,2.cert Beachten Sie, dass sowohl 1.key als auch 2.key angegeben wurden, um sowohl den vorherigen als auch den aktuellen Schlüssel zu akzeptieren.
Drittens prüfen die Kunden automatisch jede Stunde nach neuen Zertifikaten. Nach einer Stunde kann das alte Zertifikat abgelehnt werden, indem nur das neue in der Konfiguration hinterlassen wird:
$ dnscrypt-wrapper --resolver-address=8.8.8.8:53 --listen-address=0.0.0.0:443
--provider-name=2.dnscrypt-cert. < yourdomain >
--crypt-secretkey-file=2.key --provider-cert-file=2.cert Bitte beachten Sie, dass bei Linux-Systemen (Kernel> = 3.9) Multiples-Instanzen von dnscrypt-wrapper gleichzeitig ausgeführt werden können. Um auf eine neue Konfiguration umzusteigen, kann man einen neuen Daemon starten, ohne die vorherige Instanz zu töten, und nur die vorherige Instanz nach dem neuen Start des neuen.
Dies ermöglicht auch Upgrades ohne Ausfallzeiten.
Für Server, die bereit sind, bestimmte Domainnamen (Anzeigen, Malware) zu blockieren, kann der Parameter --blacklist-file hinzugefügt werden. Diese Blacklist -Datei akzeptiert Muster wie:
example.com : Blocks example.com sowie www.example.com*.example.com : identisch, nur expliziter*example* : Blockiert das example egal wo es erscheintads.* : Blockiert die ads. PräfixPräfix- und Suffix -Lookups sind schnell und können auf sehr große Listen skalieren.
注 : : 第三方文档可能未及时与最新版本同步 以 以 readme.md 为准。