Dnsmasq是一个开源的轻量级DNS转发和DHCP、TFTP服务器,在路由器系统中使用广泛
在阿里云上启用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 stop
和 systemctl disable systemd-resolved.service
禁用就可以了。