前言
DNS解析的记录可能会被劫持,这里用Dns Crypt加密DNS的解析请求,这里介绍其服务端dnscrypt-wrapper的搭建。
相关依赖
dnscrypt-wrapper需要libsodium和libevent 2.1.1+。
安装编译需要的依赖
sudo apt-get install build-essential autoconf
libsodium
sod_ver=$(wget -q -O- https://github.com/jedisct1/libsodium/releases/latest | grep -oP "/releases/tag/[^\"^']+"| grep -oP "[^/^\"^']+"| tail -n1) wget -O /root/libsodium-$sod_ver.tar.gz https://github.com/jedisct1/libsodium/releases/download/$sod_ver/libsodium-$sod_ver.tar.gz --no-check-certificate tar xf /root/libsodium-$sod_ver.tar.gz cd /root/libsodium-$sod_ver ./configure && make -j2 && make install ldconfig
libevent
wget -O /root/libevent-2.1.8-stable.tar.gz https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz --no-check-certificate tar -xf /root/libevent-2.1.8-stable.tar.gz cd /root/libevent-2.1.8-stable ./configure make make install ldconfig
dnscrypt-wrapper
安装好相关依赖之后就可以编译安装dnscrypt-wrapper了。
安装
git clone git://github.com/cofyc/dnscrypt-wrapper.git cd dnscrypt-wrapper make configure ./configure make install
设置
mkdir /etc/dnscrypt-wrapper && cd /etc/dnscrypt-wrapper dnscrypt-wrapper --gen-provider-keypair --provider-name=2.dnscrypt-cert.zorz.cc --ext-address=你的IP:端口号 #类似于4298:5F65:C295:DFAE:2BFB:20AD:5C47:F565:78EB:2404:EF83:198C:85DB:68F1:3E33:E952这样的信息,记下来,这是在dnscrypt-proxy 1.x版本需要的。 #现在一般都是 dnscrypt-proxy 2.x版本,记下来sdns开头的这串信息即可。 dnscrypt-wrapper --gen-crypt-keypair --crypt-secretkey-file=zorz.cc.key dnscrypt-wrapper --gen-cert-file --crypt-secretkey-file=zorz.cc.key --provider-cert-file=zorz.cc.cert --provider-publickey-file=public.key --provider-secretkey-file=secret.key --cert-file-expire-days=365d #将证书过期时间设置为365天。这也意味着你需要在365天以后在运行上面这行命名,然后重启dnscrypt-wrapper dnscrypt-wrapper --resolver-address=8.8.8.8:53 --listen-address=0.0.0.0:443 \ --provider-name=2.dnscrypt-cert.zorz.cc \ --crypt-secretkey-file=zorz.cc.key --provider-cert-file=zorz.cc.cert -VV #使用命令来运行 dnscrypt-wrapper,用“-VV”来显示比较详细的 debug 信息: #其中的 --provider-name= 并不必要,可以随便填写,但注意必须是以 2.dnscrypt-cert. 开头:)
自启动设置,支持systemd
的系统
echo '[Unit] Description=dnscrypt-wrapper service After=network.target Wants=network.target [Service] Type=simple PIDFile=/var/run/dnscryptwrapper.pid ExecStart=/usr/local/sbin/dnscrypt-wrapper --resolver-address=8.8.8.8:53 --listen-address=0.0.0.0:5353 --provider-name=2.dnscrypt-cert.zorz.cc --crypt-secretkey-file=/etc/dnscrypt-wrapper/zorz.cc.key --provider-cert-file=/etc/dnscrypt-wrapper/zorz.cc.cert -VV Restart=on-failure [Install] WantedBy=multi-user.target' > /etc/systemd/system/dnscryptwrapper.service systemctl enable dnscryptwrapper && systemctl start dnscryptwrapper
参考链接:
https://www.logcg.com/archives/981.html
https://github.com/cofyc/dnscrypt-wrapper