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/
บน macOS:
$ 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 ในไดเรกทอรีปัจจุบัน
คีย์ลับและใบรับรองที่ จำกัด เวลาสามารถอัปเดตได้ตลอดเวลาโดยไม่ต้องให้ลูกค้าอัปเดตการกำหนดค่า
หมายเหตุ: โดยค่าเริ่มต้นคีย์ลับจะหมดอายุใน 1 วัน (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 เพื่อทำงานเป็น daemon
เรียกใช้ 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 (เคอร์เนล> = 3.9), อินสแตนซ์หลายอินสแตนซ์ของ dnscrypt-wrapper สามารถทำงานได้ในเวลาเดียวกัน ดังนั้นเพื่อที่จะเปลี่ยนไปใช้การกำหนดค่าใหม่หนึ่งสามารถเริ่มต้น daemon ใหม่โดยไม่ต้องฆ่าอินสแตนซ์ก่อนหน้าและฆ่าอินสแตนซ์ก่อนหน้านี้หลังจากที่ใหม่เริ่มต้น
นอกจากนี้ยังช่วยให้การอัพเกรดด้วยการหยุดทำงานเป็นศูนย์
สำหรับเซิร์ฟเวอร์ที่เต็มใจบล็อกชื่อโดเมนเฉพาะ (โฆษณามัลแวร์) สามารถเพิ่มพารามิเตอร์ของ --blacklist-file ไฟล์ Blacklist นั้นยอมรับรูปแบบเช่น:
example.com : blocks example.com เช่นเดียวกับ www.example.com*.example.com : เหมือนกันชัดเจนยิ่งขึ้น*example* : บล็อก example ย่อยไม่ว่าจะปรากฏที่ใดads.* : บล็อก ads. คำนำหน้าคำนำหน้าและการค้นหาคำต่อท้ายนั้นรวดเร็วและสามารถปรับขนาดเป็นรายการที่มีขนาดใหญ่มาก
注: 第三方文档可能未及时与最新版本同步, 以 readme.md 为准。