1. 程式人生 > >Ubuntu 中/etc/resolv.conf 檔案修改丟失的解決方案

Ubuntu 中/etc/resolv.conf 檔案修改丟失的解決方案

使用wget下載檔案時出現unable to resolve host name http://xxxx,根據網上的方法修改了/etc/resolv.conf後問題解決,可是每次重啟電腦或者重啟network-manager後該檔案的修改總是丟失了

到底是誰改寫了這個檔案?

每次 做 service network-manager restart時該配置檔案又復原了,看來是這個東西搞的鬼?

那麼到底該怎麼配置 DNS 呢

再次開啟/etc/resolv.conf時注意到了這一句話:“DO NOT EDIT THIS BY HAND--YOUR CHANGES WILL BE OVERWRITTEN”

說得很明白,修改會被改寫。

 有些人說要修改/etc/sysconfig/network-scripts/ifcfg-eth0 才有用,可是Ubuntu和redhat系的linux在一些系統配置檔案的構造上不是一樣的,在ubuntu中是沒有/etc/sysconfig這個目錄的,對於ubuntu,網路的配置檔案在/etc/network/interfaces,網上找到一種方法:

方法:修改/etc/resolvconf/resolv.conf.d/base檔案,該檔案預設是空的,在裡面寫入: nameserver 1.1.1.1 nameserver 2.2.2.2 修改完之後儲存,然後執行resolvconf -u 然後,你會發現/etc/resolv.conf檔案中多了幾行,這幾行是resolve程式自動寫入的: # 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 1.1.1.1 nameserver 2.2.2.2 然而並沒有什麼暖用,結果根本不是上面描述的那樣。 再次觀察/etc/resolv.conf,又有發現,原來/etc/resolv.conf只是一個連結檔案,下圖反白部分:

連結指向的是 /etc/run/resolvconf/resolv.conf ,那麼咱們就來修改這個檔案看能不能解決問題,悲劇的是該檔案根本無法寫入。

回到起點,尋找改寫檔案的源頭,百思不得解。

最後終於找到兩種可行的方法,先學著用吧

方法一

1.需要建立一個檔案/etc/resolvconf/resolv.conf.d/tail

sudo vi /etc/resolvconf/resolv.conf.d/tail

2.在該檔案中寫入自己需要的dns伺服器,格式與/etc/resolv.conf相同

nameserver 8.8.8.8  

3.重啟下resolvconf程式

sudo /etc/init.d/resolvconf restart 

再去看看/etc/resolv.conf檔案,可以看到自己新增的dns伺服器已經加到該檔案中

方法二

在/etc/network/interfaces中

  1. ###interfaces中#######     
  2. auto eth0     
  3. iface eth0 inet static     
  4. address 192.168.3.250     
  5. netmask 255.255.255.0                  #子網掩碼     
  6. gateway 192.168.3.1                      #閘道器     
  7. dns-nameservers 8.8.8.8 8.8.4.4    #設定dns伺服器

重啟下resolvconf程式的方法:sudo /etc/init.d/resolvconf restart