之前我發過一篇文章是透過 Ubuntu + PXE 來建立無磁碟的 Ubuntu 工作環境 https://benjr.tw/1138,但很奇怪的一件事,如果我透過此種方式來安裝 Ubuntu 開機之後無法透過 "NetworkManager Applet" 來設定IP(在工具列可以找到他,或是在 System / Preferences / Network Connections),明明我的系統有 3 個網路埠怎麼在 Network Connections 一個都看不到.
上網查了一下!原因出在 Ubuntu 採用兩種網路卡設定方式,一種類似傳統的設定檔 /etc/networks/interfaces 的方式,而另外一種則是透過 NetworkManager Applet 的管理方式,我想大概是透過 PXE 的 LiveCD 是以設定檔的方式來設定 IP,而 Ubuntu 的 NetworkManager Applet 預設模式是不會去主動管理已經被設定檔所設定過的網卡.以至於無法再設定.那該如何是好呢!!解決方式有2種.
-
修改 NetworkManager 的設定檔
我們先來看 NetworkManager 的設定檔,其設定檔位於 /etc/NetworkManager/NetworkManager.confppny@benjr:$ sudo vi /etc/NetworkManager/NetworkManager.conf [main] plugins=ifupdown,keyfile [ifupdown] managed=false
管理相關的是最後一行敘述 "managed" 當他設為 false (預設值)時,NetworkManager 會直接略過已經在 /etc/networks/interfaces 設定好的網路設備,所以才會造成我們看不到的情況.
關於 plugins=ifupdown,keyfile 請參考 https://benjr.tw/94990 說明
ppny@benjr:$ sudo vi /etc/NetworkManager/NetworkManager.conf [main] plugins=ifupdown,keyfile [ifupdown] managed=true
雖然我們可以將 managed 改為 true ,此時 NetworkManager 就可以管理所有網路裝置(修改 NetworkManager 的設定必須執行 sudo /etc/init.d/network-manager restart 才會生效).ppny@benjr:$ sudo /etc/init.d/network-manager restartppny@benjr:$ sudo service network-manager restart
或是
ppny@benjr:$ sudo initctl restart network-manager
因為 Ubuntu 採用 upstart 的開機模式,舊的指令 (/etc/init.d/network-manager restart) 方式無法使用,須使用 upstart 請參考 System v 與 Upstart 的說明
但還是有一個問題會發生,雖然我們可以透過 NetworkManager 啟動網路裝置,但是卻無法透過 NetworkManager 修改網卡設定值.所以建議使用下面的方式. -
刪除 interfaces
刪除 /etc/network/interfaces 設定內容,比如你的 eth0 需要透過 NetworkManager 來管理就把 interfaces 關於 eth0 的網卡裝置敘述刪除,這樣就可以完全由 NetworkManager 來管理.ppny@benjr:$ sudo vi /etc/network/interfaces # interfaces(5) file used by ifup(8) and ifdown(8) auto lo iface lo inet loopback #auto eth0 #iface eth0 inet loopback
ppny@benjr:$ sudo service network-manager restart
參考文章 http://blog.roodo.com/rocksaying/archives/11777065.html
5 thoughts on “Ubuntu – NetworkManager”