dnscrypt-wrapper-وكيل DNScrypt من جانب الخادم.
هذا هو DNScrypt Wrapper (وكيل DNSCRYPT من جانب الخادم) ، مما يساعد على إضافة دعم DNSCRYPT إلى أي محلول اسم.
يتم تعديل هذا البرنامج من dnscrypt-proxy.
تثبيت libsodium و libevent 2.1.1+ أولاً.
على 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
على FreeBSD:
$ pkg install dnscrypt-wrapper
على 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/
على ماكوس:
$ brew install dnscrypt-wrapper
في 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 > إذا لم يخزن الخادم السجلات ، فأضف --nolog وإذا كان يدعم DNSSEC ، أضف --dnssec .
سيؤدي ذلك إلى إنشاء ملفين في الدليل الحالي: public.key و secret.key .
هذا زوج مفتاح طويل الأجل ليس من المفترض أن يتغير أبدًا ما لم يتم اختراق المفتاح السري. تأكد من أن secret.key يتم تخزينه بشكل آمن ودعمه.
كما أنه سيطبع الطابع لإصدار DNScrypt-Proxy 2.x.
إذا نسيت حفظ مفتاح مقدم الخدمة الخاص بك:
$ dnscrypt-wrapper --show-provider-publickey --provider-publickey-file < your-publickey-file >هذا سوف يطبعها.
$ 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 في هذا المثال ، سيتم حفظ المفتاح السري المحدود للوقت على أنه 1.key وشهادةه ذات الصلة كـ 1.cert في الدليل الحالي.
يمكن تحديث المفاتيح والشهادات السرية المحدودة زمنياً في أي وقت دون مطالبة العملاء بتحديث تكوينهم.
ملاحظة: بشكل افتراضي ، ينتهي المفتاح السري في يوم واحد (24 ساعة) للسلامة. يمكنك تغييره عن طريق الإضافة --cert-file-expire-days=<your-expected-expiraiton-days> ، ولكن من الأفضل استخدام المفتاح السري على المدى القصير واستخدام آلية الدوران المفاتيح.
$ 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 يمكن أن يكون اسم المزود أي شيء ؛ لا يجب أن يكون ضمن اسم مجال موجود. ومع ذلك ، يجب أن تبدأ بـ 2.dnscrypt-cert. ، على سبيل المثال 2.dnscrypt-cert.example.com .
عند بدء تشغيل الخدمة باستخدام مفتاح --provider-cert-file ، سيقدم الوكيل تلقائيًا الشهادة كسجل TXT عند استلام استعلام لاسم المزود.
كبديل ، يمكن تقديم سجل TXT بواسطة خادم اسم لمنطقة DNS الفعلية التي تكون موثوقًا بها. في هذا السيناريو ، لا يلزم خيار --provider-cert-file ، ويتم عرض تعليمات غير محدودة و tinydns بواسطة البرنامج عند إنشاء شهادة مزود.
يمكنك الحصول على التعليمات لاحقًا عن طريق التشغيل:
$ 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> هو مفتاح عام تم إنشاؤه بواسطة dnscrypt-wrapper --gen-provider-keypair ، الذي يشبه 4298:5F65:C295:DFAE:2BFB:20AD:5C47:F565:78EB:2404:EF83:198C:85DB:68F1:3E33:E952 .
اختياريا ، أضف -d/--daemonize لتشغيلها كخفي.
قم بتشغيل dnscrypt-wrapper -h لعرض خيارات سطر الأوامر.
بشكل افتراضي ، وباستثناء السجلات المستخدمة للشهادات ، سيتم قبول الاستعلامات فقط باستخدام بروتوكول DNSCRYPT.
إذا كنت ترغب في تشغيل خدمة لا يمكن الوصول إليها إلا باستخدام DNScrypt ، فهذا ما تريده.
إذا كنت ترغب في تشغيل خدمة يمكن الوصول إليها مع DNScrypt وبدونها ، فإن ما تريد عادة هو الحفاظ على منفذ DNS القياسي لخدمة DNS غير المصادقة (53) ، واستخدام منفذ مختلف لـ DNScrypt. ليس عليك تغيير أي شيء لهذا أيضًا.
ومع ذلك ، إذا كنت ترغب في تشغيل كلاهما على نفس المنفذ ، ربما لأنه يمكن الوصول إلى المنفذ 53 فقط على الخادم الخاص بك ، فيمكنك إضافة مفتاح -U ( --unauthenticated ) إلى سطر الأوامر. هذا غير موصى به.
لا بد من انتهاء مفاتيح محدودة الوقت.
يمكن لـ dnscrypt-proxy التحقق مما إذا كان المفتاح الحالي لخادم معين لن ينتهي قريبًا:
$ dnscrypt-proxy --resolver-address=127.0.0.1:443
--provider-name=2.dnscrypt-cert. < yourdomain >
--provider-key= < provider_public_key >
--test=10080 يتبع خيار --test "هامش النعمة".
سيخرج الأمر فورًا بعد التحقق من صحة الشهادة.
رمز الخروج هو 0 إذا كان من الممكن استخدام شهادة صالحة ، 2 إذا لم يكن من الممكن استخدام شهادات صالحة ، 3 إذا حدثت مهلة ، و 4 إذا كانت هناك شهادة صالحة حاليًا ستنتهي قبل الهامش.
يتم تحديد الهامش دائمًا في دقائق.
يمكن استخدام هذا في علامة تبويب CRON لتشغيل تنبيه قبل انتهاء مفتاح.
من أجل التبديل إلى مفتاح جديد جديد:
أولاً ، قم بإنشاء مفتاح جديد محدود الوقت (لا تقم بتغيير مفتاح المزود!) وشهادته:
$ 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=1ثانياً ، أخبر المستخدمين الجدد باستخدام الشهادة الجديدة ولكن لا يزالون يقبلون المفتاح القديم حتى يقوم جميع العملاء بتحميل الشهادة الجديدة:
$ 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 لاحظ أنه يتم تحديد كلاهما 1.key و 2.key ، من أجل قبول كل من المفتاح السابق واليار.
ثالثًا ، تحقق العملاء تلقائيًا من الحصول على شهادات جديدة كل ساعة. لذلك ، بعد ساعة واحدة ، يمكن رفض الشهادة القديمة ، من خلال ترك الشهادة الجديدة فقط في التكوين:
$ 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 يرجى ملاحظة أنه على أنظمة Linux (kernel> = 3.9) ، يمكن أن تعمل مثيلات مضاعفات dnscrypt-wrapper في نفس الوقت. لذلك ، من أجل التبديل إلى تكوين جديد ، يمكن للمرء أن يبدأ شيطانًا جديدًا دون قتل المثيل السابق ، ويقتل المثيل السابق فقط بعد بدء التشغيل الجديد.
هذا يسمح أيضا ترقيات مع الصفر توقف.
بالنسبة للخوادم التي ترغب في حظر أسماء المجال المحددة (الإعلانات ، البرامج الضارة) ، يمكن إضافة معلمة --blacklist-file . يقبل ملف القائمة السوداء أنماط مثل:
example.com : blocks example.com وكذلك www.example.com*.example.com : متطابق ، فقط أكثر وضوحًا*example* : يمنع example الفرعي بغض النظر عن مكان ظهورهads.* : تمنع ads. بادئةبادئة البحث واللاحقة سريعة ويمكن أن تتوسع في قوائم كبيرة جدا.
: : 第三方文档可能未及时与最新版本同步 , 以 readme.md 为准。