静看光阴荏苒
不管不顾不问不说也不念

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

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

赞(3)
未经允许不得转载:荒岛 » 使用dnscrypt-proxy解决DNS被污染的问题
分享到: 更多 (0)

评论 17

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    在家中树莓派上实测用dnscrypt-proxy客户端无法正常解析你的域名(在VPS上同样配置没有问题):

    Resolving [lala.im]

    Domain exists: probably not, or blocked by the proxy
    Canonical name: lala.im.
    IP addresses: 31.13.84.1
    TXT records: –
    Resolver IP: 60.215.138.245

    似乎运营商已经可以识别出dnscrypt的流量并加以污染?

    lalala6年前 (2019-01-05) Vivaldi 2.2.1388.37 Vivaldi 2.2.1388.37 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • 服务端需要境外服务器搭建,应该是这个问题。

      LALA6年前 (2019-01-05) Google Chrome 70.0.3538.110 Google Chrome 70.0.3538.110 Windows 10 x64 Edition Windows 10 x64 Edition回复
      • dnscrypt-server在境外搭建没有问题,并且在境外VPS用搭建客户端也可以正常解析。

        lalala6年前 (2019-01-05) Vivaldi 2.2.1388.37 Vivaldi 2.2.1388.37 Windows 10 x64 Edition Windows 10 x64 Edition回复
      • 找到原因了,是因为树莓派同时配置了透明代理,导致本地DNS查询请求被转发给v2ray,造成无法正常返回解析结果,在iptables里面加入RETURN 127.0.0.0/8之后这个问题就解决了。

        lalala6年前 (2019-01-13) Vivaldi 2.2.1388.37 Vivaldi 2.2.1388.37 Windows 10 x64 Edition Windows 10 x64 Edition回复
  2. #2

    确实要境外…折腾了半天也发现了这个问题………

    痞子海6年前 (2019-01-05) Google Chrome 71.0.3578.99 Google Chrome 71.0.3578.99 Android 9 Android 9回复
  3. #3

    Adguard home 可以直接拦截域名 解析到自己设置的ip…反正域名污染的网址就这么几个……设置下…还不正常域名的解析速度

    痞子海6年前 (2019-01-07) Google Chrome 71.0.3578.99 Google Chrome 71.0.3578.99 Android 9 Android 9回复
    • 那直接改hosts不是更简单。。

      LALA6年前 (2019-01-07) Google Chrome 70.0.3538.110 Google Chrome 70.0.3538.110 Windows 10 x64 Edition Windows 10 x64 Edition回复
  4. #4

    博主,我曾经在这里https://linux.cn/article-3244-1.html看到一个关于DNSCrypt的评论,里面提到”虽然解决了dns被劫持、污染的问题,但却产生了容易被追踪的问题。这个软件与服务器通讯会发送一个身份验证的key,通过这个key就可以识别、锁定你,即使你更换了ip,甚至使用了vpn、隧道、代理。这个key是不变且唯一的,服务器始终知道是你。而且知道你一直在访问哪些网站。”.这个说法准确么?

    小白6年前 (2019-01-22) Firefox 60.0 Firefox 60.0 GNU/Linux x64 GNU/Linux x64回复
    • 这个我也不知道,最好问下程序的作者吧,不过我个人觉得这种东西都无所谓了,人在国内还有什么隐私不隐私追踪不追踪的,想找人他们有一万种方法找到你。

      LALA6年前 (2019-01-22) Google Chrome 70.0.3538.110 Google Chrome 70.0.3538.110 Windows 10 x64 Edition Windows 10 x64 Edition回复
  5. #5

    这玩意能做梯子?

    DKP6年前 (2019-04-09) MIUI Browser 10.6.1 MIUI Browser 10.6.1 GNU/Linux x64 GNU/Linux x64回复
    • 不能。

      LALA6年前 (2019-04-09) Google Chrome 72.0.3626.121 Google Chrome 72.0.3626.121 Windows 10 x64 Edition Windows 10 x64 Edition回复
  6. #6

    可是这个需要每一个上你网站的人都要设置这个东西吧?

    筑楼6年前 (2019-04-21) Safari 12.0 Safari 12.0 iPhone iOS 12.1.4 iPhone iOS 12.1.4回复
    • 只是要单纯上我这个站最简单的方法就是改个hosts就行了。

      LALA6年前 (2019-04-21) Google Chrome 72.0.3626.121 Google Chrome 72.0.3626.121 Windows 10 x64 Edition Windows 10 x64 Edition回复
  7. #7

    dnscrypt-server的docker run命令中的–net=host应该去掉,否则docker会返回WARNING: Published ports are discarded when using host network mode且443端口并未开启。

    lalala5年前 (2019-09-19) Opera 63.0.3368.88 Opera 63.0.3368.88 Windows 10 x64 Edition Windows 10 x64 Edition回复

分享创造快乐

广告合作资源投稿