[Linux]關於Domain Name Server設定

硬體:Raspberry pi b+
環境:noobs


相關路徑及檔案

網路設定檔:/etc/network/interfaces
DNS參考檔:/etc/resolv.conf
自動產生resolv.conf的script檔:[path]

相關指令
重啟網路:sudo /etc/init.d/networking restart



DNS參考檔基本上不太需要修改,而這個檔案也是自動產生的,但就因為他是自動產生所以造成打這篇文章的理由...

自動產生的條件:固定IP模式,ifup(網路介面啟動)、ifdown(網路介面關閉)時。
產生方式:藉由自動產生resolv.conf的script檔產生

在pi上執行時會遇到狀況是,dns的ip在每次檔案自動產生時覆蓋掉

解決辦法:
1.
如果在linux遇到類似狀況,最有可能是因為網路設定檔的設定錯誤,這時候請先確認網路設定檔裡面有設定dns。(註:範例為google的dns伺服器)

dns-nameservers 8.8.8.8 8.8.4.4
2.
如果跟我一樣遇到鬼了,做完第一個解決辦法後,並且重啟網路,結果DNS參考檔變的如下
192.168.2.1
8.8.8.8
8.8.4.4
恩...192.168.2.1可能不是固定的...但他哪來的!?神奇的是這東西還是存在的(貌似為無網路能力時的localhost)。
你可能會發現,ping 8.8.8.8時會是成功的
但ping google.com的就會失敗了
而且IP為:1.2.3.4

重啟網路時觸發了ifup、ifdown,所以也執行了自動產生resolv.conf的script檔,所以就算這時你手動把DNS參考檔的第一個IP刪掉,重啟網路還是會被覆蓋成上面的結果。

請進入自動產生resolv.conf的script檔後,將[function name]直接複寫為空函數,然後手動將DNS參考檔設定好。

這樣下次重啟網路時執行自動產生resolv.conf的script檔時,就會什麼也不做,自然也不會更改到DNS參考檔

註:
1.建議先備份原始檔在修改自動產生resolv.conf的script檔
2.自動產生resolv.conf的script檔裡面也是參考網路設定檔的dns-nameservers所寫的位置,所以如果更改為空函數之後,修改dns-nameservers將會變得無效。

3.
如果你跟我一樣笨,其實看不懂怎麼修改成空函數,那我們有大絕招...直接將DNS參考檔lock起來,即使使用sudo也無法修改此檔案。
方法如下:
lock:
sudo chattr +i /etc/resolv.conf
unlock:
sudo chattr -i /etc/resolv.conf
註:
同解決方法2的註2,檔案是無法被修改的,所以就算更改了網路設定檔DNS參考檔內容也不會更改,如果需要更改dns伺服器,請記得先unlock

2015/12/14:作者是已經解決了問題後,才來打了這邊筆記方便自己以後使用的,所以關於自動產生resolv.conf的script檔在哪裡暫時沒找到,所以留空。

以上。

參考文件
http://askubuntu.com/questions/58781/resolv-conf-keeps-getting-reset-by-something
https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=57388

沒有留言:

張貼留言