在 macOS 上启用 DNSCrypt-Proxy

2018-04-08 22:25:22 +08:00
 Livid

DNSCrypt 是一个由 Frank Denis 和 Yecheng Fu 设计的加密协议。目的在于加密客户端和 DNS 服务器端之间的通讯,以实现多种保护目的。比如防止 ISP 对 DNS 协议的恶意劫持,或者部分 DNS 服务对 NXDOMAIN 的劫持(对解析失败的域名跳转到广告页面)。

DNSCrypt-Proxy 是 DNSCrypt 协议的一个实现,支持多种操作系统。本文描述的是如何在 macOS 上启用并进行一些必要的配置。

安装 DNSCrypt-Proxy

最简单的安装方式就是通过 Homebrew:

brew install dnscrypt-proxy

基本配置

安装完成之后,先不要启动,打开下面这个文件,改动几个地方:

/usr/local/etc/dnscrypt-proxy.toml

启用应用日志

如果 DNSCrypt-Proxy 本身遇到任何问题的时候,我们可以从应用自身的日志中看到。

文件内搜索 log_level 然后修改这两行:

log_level = 0
log_file = '/usr/local/var/log/dnscrypt-proxy.log'

启用查询日志

查询日志在本地记录你的每一次 DNS 查询的时间、域名和查询类型。

文件内搜索 query_log,然后将 file 那一行修改为:

file = '/usr/local/var/log/query.log'

启用 NX 日志

NX 日志记录的那些不存在的域名的查询。通常,恶意软件,或者是没有正常工作的过时软件会发出这样的查询。

文件内搜索 nx_log,然后将 file 那一行修改为:

file = '/usr/local/var/log/nx.log'

禁用系统提供的 DNS

在任何情况下不使用操作系统自带的解析,在文件中搜索 ignore_system_dns 然后修改 true

ignore_system_dns = true

启动和启用 DNSCrypt-Proxy

DNSCrypt-Proxy 的启动稍微特殊的一点是,因为它需要监听在 53 端口,因此我们需要使用 sudo 来管理服务。

启动 DNSCrypt-Proxy:

sudo brew services start dnscrypt-proxy

如果服务正常启动了,那么在我们之前打开的 dnscrypt-proxy.log 中应该可以看到下面这行:

dnscrypt-proxy is ready

然后你就可以在 macOS 的网络设置中将 DNS 设置为 127.0.0.1 了。然后访问几个你经常去的网站,就可以在之前打开的 query.log 中看到查询记录。

如果在这样设置之后打开网站遇到问题,那么在 dnscrypt-proxy.log 日志文件中应该可以找到线索。

找出解析量最大的域名

因为开启了 query_log,所以我们可以用下面这条指令找出解析量最大的域名:

cat query.log|awk -F$'\t' '{print $3}'|sort|uniq -c|sort -r|more

而如果你有其他的分析工具,query.log 会是一个很有意思的数据源可以玩。

你可以将 DNSCrypt-Proxy 运行在 Linux 服务器上,然后在 resolv.conf 中将 nameserver 设置为 127.0.0.1,这样的话也可以解决服务器上遇到的 DNS 劫持。

17264 次点击
所在节点    DNS
34 条回复
xtddd
2018-04-10 09:41:56 +08:00
@v2register 这个国内地址用国内的 dns,那国外的地址是用哪个 dns 解析?
thuai
2018-04-10 10:01:55 +08:00
公司局域网路由内绑定了私有域名怎么设置才能够访问,Google 了下没有找到相关的东西
xtddd
2018-04-10 20:56:47 +08:00
@v2register 我在 mac 上用 berw 安装后,设置成 127.0.0.1,上不了网,找不到服务器,这是怎么回事
v2register
2018-04-11 20:07:04 +08:00
@xtddd #21
默认配置是随机选取
https://github.com/CNMan/dnscrypt-proxy-config 这里的是用 Cisco OpenDNS 和 CloudFlare
v2register
2018-04-11 20:09:41 +08:00
@xtddd #23 应该是 #17 所说的问题导致的,你试试直接下载 macos 的 bin 运行
https://github.com/jedisct1/dnscrypt-proxy/releases
xtddd
2018-04-11 20:23:30 +08:00
@v2register 好的,谢谢。还有一个选项就是用 macos 的 dnsproxy 客户端
xtddd
2018-04-11 21:16:11 +08:00
@v2register 下了 macos 的 bin 操作成功了,只是重启后,127.0.0.1 会自动改回路由器 dns 地址。得手动再改一下
v2register
2018-04-14 10:19:41 +08:00
@thuai #22 cloaking-rules 配置相关域名的静态 IP,或者 forwarding-rules 配置相关域名用原 DNS 解析
xtddd
2018-04-17 14:56:09 +08:00
@v2register 你好,dnscrypt-proxy 有必要和 unbound 一起使用吗?
TheKiller
2018-04-20 06:23:44 +08:00
Pcap_DNSProxy 了解一下?
v2register
2018-04-22 00:50:02 +08:00
@xtddd #29 v2 不需要 unbound 了
xtddd
2018-04-23 10:58:54 +08:00
@v2register 恩好的,v2 已经有缓存了
tf0083
2018-05-28 10:57:42 +08:00
日志文件在 var 目录下根本没有 log 这个目录,需要手工建立吗
uuair
2019-01-30 21:12:08 +08:00
@tf0083 #33 在 /var/log 目录下,不是那个 /usr/local/var

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/445199

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX