如何使用 dnsmasq+resolvconf 缓存 dnscrypt-proxy?

如何使用 dnsmasq+resolvconf 缓存 dnscrypt-proxy?

由于我的 ISP 拦截了一些 DNS 请求并返回“重定向”的 A 记录,因此我想使用dnscrypt-代理在我的计算机上(实际上是我的工作站,正在运行Ubuntu 16.04

我所做的是安装 dnscrypt-proxy 并将其指向可用的公共 dnscrypt 服务器之一。然后我将网络管理器中的 DNS 服务器设置更改为指向 127.0.2.1(dnscrypt-proxy 的默认监听地址)

它可以工作,但似乎每个 FQDN 解析都转到 dnscrypt 服务器,并且没有执行缓存。

所以,我想缓存由 dnscrypt 完成的 DNS 解析。我知道我可以使用 unbound 来做到这一点,但我的工作站上已经安装了 dnsmasq,所以我想使用它。但是,我对 dnsmasq 和 resolvconf 以及网络管理器之间的交互有点困惑。

这引出了我的问题:

我该如何配置我的系统以便 DNS 解析由 dnscrypt-proxy 完成但由 dnsmasq 缓存?

答案1

您应该首先编辑 NetworkManager 配置文件/etc/NetworkManager/NetworkManager.conf并将以下内容更改dns=dnsmasqdns=none。然后使用 重新启动 NetworkManager 服务sudo systemctl restart NetworkManager

使用 安装 dnsmasq 。使用您喜欢的编辑器sudo apt update && sudo apt install dnsmasq -y编辑 dnsmasq 配置。 删除整个配置,并将其替换为以下内容:/etc/dnsmasq.conf

listen-address=127.0.0.1  
port=53  
domain-needed  
bogus-priv  
dnssec  
proxy-dnssec  
strict-order  
no-resolv  
no-poll  
server=127.0.2.1  
cache-size=1000  
neg-ttl=3600  
dns-forward-max=150  
bind-interfaces

然后,使用 停止并禁用 resolvconf sudo systemctl stop resolvconf && sudo systemctl disable resolvconf,然后使用 重新启动并启用 dnsmasq sudo systemctl restart dnsmasq && sudo systemctl enable dnsmasq/etc/resolv.conf使用您喜欢的编辑器进行编辑。将其更改为只有一行:

nameserver 127.0.0.1

现在,通过 ping 一个网址来测试您的互联网连接,例如google.com。如果您收到响应,则表示您的设置正在运行!

相关内容