DNSCrypt简明教程
· · 174 次点击 ·
·
开始浏览
当我们输入 Google.com 之后,浏览器是需要将 Google.com 翻译成IP,然后才能建立TCP连接的。而将域名翻译成IP地址, 就是DNS服务器的事情,但是有一个小问题,DNS是明文的。
也就是说,尽管你使用了HTTPS,由于在建立TLS连接之前,你得先查询域名所对应的IP,因此,还是可以通过监控你的DNS来推测你准备 访问什么流量,更坏一点的情况,可以给你伪造一个响应,返回错误的地址,这种情况就叫做“DNS污染”。
所以我们需要使用DNSCrypt来加密我们的DNS通信:
$ sudo apt install -y dnscrypt-proxy
然后编辑 /etc/dnscrypt-proxy/dnscrypt-proxy.toml,将最后的 static 改成你想要的DNS服务器,你可以在 这里 选择你喜欢的(一般来说就是你试试访问快的),然后填进去,例如:
[static] [static.cloudflare] stamp = sdns://AgcAAAAAAAAABzEuMC4wLjGgENk8mGSlIfMGXMOlIlCcKvq7AVgcrZxtjon911-ep0cg63Ul-I8NlFj4GplQGb_TTLiczclX57DvMV8Q-JdjgRgSZG5zLmNsb3VkZmxhcmUuY29tCi9kbnMtcXVlcnk
接着启动 dnscrypt-proxy:
$ sudo systemctl start dnscrypt-proxy $ sudo systemctl enable dnscrypt-proxy
到这里还不行,因为你没有配置使用该DNS。如果你使用的是NetworkManager,那么就编辑文件 /etc/NetworkManager/conf.d/rc-manager.conf :
[main] rc-manager=resolvconf
然后编辑 /etc/resolvconf.conf:
# Configuration for resolvconf(8) # See resolvconf.conf(5) for details resolv_conf=/etc/resolv.conf # If you run a local name server, you should uncomment the below line and # configure your subscribers configuration files below. name_servers=127.0.0.1
接着重启 NetworkManager:
$ sudo systemctl restart NetworkManager
如果你使用了libvirt来管理虚拟机,你会发现虚拟机会断网,重启host即可。
内网DNS咋办?使用 dnscrypt-proxy 固然爽,但是有个小问题,就是如果是在公司里,很有可能就有内网DNS,这就很蛋疼了, dnscrypt-proxy 有一个解决方案,那就是使用 cloaking rules,编辑 /etc/dnscrypt-proxy/dnscrypt-proxy.toml,把 cloaking_rules 这一行 注释掉,然后编辑 /etc/dnscrypt-proxy/cloaking-rules.txt 这个文件,在后面添加你的DNS,例如:
# my customized dns www.one-domain.com x.x.x.x *.your-domain.com x.x.x.x
其实我想要方案是匹配域名,然后把这些域名的DNS指向另一个DNS,这样会方便些,不过似乎 dnscrypt-proxy 还不支持。
还有一个方案就是把 fallback_resolver 改成公司所提供的DNS。
174 次点击 ∙ 1 赞
加入收藏
相关文章
- K8s简明实践教程
- LoadRunner简明教程[通俗易懂]
- 『原创』『教程』给兰空图床添加一个后台获取Tonken功能
- endnote文献使用简明教程+遇到问题
- Demo佛萨奇系统开发丨魔豹联盟系统开发部署教程
- 卡商云商城2.0系统搭建教程(详细图文版)
- CentOS7.2 服务器系统 安装 MongoDB 3.4的详细教程
- Linux文件权限设置教程详解程序员
- Oracle ETL教程:快速入门(oracleetl教程)
- PHP微信发红包简明教程详解编程语言
- 安装安装Linux:VirtualBox虚拟机快速教程(vboxlinux)
- MySQL教程:轻松学习如何使用网盘(mysql教程网盘)
- Mysql教程:快速入门你所需要知道的一切(mysql教程)
- MySQL 命令提权:一篇简明教程(mysql命令提权)
- 如何快速卸载MySQL服务:简单有效的命令教程(卸载mysql服务命令)
- 简明易懂的Linux下QT安装指南(linux下安装qt教程)
- MySQL如何删除用户?一步步实现删除用户操作简明教程!(mysql中删除用户)
- 简单易学:Linux命令行设置别名教程(linux设置别名)
- 简单易懂的 Linux 移植教程,带你轻松get Linux移植(linux移植教程)
- Linux运行文件命令简介及使用教程(linux运行文件命令)
- MySQL DESC排序简明教程(mysql中desc排序)
- XSL简明教程(4)在服务器端的实现
- 推荐40个简单的jQuery导航插件和教程(下篇)