共计 1406 个字符,预计需要花费 4 分钟才能阅读完成。
1.DNS 服务的简介:
DNS(Domain Name Server,域名服务器)是进行域名 (domain name) 和与之相对应的 IP 地址 (IP address)转换的服务器。DNS 中保存了一张域名 (domain name) 和与之相对应的 IP 地址 (IP address)的表,以解析消息的域名。
因为实验室实现的拟态存储系统需要实现动态变更 ip 地址,所以需要搭建一个 dns 服务器,并且将需要查询变更 ip 地址的服务器都绑定到同一台 dns 服务器之上。通常在 RedHat 系列 (eg:Fedora,CentOS) 的系统之中, 当我们需要变更 dns 服务器是一件很简单的事情, 可以直接修改对应的 /etc/resolv.conf 文件。添加或修改 nameserver 后面的 ip 地址就可以了。但是我傻乎乎的以为在 Debian 系列 (eg:Ubuntu,Mint) 之下也是这样的设置的,似乎一改也能用,我就没有细究了。
某天断电重启之后,Ubuntu 系统上 DNS 服务集体失效,而后排查发现 /etc/resolv.conf 文件被覆盖写了,原先配置的 dns 信息全部消失。如下图所示:
囧 rz!Ubuntu 都告诉你了,DO NOT EDIT THIS FILE BY HAND — YOUR CHANGES WILL BE OVERWRITTEN。
2. 系统环境:
系统平台:Ubuntu 14.04
我们来梳理一遍 Ubuntu 下对 resolv.conf 的编辑规则,就可以总结出来怎么对症下药去处理静态 dns 的配置重启失效的问题了。
流程分析:
-
-
在 Ubuntu 系统网络设备启动的流程中,会依赖 /etc/network/interface 的配置文件初始化网络接口,所以直接在 /etc/network/interface 之中配置好对应的 dns 服务器会最先写入 /etc/resolv.conf。所以我们可以在其中添加如下内容:
dns-nameservers 180.76.76.76 // 支持一下,百度的 DNS 服务器
-
-
2. 接下来 NetworkManager 会接力填充 /etc/resolv.conf。依赖配置文件/etc/NetworkManager/NetworkManager.conf,通过修改这个配置文件中的 dns 项,我们也可以实现静态 dns 配置的目的:
dns=119.29.29.29 // 腾讯的 DNS 服务器
-
3. 如果你错过了前面两步,没关系,我们还有机会补救。接下来 resolv 会读取自己的 dns 配置文件,写入 /etc/resolv.conf。依赖的配置文件是/etc/resolvconf/resolv.conf.d/tail。通过添加 dns 服务器的方式,我们也可以实现写入我们静态配置的 dns 服务器。
nameserver=223.5.5.5 // 阿里的 DNS 服务器
小结 : 详细梳理了在 Debian 系列发行版之下 Linux 静态 DNS 服务器的绑定流程,我们可以使用上述三种方法的任意一种。( 囧 rz,每种方法语法都不一样,坑爹的 Linux)当然 RedHat 系列的发行版可以参考上述的内容, 静态配置 dns 服务器流程应该也是大同小异。若有疏漏,望指点斧正。
更多 Ubuntu 相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-11/148587.htm