使用dnscrypt-proxy解决DNS被污染的问题

by LALA

荒岛 / 2018-12-30 17:05

dnscrypt-proxy是Gayhub上面的一个开源项目,项目本身就提供给了我们很多免费的公共DNS可用,如果你不想自建服务器的话用免费的也是可以的,只是DNS解析的速度会比较慢。

自建的话找一台线路好的机器,解析速度还是比公共的要快不少的,自建也很简单,官方都提供好了docker镜像。下面我在一台CentOS7X64的机器上进行安装。

首先安装docker:

cd  yum -y install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-18.06.1.ce-3.el7.x86_64.rpm  systemctl start docker  systemctl enable docker.service

然后一条命令就可以安装了:

docker run --name=dnscrypt-server -p 443:443/udp -p 443:443/tcp --net=host jedisct1/dnscrypt-server init -N dns.lala.im -E 1.1.1.1:443

注:

1.dns.lala.im这个可以自己随便更改,即便是一个不存在的域名都可以。
2.1.1.1.1更改为你的服务器公网IP
3.443这个端口不能更改。

稍等一会就安装好了,会回显给你一串类似这样的sdns代码,复制保存好:

启动服务:

docker start dnscrypt-server

设置开机启动:

docker update --restart=unless-stopped dnscrypt-server

这样服务端就搭建好了,接下来是客户端,首先在这里下载符合你系统的客户端:

https://github.com/jedisct1/dnscrypt-proxy/releases

这里我以Win10为例,解压之后先复制一份配置文件保存为dnscrypt-proxy.toml:

然后编辑dnscrypt-proxy.toml,注释掉公共服务器这块:

然后在下面这里加上我们之前复制的那一串sdns代码:

保存配置文件,接着打开CMD或者PowerShell,运行客户端,如果回显中能够正常响应,则说明一切正常:

现在打开自己电脑主网卡的属性设置界面,找到TCP/IPv4这里点属性:

把DNS地址修改为127.0.0.1:

这样就大功告成了,现在我拿自己这个博客的域名测试下效果(我这个域名是被污染的。)可以看到,已经解析出正确的服务器IP地址了:

PING一下看看,也是正常的:

这样一直用PowerShell运行dnscrypt-proxy似乎不是一件明智之举,dnscrypt-proxy也为我们准备好了一个功能:安装系统服务。首先我们Ctrl+C退出当前运行中的dnscrypt-proxy。

然后我们可以通过下面的命令把dnscrypt-proxy安装为Windows的系统服务,这样dnscrypt-proxy每次就能自动运行了,而不再需要PowerShell:

./dnscrypt-proxy -service install

安装完成之后启动服务:

./dnscrypt-proxy -service start

如果一切正常,则看到类似如图回显:

更多管理命令:

./dnscrypt-proxy -service stop  ./dnscrypt-proxy -service restart  ./dnscrypt-proxy -service uninstall

要自己手动管理相关服务也是可以的:

在天朝这个独特的网络环境下,dnscrypt-proxy可以帮你解决GFW污染域名/DNS的问题,还能够帮助你解决运营商的DNS劫持等等各种蛋疼问题。用处还是挺大的。

参考文献:

https://github.com/jedisct1/dnscrypt-proxy/wiki/How-to-setup-your-own-DNSCrypt-server-in-less-than-10-minutes

https://github.com/jedisct1/dnscrypt-proxy/wiki/Installation-Windows

LALA

我什么都不卖了,告辞!

Shared via Inoreader