转载请标明出处:
http://blog.csdn.net/qq_27818541/article/details/105925116
本文出自:【BigManing的博客】
一、 resolv.conf 详解
Linux中/etc/resolv.conf文件简介
二、nameserver 127.0.1.1是什么
ubuntu下有一个本地默认的dns服务叫做dnsmasq,它是由NetworkManager控制的
ps -ef | grep dnsmasq
结果为:
nobody 2104 1017 0 22:05 ? 00:00:00 /usr/sbin/dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces --pid-file=/var/run/NetworkManager/dnsmasq.pid --listen-address=127.0.1.1 --cache-size=0 --conf-file=/dev/null --proxy-dnssec --enable-dbus=org.freedesktop.NetworkManager.dnsmasq --conf-dir=/etc/NetworkManager/dnsmasq.d
你就可以看到它监听的本地地址,--listen-address=127.0.1.1
(ubuntu12.04及之前的版本 是 127.0.0.1), 这个地址是一个本地回环地址,而你真实的dns服务器地址,是被这个服务【dnsmasq
】管理维护着的。解析流程如下:
local process -> local dnsmasq -> router -> ISP dns
三、为什么文件内的信息会被重置为nameserver 127.0.1.1
1、resolv.conf文件默认内容中已经提示了会被重置的风险:
# 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.1.1
2、 被重置的条件: 重启机器
或者执行了 sudo resolvconf -u
命令
3、 被重置的原因:NetworkManager是一个程序,它(通过resolv conf程序)将地址127.0.1.1插入resolv.conf中。只有当NetworkManager配置启动dnsmasq程序实例作为本地转发名称服务器时才插入该地址。dnsmasq实例监听地址127.0.1.1的查询。
四、如何自定义nameserver并且不会被重置
解决思路:不启用默认的DNS服务器–dnsmasq
,注释掉默认解析服务器dns=dnsmasq
。
sudo vim /etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifupdown,keyfile,ofono
# 注释下面这句话
#dns=dnsmasq
执行后 重启服务或者执行systemctl restart network-manager
进行更新。
五、设置纯静态 nameserver配置
ps:如果dns服务器是一成不变的,不需要动态变更
可以如下设置:
sudo rm -f /etc/resolv.conf # Delete the symbolic link
sudo vim /etc/resolv.conf # Create static file
# Content of static resolv.conf 设置静态域名解析服务器
nameserver 8.8.4.4