使用 Dnsmasq 作本地 DNS 缓存

Dnsmasq是一个开源的轻量级DNS转发和DHCP、TFTP服务器,在路由器系统中使用广泛

ipv6-test.com

在阿里云上启用IPv6 Tunnel之后,访问 Google 经常在 v4 与 v6 之间乱跳,而且 DNS6 工作也不太正常,查了一下似乎用 Dnsmasq 就可以解决



这台服务器使用的是 Ubuntu 16.04 ,所以我们直接安装就行了:

apt install dnsmasq

编辑 dnsmasq.conf

vim /etc/dnsmasq.conf

写入新配置:

#同步请求上游DNS
all-servers

#不转发不在路由地址中的域名
bogus-priv

#不转发格式错误的域名
domain-needed

#监听地址
listen-address=127.0.0.1,172.31.0.1

#上游DNS服务器
server=8.8.8.8 
server=8.8.4.4
server=2001:4860:4860::8888
server=2001:4860:4860::8844

#让阿里云内网镜像使用默认DNS
server=/mirrors.cloud.aliyuncs.com/100.100.2.136
server=/mirrors.cloud.aliyuncs.com/100.100.2.138



最后执行 service dnsmasq restart 重启服务,配置完成,解析不正常的情况消失了。


如果 Dnsmasq 没有正常工作:
可能是系统已经安装 dnsmasq-base,修改 /etc/NetworkManager/NetworkManager.conf,找到 dns=dnsmasq 这行注释掉即可。
在 Ubuntu 18.04 之后,某些情况下会默认启用 systemd-resolved ,这会与 dnsmasq 产生冲突,执行 service systemd-resolved stopsystemctl disable systemd-resolved.service 禁用就可以了。

标签: Ubuntu IPv6 DNS


添加新评论