環境: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
沒有留言:
張貼留言