1.DNS服務的簡介: DNS( D omain N ame S erver,功能變數名稱伺服器)是進行功能變數名稱(domain name)和與之相對應的IP地址 (IP address)轉換的伺服器。DNS中保存了一張功能變數名稱(domain name)和與之相對應的IP地址 (IP address)的表,以解析消息 ...
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伺服器流程應該也是大同小異。若有疏漏,望指點斧正。