DNCRYPT-WRAPPER- 서버 측 DNCRYPT 프록시.
이것은 DNCrypt 래퍼 (Server-Side dnscrypt proxy)로, 모든 이름 Resolver에 dnscrypt 지원을 추가하는 데 도움이됩니다.
이 소프트웨어는 DNCrypt-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 안전하게 저장되고 백업되었는지 확인하십시오.
또한 DNCrypt-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 switch로 시작되면 프록시는 공급자 이름에 대한 쿼리가 수신 될 때 인증서를 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 실행하십시오.
기본적으로 인증서에 사용 된 레코드를 제외하고 DNCrypt 프로토콜을 사용하는 쿼리 만 허용됩니다.
DNCrypt를 사용하여 액세스 할 수있는 서비스 만 실행하려면 이것이 원하는 것입니다.
DNCrypt 유무에 따라 액세스 할 수있는 서비스를 실행하려면 일반적으로 원하는 것은 무단 DNS 서비스 (53)의 표준 DNS 포트를 유지하고 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 시간 후에는 구성에 새 인증서 만 남겨 두어 이전 인증서를 거부 할 수 있습니다.
$ 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 의 배수 인스턴스가 동시에 실행될 수 있습니다. 따라서 새 구성으로 전환하기 위해 이전 인스턴스를 죽이지 않고 새 데몬을 시작하고 새 인스턴스가 시작된 후에 만 이전 인스턴스 만 죽일 수 있습니다.
또한 가동 중지 시간이없는 업그레이드도 가능합니다.
특정 도메인 이름 (ADS, 맬웨어)을 차단하려는 서버의 경우 --blacklist-file 매개 변수를 추가 할 수 있습니다. 이 블랙리스트 파일은 다음과 같은 패턴을 수용합니다.
example.com : blocks example.com 및 www.example.com*.example.com : 동일하고 더 명확합니다*example* : 어디에 있는지에 관계없이 example 하위 문자열을 차단합니다.ads.* : ads. 접두사접두사 및 접미사 조회는 빠르며 매우 큰 목록으로 확장 할 수 있습니다.
注 : 第三方文档可能未及时与最新版本同步 第三方文档可能未及时与最新版本同步, 以 readme.md 为准。