1、Dnsmasq安装

Dnsmasq安装:yum install dnsmasq -y 
Dnsmasq版本:dnsmasq -v
centos 6 
Dnsmasq启动:service dnsmasq start
Dnsmasq重启:service dnsmasq restart

centos 7 
Dnsmasq启动:systemctl start dnsmasq
Dnsmasq重新启动:systemctl restart dnsmasq
Dnsmasq是否启动:systemctl status dnsmasq
Dnsmasq是否启动:systemctl restart dnsmasq
查看Dnsmasq是否正常启动:netstat -tunlp|grep 53

查看 DNS 文件
cat /etc/resolv.conf

2、Dnsmasq配置

1、Dnsmasq配置文件放在 /etc/dnsmasq.conf 中,vi /etc/dnsmasq.conf 编辑配置:

cp /etc/dnsmasq.conf /etc/dnsmasq.conf_bak
vi /etc/dnsmasq.conf
  • 1、resolv-file=/etc/resolv.dnsmasq.conf,表示dnsmasq 会从这个指定的文件中寻找上游dns服务器
resolv-file=/etc/resolv.dnsmasq.conf
  • 2、同时取消 strict-order 前面的注册#号;
strict-order
  • 3、检查no-hosts前面是不是已经有了#号,默认的情况下是有的,没有的话,加上#号。dnsmasq 会首先寻找本地的 hosts 文件再去寻找缓存下来的域名, 最后去上游dns 服务器寻找;
no-hosts
  • 4、设置:listen-address=127.0.0.1,表示这个 dnsmasq 本机自己使用有效。注意:如果你想让本机所在的
listen-address=127.0.0.1
  • 局域网的其它电脑也能够使用上Dnsmasq,应该把本机的局域网IP加上去:listen-address=192.168.1.123,127.0.0.1
  • 注意:如果想允许所有的用户使用你的DNS解析服务器,把listen-address去掉即可。

提示:dnsmasq的解析流程
dnsmasq先去解析hosts文件, 再去解析/etc/dnsmasq.d/下的*.conf文件,并且这些文件的优先级要高于dnsmasq.conf,我们自定义的resolv.dnsmasq.conf中的DNS也被称为上游DNS,这是最后去查询解析的;

如果不想用hosts文件做解析,我们可以在/etc/dnsmasq.conf中加入no-hosts这条语句,这样的话就直接查询上游DNS了,如果我们不想做上游查询,就是不想做正常的解析,我们可以加入no-reslov这条语句。


2、修改/etc/resolv.conf:

cp /etc/resolv.conf /etc/resolv.conf_bak
#不建议这个方式,建议编辑首行插入 nameserver 127.0.0.1
echo 'nameserver 127.0.0.1' > /etc/resolv.conf  nameserver 127.0.0.1
cp /etc/resolv.conf /etc/resolv.dnsmasq.conf
注意:阿里云/腾讯云服务器的话建议默认DNS也进行修改,建议锁死文件 
chattr +i /etc/resolv.conf

#如果没有DNS的话,插入DNS,如果有的话就忽略该步骤
echo 'nameserver 8.8.8.8' >> /etc/resolv.dnsmasq.conf
echo 'nameserver 114.114.114.114' >> /etc/resolv.dnsmasq.conf

cp /etc/hosts /etc/dnsmasq.hosts
echo 'addn-hosts=/etc/dnsmasq.hosts' >> /etc/dnsmasq.conf

resolv.dnsmasq.conf中设置的是真正的nameserver,可以用一些公共的DNS。

以屏蔽阿里云/腾讯云/华为云域名泛解析为例

echo 'address=/aliyun.com/127.0.0.1' >> /etc/dnsmasq.conf
echo 'address=/qcloud.com/127.0.0.1' >> /etc/dnsmasq.conf
echo 'address=/tencentyun.com/127.0.0.1' >> /etc/dnsmasq.conf
echo 'address=/tencentyun.com/127.0.0.1' >> /etc/dnsmasq.conf
echo 'address=/huaweicloud.com/127.0.0.1' >> /etc/dnsmasq.conf

3、Dnsmasq启动

1、设置Dnsmasq开机启动,并重启Dnsmasq服务:

chkconfig dnsmasq on
systemctl restart dnsmasq

2、执行:netstat -tunlp|grep 53,查看Dnsmasq是不是已经正常启动:
3、测试:dig www.baidu.com ;


4、Dnsmasq使用

1、本地DNS。 将Dnsmasq作为本地DNS服务器使用,直接修改电脑的本地DNS的IP地址即可。


2、应对ISP的DNS劫持。输入一个不存在的域名,正常的情况下浏览器是显示无法连接,DNS劫持会跳转到一个广告页面。先随便nslookup 一个不存在的域名,看看ISP商劫持的IP地址;接着编辑/etc/dnsmasq.conf文件,将:bogus-nxdomain=123.123.123.123 加入进去,后面的IP是刚刚查询到的DNS劫持IP地址;重启dnsmasq,再尝试打开不存在的域名,这时浏览器就会显示正常的无法连接页面了。

3、智能DNS加快解析速度。打开/etc/dnsmasq.conf文件,server=后面可以添加指定的DNS,例如国内外不同的网站使用不同的DNS。

#国内指定DNS
server=/cn/114.114.114.114
server=/taobao.com/114.114.114.114
server=/taobaocdn.com/114.114.114.114
#国外指定DNS
server=/google.com/223.5.5.5
server=/cn/表示所有的cn域名都使用114这个公共DNS,server=/taobao.com/表示所有的taobao.com域名都用114,223.5.5.5 是阿里云的公共DNS,你可以换成其它的。

4、屏蔽网页广告。将指广告的URL指定127这个IP,就可以将网页上讨厌的广告给去掉了。

address=/ad.youku.com/127.0.0.1
address=/ad.iqiyi.com/127.0.0.1

5、指定域名解析到特定的IP上。这个功能可以让你控制一些网站的访问,非法的DNS就经常把一些正规的网站解析到不正确IP上。

address=/www.test.com/192.168.1.21

5、Dnsmasq小结

1、Dnsmasq作为本地DNS服务器安装方便,操作简单,改动的地方也不是很多,如果用国内的VPS来搭建本地DNS,响应的速度会更快,也更稳定。

2、Dnsmasq的功能强大,反DNS劫持、加快解析速度、屏蔽广告、控制内网DNS、强制域名跳转到特定IP上等这些功能在我们的实际的生活中都是很有用的。

6、其他

CentOS 8重启网络服务:

systemctl restart NetworkManager.service
systemctl status NetworkManager.service