Ubuntu中静态DNS配置的方法详解
<p><strong><span>DNS服务的简介:</span></strong></p>
<p>
DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。DNS中保存了一张域名(domain name)和与之相对应的IP地址 (IP address)的表,以解析消息的域名。</p>
<p>
因为实验室实现的拟态存储系统需要实现动态变更ip地址,所以需要搭建一个dns服务器,并且将需要查询变更ip地址的服务器都绑定到同一台dns服务器之上。通常在RedHat系列(eg:Fedora,Centos)的系统之中,当我们需要变更dns服务器是一件很简单的事情,可以直接修改对应的/etc/resolv.conf文件。添加或修改nameserver后面的ip地址就可以了。但是我傻乎乎的以为在Debian系列(eg:Ubuntu,Mint)之下也是这样的设置的,似乎一改也能用,我就没有细究了。</p>
<p>
某天断电重启之后,Ubuntu系统上DNS服务集体失效,而后排查发现/etc/resolv.conf文件被覆盖写了,原先配置的dns信息全部消失。如下图所示:</p>
<p>
<img style="max-width:100%!important;height:auto!important;"title="Ubuntu中静态DNS配置的方法详解" alt="Ubuntu中静态DNS配置的方法详解" src="https://zhuji.jb51.net/uploads/img/202305/a80c538ecaae98c21db42f3e49cc6673.jpg"></p>
<p>
囧rz! Ubuntu都告诉你了,DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN。</p>
<p>
<span><strong>系统环境:</strong></span></p>
<p>
系统平台:Ubuntu 14.04</p>
<p>
我们来梳理一遍Ubuntu下对resolv.conf的编辑规则,就可以总结出来怎么对症下药去处理静态dns的配置重启失效的问题了。</p>
<p>
<strong>流程分析:</strong></p>
<p>
1.在Ubuntu系统网络设备启动的流程中,会依赖/etc/network/interface的配置文件初始化网络接口,所以直接在/etc/network/interface之中配置好对应的dns服务器会最先写入/etc/resolv.conf。所以我们可以在其中添加如下内容:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_71009">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">dns-nameservers 180.76.76.76 </code><code class="bash plain">//</code><code class="bash plain">支持一下,百度的DNS服务器</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
2.接下来NetworkManager会接力填充/etc/resolv.conf。依赖配置文件/etc/NetworkManager/NetworkManager.conf通过修改这个配置文件中的dns项,我们也可以实现静态dns配置的目的:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_663634">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">dns=119.29.29.29 </code><code class="bash plain">//</code><code class="bash plain">腾讯的DNS服务器</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
3.如果你错过了前面两步,没关系,我们还有机会补救。接下来resolv会读取自己的dns配置文件,写入/etc/resolv.conf。依赖的配置文件是/etc/resolvconf/resolv.conf.d/tail。通过添加dns服务器的方式,我们也可以实现写入我们静态配置的dns服务器。</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_777604">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">nameserver=223.5.5.5 </code><code class="bash plain">//</code><code class="bash plain">阿里的DNS服务器</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
<span><strong>静态IP配置</strong></span></p>
<p>
Ubuntu 的网络配置信息放在 /etc/network/interfaces 中,如果配置动态获取ip,则在上述文件中加入以下内容:</p>
<p>
使用如下命令打开网络配置信息文件:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_759843">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">sudo</code> <code class="bash plain">gedit </code><code class="bash plain">/etc/network/interfaces</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
编辑文件(注意检察你的getway是否正确。):</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_752816">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">auto eth0</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">iface eth0 inet static</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash plain">address 192.168.8.119</code>
</div>
<div class="line number4 index3 alt1">
<code class="bash plain">netmask 255.255.255.0</code>
</div>
<div class="line number5 index4 alt2">
<code class="bash plain">gateway 192.168.8.1</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
配置完成之后重启网络:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_885026">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">sudo</code> <code class="bash plain">/etc/init</code><code class="bash plain">.d</code><code class="bash plain">/networking</code> <code class="bash plain">restart</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
这时查看的就修改好的配置信息了</p>
<p>
<span><strong>总结</strong></span></p>
<p>
详细梳理了在Debian系列发行版之下Linux静态DNS服务器的绑定流程,我们可以使用上述三种方法的任意一种。(囧rz,每种方法语法都不一样,坑爹的Linux)当然RedHat系列的发行版可以参考上述的内容,静态配置dns服务器流程应该也是大同小异。</p>
<p>
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。</p>
<p>
原文链接:http://www.jianshu.com/p/68177310e0ad</p>
頁:
[1]