解决dnsmasq安装好之后主机不能解析其他域名的问题

概述

事情是这样的,我想在阿里云上搭建一个dns服务器,没错就是吃空了,在阿里云上搭建一个本地的dns服务器,安装好之后发现不能ping域名了,难道是dns服务器的问题,换成114的dns也没有用,后来终于找到解决的方法了

操作

首先看下我的配置文件

1
2
3
4
resolv-file=/etc/resolv.conf
strict-order
listen-address=47.100.210.53
address=/hello.bboysoul.com/198.13.55.44

没错我加了这个resolv-file=/etc/resolv.conf

也就是说的我的上游dns服务器地址应该是存在这个文件里面的,之后查看这个文件

1
2
3
4
#Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1
options timeout:2 attempts:3 rotate single-request-reopen

这就是问题所在了,之后我们修改我们本机的dns服务器地址

vim /etc/resolvconf/resolv.conf.d/head

1
2
nameserver 47.100.210.53
nameserver 114.114.114.114

有人说ubuntu16.04是修改下面这个文件才可以修改dns服务器地址的,反正我是没有成功过,你们看着办

vim /etc/resolvconf/resolv.conf.d/base

但是绝对不能编辑下面这个文件,因为一旦重启网络,这个文件会被重写

vim /etc/resolv.conf

之后我们重启网络

systemctl restart networking

重启dnsmasq

systemctl restart dnsmasq

其实貌似直接重启dnsmasq就可以,因为重启这个貌似会直接重启网络的

如果你碰到同样ping不通主机的问题,但是我的方法没有帮助到你,那么也许下面是你的问题所在

第二种情况

首先看下这个进程是怎么启动的

1
2
3
4
╭─root@bboysoul-aliyun ~  
╰─➤ ps -ef |grep dnsmasq
dnsmasq 19842 1 0 17:02 ? 00:00:00 /usr/sbin/dnsmasq -x /var/run/dnsmasq/dnsmasq.pid -u dnsmasq -r /var/run/dnsmasq/resolv.conf -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new --local-service --trust-anchor=.,19036,8,2,49aac11d7b6f6446702e54a1607371607a1a41855200fd2ce1cdde32f24e8fb5 --trust-anchor=.,20326,8,2,e06d44b80b8f1d39a95c0b0d7c65d08458e880409bbc683457104237c7f8ec8d
root 20371 20335 0 21:03 pts/1 00:00:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn dnsmasq

你可以看到上面这么一段

-r /var/run/dnsmasq/resolv.conf

看下上面这个文件的路径和内容,如果不行那么修改下面这个文件,忽略掉上面这个文件之后重启dnsmasq

vim /etc/default/dnsmasq

取消下面这行注释

IGNORE_RESOLVCONF=yes

之后手动指定上游dns服务器也就是dnsmasq的配置文件vim /etc/dnsmasq.conf加上下面这行

resolv-file=/etc/resolv.conf

之后就是重复我上面第一种情况的操作了

欢迎关注Bboysoul的博客www.bboysoul.com
Have Fun