DNSCRYPT-WAPPER - Un proxy DNSCrypt côté serveur.
Il s'agit de Dnscrypt Wrapper (proxy DNScrypt côté serveur), qui aide à ajouter la prise en charge Dnscrypt à tout résolveur de nom.
Ce logiciel est modifié à partir de dnscrypt-proxy.
Installez Libsodium et Libevent 2.1.1+ d'abord.
Sur 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
Sur FreeBSD:
$ pkg install dnscrypt-wrapper
Sur 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/
Sur macOS:
$ brew install dnscrypt-wrapper
Dans 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 > Si votre serveur ne stocke pas de journaux, ajoutez --nolog et s'il prend en charge DNSSEC, ajoutez --dnssec .
Cela créera deux fichiers dans le répertoire actuel: public.key et secret.key .
Il s'agit d'une paire de clés à long terme qui n'est jamais censée changer à moins que la clé secrète ne soit compromise. Assurez-vous que secret.key est en toute sécurité stocké et sauvegardé.
Il imprimera également le timbre pour Dnscrypt-Proxy version 2.x.
Si vous avez oublié de sauvegarder votre fournisseur Public Key:
$ dnscrypt-wrapper --show-provider-publickey --provider-publickey-file < your-publickey-file >Cela l'imprimera.
$ 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 Dans cet exemple, la clé secrète limitée dans le temps sera enregistrée comme 1.key et son certificat connexe comme 1.cert dans le répertoire actuel.
Les clés et certificats secrètes limitées dans le temps peuvent être mis à jour à tout moment sans obliger les clients à mettre à jour leur configuration.
Remarque: Par défaut, la clé secrète expire en 1 jour (24 heures) pour la sécurité. Vous pouvez le changer en ajoutant --cert-file-expire-days=<your-expected-expiraiton-days> , mais il est préférable d'utiliser la clé secrète à court terme et d'utiliser le mécanisme de rotation des clés.
$ 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 Le nom du fournisseur peut être n'importe quoi; Il n'est pas nécessaire que ce soit dans un nom de domaine existant. Cependant, il doit commencer par 2.dnscrypt-cert. , par exemple 2.dnscrypt-cert.example.com .
Lorsque le service est démarré avec le commutateur --provider-cert-file , le proxy servira automatiquement le certificat en tant qu'enregistrement TXT lorsqu'une requête pour le nom du fournisseur sera reçu.
Comme alternative, l'enregistrement TXT peut être servi par un serveur de noms pour une zone DNS réelle pour laquelle vous faites autorité. Dans ce scénario, l'option --provider-cert-file n'est pas requise et les instructions pour Unbound et TinyDN sont affichées par le programme lors de la génération d'un certificat de fournisseur.
Vous pouvez obtenir des instructions plus tard en fonctionnant:
$ 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> est la clé publique générée par dnscrypt-wrapper --gen-provider-keypair , qui ressemble à 4298:5F65:C295:DFAE:2BFB:20AD:5C47:F565:78EB:2404:EF83:198C:85DB:68F1:3E33:E952 .
Facultativement, ajoutez -d/--daemonize Flag pour fonctionner comme un démon.
Exécutez dnscrypt-wrapper -h pour afficher les options de ligne de commande.
Par défaut, et à l'exception des enregistrements utilisés pour les certificats, seules les requêtes utilisant le protocole Dnscrypt seront acceptées.
Si vous souhaitez exécuter un service accessible à l'aide de Dnscrypt, c'est ce que vous voulez.
Si vous souhaitez exécuter un service accessible à la fois avec et sans DNScrypt, ce que vous voulez habituellement, c'est conserver le port DNS standard pour le service DNS non authentifié (53) et utiliser un port différent pour DNSCrypt. Vous n'avez pas non plus à changer quoi que ce soit pour cela.
Cependant, si vous souhaitez exécuter les deux sur le même port, peut-être parce que seul le port 53 est accessible sur votre serveur, vous pouvez ajouter que le -U ( --unauthenticated ) passe à la ligne de commande. Ce n'est pas recommandé.
Les clés limitées dans le temps doivent expirer.
dnscrypt-proxy peut vérifier si la touche actuelle pour un serveur donné ne va pas expirer bientôt:
$ dnscrypt-proxy --resolver-address=127.0.0.1:443
--provider-name=2.dnscrypt-cert. < yourdomain >
--provider-key= < provider_public_key >
--test=10080 L'option --test est suivie d'une "marge de grâce".
La commande sortira immédiatement après la vérification de la validité du certificat.
Le code de sortie est 0 si un certificat valide peut être utilisé, 2 si aucun certificat valide ne peut être utilisé, 3 si un délai d'attente s'est produit et 4 si un certificat actuellement valide va expirer avant la marge.
La marge est toujours spécifiée en quelques minutes.
Cela peut être utilisé dans un onglet Cron pour déclencher une alerte avant qu'une clé ne soit expirée.
Afin de passer à une nouvelle touche fraîche:
Tout d'abord, créez une nouvelle clé limitée dans le temps (ne modifiez pas la clé du fournisseur!) Et son certificat:
$ 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=1Deuxièmement, dites aux nouveaux utilisateurs d'utiliser le nouveau certificat mais acceptez toujours l'ancienne clé jusqu'à ce que tous les clients aient chargé le nouveau certificat:
$ 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 Notez que 1.key et 2.key ont été spécifiés, afin d'accepter à la fois la clé précédente et actuelle.
Troisièmement, les clients vérifient automatiquement les nouveaux certificats toutes les heures. Ainsi, après une heure, l'ancien certificat peut être refusé, en ne laissant que le nouveau dans la configuration:
$ 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 Veuillez noter que sur Linux Systems (Kernel> = 3,9), les multiples instances de dnscrypt-wrapper peuvent fonctionner en même temps. Par conséquent, afin de passer à une nouvelle configuration, on peut démarrer un nouveau démon sans tuer l'instance précédente, et ne tuer que l'instance précédente après le début du nouveau.
Cela permet également des mises à niveau avec des temps d'arrêt zéro.
Pour les serveurs disposés à bloquer des noms de domaine spécifiques (ADS, malware), le paramètre --blacklist-file peut être ajouté. Ce fichier de liste noire accepte des modèles tels que:
example.com : Blocks example.com ainsi que www.example.com*.example.com : identique, juste plus explicite*example* : bloque l' example de sous-chaîne, peu importe où il apparaîtads.* : bloque les ads. préfixeLes recherches de préfixe et de suffixe sont rapides et peuvent évoluer vers de très grandes listes.
注: 第三方文档可能未及时与最新版本同步 , 以 Readme.md 为准。