DNSCRYPT-WRAPPER-服務器端DNSCRYPT代理。
這是DNScrypt包裝器(服務器端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,add --dnssec 。
這將在當前目錄中創建兩個文件: public.key and 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選項,並且在生成提供商證書時,該程序顯示了無綁定和微小的說明。
您稍後可以通過運行獲取說明:
$ 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 .
可選地,添加-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系統(內核> = 3.9)上, dnscrypt-wrapper的倍數可以同時運行。因此,為了切換到新的配置,可以啟動一個新的守護程序而不殺死上一個實例,並且在新實例啟動後才殺死上一個實例。
這還允許升級為零停機時間。
對於願意阻止特定域名(AD,惡意軟件)的服務器,可以添加--blacklist-file參數。該黑名單文件接受諸如:
example.com example.com以及www.example.com*.example.com :相同,更明確*example* :無論出現在哪裡,都會阻止example子字符串ads.* :阻止ads.前綴前綴和後綴查找很快,可以擴展到非常大的列表。
注:第三方文檔可能未及時與最新版本同步,以readme.md為準。