作者:admin,发布日期:2020-05-17
阅读:8026;评论:0

什么是加密DNS?为什么要使用加密DNS?

由于国内运营商网络的问题,很多宽带自带的DNS存在劫持问题,甚至某些宽带存在劫持53端口,直接强制使用运营商DNS。这就有可能会造成DNS解析结果的异常或者污染,也有可能具有个人隐私泄露的风险。所以,要防止DNS污染,就需要使用加密DNS,对DNS请求的过程全程加密,这样运营商即使获取到了你的数据包,也无法对其解密,更无法对其进行修改。这篇文章我们就会用到github的开源项目dnscrypt-proxy来使你的电脑接入DNS服务商提供的公共加密DNS服务。

方案

我们会用到dnscrypt-proxy程序,将其安装为Windows下的服务,这样这个服务就可以做到开机自动请求,处理我们的连接。同时该程序会在本地监听一个端口号为53的UDP端口,用于接收系统的DNS请求。所以当我们需要使用dnscrypt的时候,我们直接将系统的DNS设置为127.0.0.1,这样程序接收到请求后,会按照规范给dnscrypt公开服务器发送请求,并且将返回的信息返回给系统。下图为请求过程。

无标题.png

项目地址

https://github.com/DNSCrypt/dnscrypt-proxy

安装

我们可以直接从release页面下载编译好的二进制程序。

打开此链接进行下载:https://github.com/DNSCrypt/dnscrypt-proxy/releases

Snipaste_2020-05-17_14-18-20.png

选择win32或者win64 zip包,分别代表32位和64位程序。minisig用于下载zip包的完整性校验。

下载完成后将其解压,然后将其内部的文件夹复制到你常用的目录,用于存放程序,这里我把文件夹放到了C:\Program Files下面,将其当作普通程序。

需要注意的是,如果放到系统文件夹下面,最好对其设置普通用户的读写权限,以防止出现问题。

复制完成后,我们运行文件夹内的service-install.bat来安装dnscrypt-proxy的服务,此处需要管理员权限。

配置

将example-dnscrypt-proxy.toml复制一份,改名为dnscrypt-proxy.toml,程序启动时会读取此配置文件内的配置。

一般我们只需要配置server_names,设置一个你需要用的服务器即可,当然也可以配置多个,第一个请求失败会自动向第二个服务器请求。

server_names = ['alidns-doh']

去掉前面的# 注释,如果该项没有配置,程序会自动从自带的服务器列表中获取一个推荐的服务器进行请求。

我在这里使用了阿里的加密dns服务,其他可选的可以使用dns.sb 或者 rubyfish提供的一些加密dns服务。

自带的服务器列表可以从下面的网站中看到

https://dnscrypt.info/public-servers/

当然我们也可以看到下面这段

[sources]

  ## An example of a remote source from https://github.com/DNSCrypt/dnscrypt-resolvers

  [sources.'public-resolvers']
  urls = ['https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v2/public-resolvers.md', 'https://download.dnscrypt.info/resolvers-list/v2/public-resolvers.md']
  cache_file = 'public-resolvers.md'
  minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3'
  prefix = ''

  ## Anonymized DNS relays

  [sources.'relays']
  urls = ['https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v2/relays.md', 'https://download.dnscrypt.info/resolvers-list/v2/relays.md']
  cache_file = 'relays.md'
  minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3'
  refresh_delay = 72
  prefix = ''

sources段中配置了服务器列表以及列表的下载地址,这份列表会实时更新,当然你也可以自建。

当dnscrypt-proxy启动时,会自动从配置好的sources地址中下载列表文件,供程序使用,文件会存在程序目录中。

设置系统dns

右键使用的网卡,选择属性,然后在属性界面中双击IPV4协议。

Snipaste_2020-05-17_14-32-13.png

将主DNS设置为127.0.0.1即可

Snipaste_2020-05-17_14-33-08.png

开启局域网访问

可以修改dnscrypt-proxy配置,使其监听全部IP,以实现局域网共享dns。

将原有监听配置修改为以下配置即可

listen_addresses = ['0.0.0.0:53']

使用dnscrypt-proxy后windows 网络图标提示感叹号或者其他错误请求

此问题在博主系统中100%复现,解决方法比较折中,在DNS设置中添加一个标准DNS协议的备用服务器,这样就可以解决问题。而且实测系统会先从主DNS服务器中获取解析结果。

你可能感兴趣的文章

评论区

发表评论

必填

选填

选填

必填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。