之前我介绍了为了科学访问互联网其中非常重要的一环 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第一步的时候生成的公钥指纹信息
其余配置参数在这里不再做详解。