![如何使用 dnsmasq+resolvconf 缓存 dnscrypt-proxy?](https://linux22.com/image/1061069/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20dnsmasq%2Bresolvconf%20%E7%BC%93%E5%AD%98%20dnscrypt-proxy%EF%BC%9F.png)
由于我的 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=dnsmasq
为dns=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
。如果您收到响应,则表示您的设置正在运行!