之前我介绍了为了科学访问互联网其中非常重要的一环 DnsCrypt_Proxy,这其实是客户端。dnscrypt-proxy 安装好后会自带提供一些国外的公开的dnscrypt-wrapper服务,所以dnscrypt的服务端就是 dnscrypt-wrapper 。dnscrypt提供了自主搭建dnscrypt-wrapper服务的程序以及教程。 我这里就来简要说一下 dnscrypt-wrapper 服务端的搭建用法。


前情提要:

服务端系统平台:CentOS 6 x86_64

dnscrypt-wrapper版本:(官方并未指明版本号,笔者写作的时候用的是2016.12月版)

dnscrypt更新说明:dnscrypt更新到现在,软件功能已经趋于稳定,更新脚步也进一步放缓。

dnscrypt-proxy版本:1.4.0(目前已经更新到了1.6+,但是新版本在EL6平台由于依赖包比较老,所以在centos6 rhel6平台可能需要更新系统依赖软件版本,但是在EL7平台就可以很好的安装和运行)


开始安装:

# dnscrypt-wrapper 依赖 libsodium 和 libevent 2 开发包,centos 6系统默认使用的是 libevent 1,所以需要卸载libevent 1,然后安装libevent2
yum remove -y libevent-devel
yum install -y libevent2-devel libsodium-devel
下载 dnscrypt-wrapper
tar xvf dnscrypt-wrapper.tar.gz
cd dnscrypt-wrapper
make configure
./configure --prefix=/usr/local/dnscrypt_wrapper --datarootdir=/usr/share/ --mandir=/usr/share/man/
make install
然后更新环境变量,把 /usr/local/dnscrypt_wrapper/sbin 路径添加到PATH变量中。


配置dnscrypt-wrapper:

1.生成公私钥。

cd ~
mkdir dnskey
//新建一个目录来专门存放证书
cd dnskey
dnscrypt-wrapper --gen-provider-keypair
//生成提供商密钥对,默认为secret.key   public.key

这里系统会反馈一个指纹信息,这个信息就是客户端配置时候需要的“provider_public_key”!所以一定要保存好。 该指纹信息也可以后续打印:

dnscrypt-wrapper --show-provider-publickey-fingerprint --provider-publickey-file=public.key


2.生成签名证书

生成证书私钥对
dnscrypt-wrapper --gen-crypt-keypair --crypt-secretkey-file=1.key
生成签名证书,默认365天,可以使用 --cert-file-expire-days 指定有效时间
dnscrypt-wrapper --gen-cert-file --crypt-secretkey-file=1.key --provider-cert-file=1.cert

3. dnscrypt-wrapper 进程运行,监听一个端口,默认tcp 和 udp都是这个端口。

dnscrypt-wrapper --resolver-address=114.114.114.114:53 --listen-address=0.0.0.0:3536 \
                   --provider-name=2.dnscrypt-cert.abc.com \
                   --crypt-secretkey-file=1.key --provider-cert-file=1.cert -VV

其中的  --provider-name= 并不必要,可以随便填写,但注意必须是以 2.dnscrypt-cert. 开头。

-VV 开启详细信息模式

-d;--daemonize  后台运行模式


到此,dnscrypt-wrapper 服务端就准备完成了。记得第一步的 public.key 和 secret.key妥善保存。



配置 dnscrypt-proxy 客户端:

参照我开头提到的 第一篇文章进行配置。这里只讲怎么和自建的dnscrypt服务对接。

dnscrypt-proxy --local-address=0.0.0.0:3536 \
                --provider-key=3233:0058:E78B:77BB:7683:71BD:BB72:E226:7DBC:DBC6:0473:8753:DC13:40D3:EDF5:A3BA \
                --provider-name=2.dnscrypt-cert.cbd.cn  \
                --resolver-address=12.34.56.78:443

local-address 为本地监听地址,接受客户端的查询信息。

resolver-address 为dnscrypt-wrapper 服务端的地址及端口,这里的地址不能用可解析的域名代替

provider-key 为配置dnscrypt-wrapper第一步的时候生成的公钥指纹信息


其余配置参数在这里不再做详解。