DNScrypt-Wrapper-Proxy DNScrypt sisi server.
Ini adalah pembungkus DNScrypt (proxy DNScrypt sisi server), yang membantu menambahkan dukungan DNScrypt ke resolver nama apa pun.
Perangkat lunak ini dimodifikasi dari DNScrypt-Proxy.
Instal Libsodium dan Libevent 2.1.1+ Pertama.
Di 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
Di freebsd:
$ pkg install dnscrypt-wrapper
Di 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/
Di macOS:
$ brew install dnscrypt-wrapper
Di 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 > Jika server Anda tidak menyimpan log, tambahkan --nolog dan jika mendukung DNSSEC, tambahkan --dnssec .
Ini akan membuat dua file di direktori saat ini: public.key dan secret.key .
Ini adalah pasangan kunci jangka panjang yang tidak pernah seharusnya berubah kecuali kunci rahasia dikompromikan. Pastikan secret.key itu disimpan dengan aman dan dicadangkan.
Ini juga akan mencetak stempel untuk DNScrypt-Proxy versi 2.x.
Jika Anda lupa menyimpan kunci publik penyedia Anda:
$ dnscrypt-wrapper --show-provider-publickey --provider-publickey-file < your-publickey-file >Ini akan mencetaknya.
$ 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 Dalam contoh ini, kunci rahasia terbatas waktu akan disimpan sebagai 1.key dan sertifikat terkait sebagai 1.cert dalam direktori saat ini.
Kunci dan sertifikat rahasia terbatas waktu dapat diperbarui kapan saja tanpa mengharuskan klien untuk memperbarui konfigurasi mereka.
Catatan: Secara default, Key Rahasia berakhir dalam 1 hari (24 jam) untuk keselamatan. Anda dapat mengubahnya dengan menambahkan --cert-file-expire-days=<your-expected-expiraiton-days> , tetapi lebih baik menggunakan kunci rahasia jangka pendek dan menggunakan mekanisme rotasi kunci.
$ 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 Nama penyedia bisa apa saja; Itu tidak harus berada dalam nama domain yang ada. Namun, itu harus dimulai dengan 2.dnscrypt-cert. , misalnya 2.dnscrypt-cert.example.com .
Ketika layanan dimulai dengan sakelar --provider-cert-file , proxy akan secara otomatis melayani sertifikat sebagai catatan TXT ketika kueri untuk nama penyedia diterima.
Sebagai alternatif, catatan TXT dapat dilayani oleh server nama untuk zona DNS yang sebenarnya Anda wewenang. Dalam skenario itu, opsi --provider-cert-file tidak diperlukan, dan instruksi untuk Unbound dan TinyDns ditampilkan oleh program saat menghasilkan sertifikat penyedia.
Anda bisa mendapatkan instruksi nanti dengan menjalankan:
$ 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> adalah kunci publik yang dihasilkan oleh dnscrypt-wrapper --gen-provider-keypair , yang terlihat seperti 4298:5F65:C295:DFAE:2BFB:20AD:5C47:F565:78EB:2404:EF83:198C:85DB:68F1:3E33:E952 .
Secara opsional, tambahkan -d/--daemonize FLAG untuk dijalankan sebagai daemon.
Jalankan dnscrypt-wrapper -h untuk melihat opsi baris perintah.
Secara default, dan dengan pengecualian catatan yang digunakan untuk sertifikat, hanya pertanyaan menggunakan protokol DNScrypt yang akan diterima.
Jika Anda ingin menjalankan layanan yang hanya dapat diakses menggunakan DNScrypt, inilah yang Anda inginkan.
Jika Anda ingin menjalankan layanan yang dapat diakses baik dengan maupun tanpa DNScrypt, yang biasanya Anda inginkan adalah menjaga port DNS standar untuk layanan DNS yang tidak terautentikasi (53), dan menggunakan port yang berbeda untuk DNScrypt. Anda juga tidak perlu mengubah apa pun untuk ini.
Namun, jika Anda ingin menjalankan keduanya pada port yang sama, mungkin karena hanya port 53 yang dapat dijangkau di server Anda, Anda dapat menambahkan sakelar -U ( --unauthenticated ) ke baris perintah. Ini tidak disarankan.
Kunci terbatas waktu pasti akan kedaluwarsa.
dnscrypt-proxy dapat memeriksa apakah kunci saat ini untuk server yang diberikan tidak akan segera kedaluwarsa:
$ dnscrypt-proxy --resolver-address=127.0.0.1:443
--provider-name=2.dnscrypt-cert. < yourdomain >
--provider-key= < provider_public_key >
--test=10080 Opsi --test diikuti oleh "margin rahmat".
Perintah akan segera keluar setelah memverifikasi validitas sertifikat.
Kode keluar adalah 0 jika sertifikat yang valid dapat digunakan, 2 jika tidak ada sertifikat yang valid dapat digunakan, 3 jika terjadi batas waktu, dan 4 jika sertifikat yang saat ini valid akan berakhir sebelum margin.
Margin selalu ditentukan dalam hitungan menit.
Ini dapat digunakan dalam tab cron untuk memicu peringatan sebelum kunci akan kedaluwarsa.
Untuk beralih ke kunci baru yang segar:
Pertama, buat kunci terbatas waktu baru (jangan ubah kunci penyedia!) Dan sertifikatnya:
$ 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=1Kedua, beri tahu pengguna baru untuk menggunakan sertifikat baru tetapi masih menerima kunci lama sampai semua klien telah memuat sertifikat baru:
$ 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 Perhatikan bahwa baik 1.key dan 2.key telah ditentukan, untuk menerima kunci sebelumnya dan saat ini.
Ketiga, klien secara otomatis memeriksa sertifikat baru setiap jam. Jadi, setelah satu jam, sertifikat lama dapat ditolak, dengan hanya meninggalkan yang baru dalam konfigurasi:
$ 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 Harap dicatat bahwa pada sistem Linux (kernel> = 3.9), melipatgandakan contoh dnscrypt-wrapper dapat berjalan pada saat yang sama. Oleh karena itu, untuk beralih ke konfigurasi baru, seseorang dapat memulai daemon baru tanpa membunuh contoh sebelumnya, dan hanya membunuh contoh sebelumnya setelah yang baru dimulai.
Ini juga memungkinkan peningkatan dengan nol downtime.
Untuk server yang bersedia memblokir nama domain tertentu (iklan, malware), parameter --blacklist-file dapat ditambahkan. File daftar hitam itu menerima pola seperti:
example.com : Blocks example.com serta www.example.com*.example.com : identik, hanya lebih eksplisit*example* : memblokir example substring di mana pun itu munculads.* : Blokir ads. awalanPencarian awalan dan sufiks cepat dan dapat skala ke daftar yang sangat besar.
注 : 第三方文档可能未及时与最新版本同步 , 以 readme.md 为准。