dnscrypt-wrapper 和dnscrypt-proxy 在一起搭一个私有的本地dns服务器,可以避免很多网站被解析到一些不正确的IP,其中wrapper是负责接上游dns服务器,proxy提供本地dns解析服务,下面是安装使用方法。
下面将要介绍的安装和使用方法针对的软件版本是:
dnscrypt-wrapper 0.2.2-44.ge99f43e
dnscrypt-proxy 1.9.4
Centos 7安装 dnscrypt-wrapper 需要自己编译,但是并不复杂。
1、安装 epel-releasse
yum install -y epel-release
2、安装 git,libevent-devel 和 libsodium-devel
yum group install -y "Development Tools"
yum install -y git
yum install -y libevent-devel
yum install -y libsodium-devel
3、执行ldconfig
ldconfig
5、安装dnscrypt-wrapper.git
git clone --recursive git://github.com/cofyc/dnscrypt-wrapper.git
cd dnscrypt-wrapper
make configure
./configure
make install
6、创建一个新目录保存 dnscrypt-wrapper需要的证书文件。
mkdir ~/dns
cd ~/dns
7、生成provider证书
生成provider证书后,程序会输出一串 Provider public key,这个key后面在 dnscrypt-proxy 会用到。同时目录下会生成:public.key 和 secret.key 两个文件。
Provider public key:4F39:88BD:B33D:BDA1:EE91:1886:F4B0:2A29:6C71:CFDE:372E:CDD4:382C:B609:C7FE:9061
dnscrypt-wrapper --gen-provider-keypair
8、生成crypt证书
完成下面步骤后会生成两个文件: 1.key 和 1.cert
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 \
--cert-file-expire-days=365
9、启动 dnscrypt-wrapper
按照上面的步骤完成后,我们就可以启动 dnscrypt-wrapper 了。
dnscrypt-wrapper --resolver-address=8.8.8.8:53 --listen-address=0.0.0.0:5553 \
--provider-name=2.dnscrypt-cert.gogo.com \
--crypt-secretkey-file=1.key --provider-cert-file=1.cert
这里稍微解释一下 dnscrypt-wrapper 的命令行参数:
--resolver-address 指的是用哪个上游dns服务器解析dns请求
--listen-address 指本地监听哪个ip和端口,对外服务,地址一般是0.0.0.0,端口号这里用的是 5553,这样可以不需要root权限启动
--provider-name 必须以 2.dnscrypt-cert.开始,后面用个什么域名无所谓
--crypt-secretkey-file和--provider-cert-file 指明 前面生成的证书文件的路径。
-V 显示log
10、Mac 安装 dnscrypt-proxy
最简单的办法就是用brew,这里就不介绍安装brew的方法了。
brew install dnscrypt-proxy
11、启动 dnscrypt-proxy
dnscrypt-proxy --local-address=127.0.0.1:53 \
--resolver-address=38.83.104.146:443 \
--provider-name=2.dnscrypt-cert.gogo.com \
--provider-key=4F39:88BD:B33D:ADA1:EE01:1886:F4B0:2A19:6C71:CFDE:372E:CDD4:382C:B609:C7FE:9060
12、通讯成功
如果通讯成功会有类似下图的信息
启动成功以后,把本地的dns服务器设成127.0.0.1。就开始使用 dnscrypt-proxy解析域名了。
13、一些注意事项
Centos 7开始使用 firewalld 作为防火墙,如果你发现程序可以启动,但是服务连接不上,那很可能是防火墙的问题。可以通过下面的命令来检查是否有防火墙。
sudo iptables -L
如果命令的输出不像上面的图一样,那么说明有防火墙设置。
检查是否是启用了firewalld
systemctl status firewalld
上面的输出说明,服务器启动了firewalld。
如果发现有防火墙设置,可以先关闭防火墙,再重新启动一下 dnscrypt-proxy