安装 dnsmasq
yaourt -S dnsmasq
配置 NetworkManager
NetworkManager 包含 dnsmasq 插件,可以很方便地支持 dns 缓存。
修改
/etc/NetworkManager/NetworkManager.conf
dns=dnsmasq
配置 dnsmasq
NetworkManager 将 dnsmasq 的配置存放在其它位置。
/etc/NetworkManager/dnsmasq.d/dnsmasq.conf
listen-address=127.0.0.1 bind-interfaces dhcp-authoritative no-negcache strict-order
生效配置
重启 NetworkManager 正式生效配置
sudo systemctl restart NetworkManager
dnsmasq 不要通过 systemd 以服务方式启动,它会由 NetworkManager 启动
$ COLUMNS=400 ps wax | grep dnsmasq 6072 ? S 0:00 /usr/bin/dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces --pid-file=/var/run/NetworkManager/dnsmasq.pid --listen-address=127.0.0.1 --conf-file=/var/run/NetworkManager/dnsmasq.conf --cache-size=400 --proxy-dnssec --conf-dir=/etc/NetworkManager/dnsmasq.d
上游域名服务器在
/var/run/NetworkManager/dnsmasq.conf
中指定,通常由 dhcp 服务分配。添加其它域名服务器,在
/etc/NetworkManager/dnsmasq.d/dnsmasq.conf
中添加以下配置:server=114.114.114.114
输出日志调试 dnsmasq ,在
/etc/NetworkManager/dnsmasq.d/dnsmasq.conf
中添加以下配置:log-facility=/var/log/dnsmasq.log log-queries
重启 NetworkManager 生效。
看看效果
多次执行下面的命令,可以感觉到后几次明显比第一次快,这就是 DNS 缓存在起作用。
nslookup www.baidu.com
与 pdnsd 比较
之前写过一篇《 使用Pdnsd缓存域名解析结果加快上网速度 》,本篇改用 dnsmasq 实现,可以发现 dnsmasq 和 NetworkManager 集成度很高,即插即用,而 pdnsd 则要手动做很多设置,而且很难实现自动使用 dhcp 分配的域名服务器做为上游域名服务器。