博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用 dnscrypt-proxy 防止 dns 污染
阅读量:7259 次
发布时间:2019-06-29

本文共 2077 字,大约阅读时间需要 6 分钟。

今天发现上不了中文维基百科(zh.wikipedia.org),用了 VPN 也上不了。ping 了一下,发现得到的 IP 和世界各地的不一样。应该是 DNS 污染的问题。

几年前有个叫 DNSCrypt 的工具,可以加密 DNS 查询,就是解决这种问题的。但已经好久不更新了,于是找找有没有新的继承者。顺着 github 的源码库找到一个叫做 dnscrypt-proxy 的项目一直在更新。试试用一下。

项目地址:

使用方法挺简单,下载了压缩包之后执行如下命令:

dnscrypt-proxy -R 
--install

然后把自己的 DNS 改成 127.0.0.1 就行。

但比较麻烦的是找到合适自己的 DNS 服务器,也就是命令里的 name 参数。这个项目的 DNS 服务器需要特殊的服务器程序才可以运作,因此要么自己搭,要么从公共的服务里找。

公共的 name 可以在压缩包里的 dnscrypt-resolvers.csv 找到。

列表里提供的 DNS 服务器不一定好用,因此写了一个 node.js 脚本找最快的。

var csv = require('csv');var fs = require('fs');var url = require('url');var ping = require('ping');var Promise = require('bluebird');var data = fs.readFileSync('dnscrypt-resolvers.csv').toString();csv.parse(data, function(err, data) {  var filtered = [];  data.forEach(function(record) {    var name = record[0];    if (name === 'Name') {      return;    }    var address = url.parse('http://' + record[10]).hostname;    if (address.match(':')) {      console.log('ipv6:', address);      return;    }    console.log('ping:', name);    filtered.push({      name: name,      host: address    });  });  var result = [];  filtered.reduce(function(cur, next) {    return cur.then(function() {      return new Promise(function(resolve, reject) {        // console.log('ping:', next.name);        ping.promise.probe(next.host, {          timeout: 1        }).then(function(res) {          var output = res.output;          var time = output.match(/time=(\d+)ms/i)[1];          console.log('name: %s, address: %s, time: %s', next.name, next.host, time);          // console.log(res);          result.push({name: next.name, host: next.host, time: time});          resolve();        }).catch(function() {          console.log('timeout');          resolve();        });;      });    });  }, Promise.resolve()).then(function() {    result.sort(function(a, b) {      return a.time - b.time;    });    console.log(result);  });});

找到最快的之后,用这个命令检查一下服务器支持的功能:

dnscrypt-proxy -R 
--test=0

根据自己的情况选合适的。

  • 如果注重隐私要选服务器不记录日志的

  • 讨厌被审查的要选有加密功能的

全部设置完成后,清下 DNS 缓存:

ipconfig /flushdns

之后就能上中文维基百科了,也不用 VPN,速度还可以。

转载地址:http://rekdm.baihongyu.com/

你可能感兴趣的文章
Request.getRequestURL
查看>>
BPMN2新规范与Activiti5
查看>>
View (四)视图状态及重绘流程分析
查看>>
arduino IO口
查看>>
knowledgeroot 配置
查看>>
本地RUN Page时报无法显示该网页
查看>>
duilib : 滑动显示的窗口实现以及 悬浮窗 (转载)
查看>>
《Nginx文件类型错误解析漏洞--攻击演练》 (转)
查看>>
怎样用javascript获取UUID
查看>>
C# Like参数化 小记
查看>>
sublime text3 FTP直接上传
查看>>
【转载】关于RenderTarget的注意事项
查看>>
画图工具
查看>>
[WIFI] WIFI 破解(初级)
查看>>
CentOS 6.5 下安装 Redis 2.8.7
查看>>
Eclipse *的安装(图文详解)
查看>>
高性能图文混排框架,构架顺滑的iOS应用-b
查看>>
windows 下安装使用ipython
查看>>
苹果电脑macbook怎样强制关闭软件
查看>>
Linux下编译LibCURL
查看>>