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中
- ###interfaces中#######
- auto eth0
- iface eth0 inet static
- address 192.168.3.250
- netmask 255.255.255.0 #子網掩碼
- gateway 192.168.3.1 #閘道器
- dns-nameservers 8.8.8.8 8.8.4.4 #設定dns伺服器
重啟下resolvconf程式的方法:sudo /etc/init.d/resolvconf restart