之前树莓派用的Rasbian系统,因为用不惯今天换了Ubuntu Mate。但是Ubuntu Mate16.04自带NM管理的dnsmasq-base。apt-get install dnsmasq的时候会提示你安装不了。找了半天解决方法最后在github上找到了,给大家分享一下。
1.把NetworkManager.conf中的dns=dnsmasq注释掉,然后重启NM
#cp /etc/NetworkManager/NetworkManager.conf /etc/NetworkManager/NetworkManager.conf.pkg
#cat /etc/NetworkManager/NetworkManager.conf \
| sed -e 's/dns=dnsmasq/#dns=dnsmasq/' \
> /etc/NetworkManager/NetworkManager.conf
#/etc/init.d/network-manager restart
2.之后可以正常安装dnsmasq
#apt-get install dnsmasq
3.我之前备份出来了dnsmasq.conf,直接回拷了,具体配置如下
root@15-410:/etc/dnsmasq.d# grep ^[a-z] /etc/dnsmasq.conf
resolv-file=/etc/resolv.dnsmasq.conf #解析文件
server=223.5.5.5 #上游DNS
server=119.29.29.29
strict-order #按照解析文件nameserver的顺序解析
listen-address=127.0.0.1,192.168.1.145 #侦听地址
no-hosts #不加载本地host文件
cache-size=10000 #最大缓存数目
local-ttl=65535 #本地生存时间
dhcp-mac=set:client_is_a_pi,B8:27:EB:*:*:*
4.之前的解析文件我也备份了,如下
root@xxxx#cat /etc/resolv.dnsmasq.conf
# Generated by resolvconf
nameserver 127.0.0.1
nameserver 223.5.5.5
nameserver 119.29.29.29
5.重启下dnsmasq服务
service dnsmasq restart
这个时候报错了,service dnsmasq status看了一下,是/etc/dnsmasq.d/network-manager文件中bind-interface那行有问题。注释掉再重启服务成功。把设备的DNS指向侦听地址即可。
6.解析测试,成功缓存
总结:这篇文章主要是解决Ubuntu mate屏蔽自带的用NM运行的Dnsmasq实例,配置我们的Dnsmasq服务。
注意:虽然这确实起作用,但在系统启动时,我发现它有一点小小的缺陷 – Dnsmasq启动得太早,NetworkManager无法完成设置,直到Dnsmasq重新启动,导致没有DNS。
参考地址:https://gist.github.com/magnetikonline/6236150#ubuntu-1604lts–1404lts