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をサポートしている場合は、 --dnssecを追加します。
これにより、現在のディレクトリに2つのファイルが作成されます: 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として保存されます。
クライアントが構成を更新することを要求することなく、時間制限されたシークレットキーと証明書をいつでも更新できます。
注:デフォルトでは、Secret Keyは安全のために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. 、EG 2.dnscrypt-cert.example.com 。
--provider-cert-fileスイッチでサービスが開始されると、プロキシはプロバイダー名のクエリが受信されたときにTXTレコードとして証明書を自動的に提供します。
別の方法として、TXTレコードは、権威ある実際のDNSゾーンの名前サーバーが提供できます。そのシナリオでは、 --provider-cert-fileオプションは必要ありません。プロバイダー証明書を生成するときに、UnboundおよびTinyDNの指示がプログラムによって表示されます。
後で実行することで手順を取得できます。
$ 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両方が指定されていることに注意してください。
第三に、クライアントは1時間ごとに新しい証明書を自動的にチェックします。したがって、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=2.key --provider-cert-file=2.cert Linux Systems(Kernel> = 3.9)では、 dnscrypt-wrapperの倍数インスタンスが同時に実行できることに注意してください。したがって、新しい構成に切り替えるために、前のインスタンスを殺さずに新しいデーモンを起動することができ、新しいインスタンスが開始された後にのみ前のインスタンスを殺すことができます。
これにより、ダウンタイムがゼロのアップグレードも可能になります。
特定のドメイン名(広告、マルウェア)をブロックする意思のあるサーバーの場合、 --blacklist-fileパラメーターを追加できます。ブラックリストファイルは次のようなパターンを受け入れます。
example.comとexample.com www.example.comブロックします*.example.com :同一、より明示的です*example* :どこに表示されていても、 exampleサブストリングをブロックしますads.* : ads.プレフィックス接頭辞と接尾辞のルックアップは高速で、非常に大きなリストにスケーリングできます。
注:第三方文档可能未及时与最新版本同步、以readme.md为准。