沉默的Linux網(wǎng)管利器NetworkManager
Firefox 和OpenOffice之類(lèi)的應(yīng)用軟件占據(jù)了所有的光輝,因?yàn)樗鼈兛吹靡?jiàn)摸得著,是自由桌面的基石型應(yīng)用。但那些靜靜地運(yùn)行在后臺(tái),默默地完成它們工作的程序呢,是不是除非碰到bug之外就直接被忽略掉?其中這樣一個(gè)重要而未被歌頌過(guò),但Linux用戶卻不可缺少的軟件就是NetworkManager。
什么是NetworkManager?
NetworkManager由幾個(gè)部分組成:一個(gè)管理系統(tǒng)網(wǎng)絡(luò)連接、并且將其狀態(tài)通過(guò)D-BUS進(jìn)行報(bào)告的后臺(tái)服務(wù),以及一個(gè)允許用戶管理網(wǎng)絡(luò)連接的客戶端程序。開(kāi)發(fā)NetworkManager的初衷是簡(jiǎn)化網(wǎng)絡(luò)連接的工作,讓桌面本身和其他應(yīng)用程序能感知網(wǎng)絡(luò)。
絕大部分用戶不必關(guān)心NetworkManager的后臺(tái)服務(wù),他們只通過(guò)GUI的applets來(lái)管理網(wǎng)絡(luò)連接。對(duì)于GNOME和Xfce那就是nm-applet工具,而對(duì)于KDE用戶來(lái)說(shuō)就是KNetworkManager了。
許多Linux用戶不記得,甚至根本不曾認(rèn)識(shí)到在早期Linux里面管理網(wǎng)絡(luò)連接時(shí)的那種折騰與痛苦。尤其是對(duì)于筆記本用戶這種需要連接到兩個(gè)甚至更多網(wǎng) 絡(luò)的情況。雖然早期版本的NetworkManager用起來(lái)也是一種痛苦(那個(gè)時(shí)候曾經(jīng)有個(gè)外號(hào)叫NetworkMangler,即網(wǎng)絡(luò)磨肉機(jī)),不過(guò)現(xiàn)在它已經(jīng)成為了一個(gè)強(qiáng)大的工具,讓管理網(wǎng)絡(luò)不再痛苦。
比如說(shuō)吧,我記得兩年前我把我的Verizon無(wú)線EV-DO卡裝入openSUSE 11.0的時(shí)候,NetworkManager根本不需要任何設(shè)置。它識(shí)別了這張卡,并且出現(xiàn)在GNOME工具欄的下拉菜單里面,唯一須要進(jìn)行的操作就是 點(diǎn)擊“連接”。這是這些年來(lái)我碰到的最簡(jiǎn)單的配置無(wú)線網(wǎng)卡的方式。
不過(guò)總是有需要改進(jìn)的地方,因此NetworkManager也在繼續(xù)發(fā)展。即將到來(lái)的0.8.1版本已經(jīng)可以在Fedora 13中找到,帶來(lái)了許許多多的改進(jìn)和新功能。
0.8.1的新功能
***版本的NetworkManager包括了許多新的特征,其中絕大部分都跟支持更多的的網(wǎng)絡(luò)設(shè)備有關(guān)。移動(dòng)用戶將會(huì)很喜歡這個(gè)版本,因?yàn)?.8.1增加了用于GSM、UMTS和CDMA卡等移動(dòng)寬帶設(shè)備ModemManager的支持。使用ModemManager也有新的功能,比如信號(hào)強(qiáng)度顯示和選擇2G/3G模式的功能。***(當(dāng)然并不止這些),你還可以關(guān)掉漫游功能以避免產(chǎn)生額外的連接費(fèi)用。
0.8.1還支持使用藍(lán)牙,不僅支持個(gè)人區(qū)域網(wǎng)絡(luò)(PAN)上網(wǎng),也支持老的藍(lán)牙撥號(hào)網(wǎng)絡(luò)(DUN)協(xié)議。所有(或者說(shuō)最多)支持的設(shè)備可以在wiki上找到。
如果你是為數(shù)不多的使用IPv6聯(lián)網(wǎng)的用戶之一(事實(shí)上他們發(fā)誓以后每個(gè)人都會(huì)用上),你會(huì)很高興地發(fā)現(xiàn)現(xiàn)在NetworkManager支持IPv6的自動(dòng)配置和靜態(tài)IP了。0.8.1版本還會(huì)帶來(lái)IPv6的DHCP支持。
盡管大多數(shù)最近的改變都是增強(qiáng)設(shè)備或者協(xié)議的支持,可0.8.1也同樣給我們代來(lái)了一個(gè)新的漂亮的客戶端界面。
命令行接口
在我看來(lái),0.8.1中最有趣的特征是nmcli,一個(gè)NetworkManager的命令行接口。雖然NetworkManager在管理網(wǎng)絡(luò)連接方面有著巨大的飛躍,但是有一點(diǎn)倒退到老風(fēng)格的管理方式的是忽略了命令行接口。只用GUI配置網(wǎng)絡(luò)有錯(cuò)嗎?
有幾個(gè)問(wèn)題。一部分用戶可能沒(méi)有使用能夠方便地支持NetworkManager的applet的桌面環(huán)境或者窗口管理器。有些人或者根本就沒(méi)有使用GUI環(huán)境。用戶也有可能想通過(guò)編寫(xiě)腳本的方式來(lái)管理網(wǎng)絡(luò)接口,如果唯一可用的控制器是GUI的話這會(huì)變得非常困難。
終于,NetworkManager有了自己 的CLI工具,nmcli。使用nmcli用戶可以查詢(xún)網(wǎng)絡(luò)連接的狀態(tài),也可以用來(lái)管理。這個(gè)工具依然有點(diǎn)原始,不過(guò)其語(yǔ)法相對(duì)簡(jiǎn)單,并且對(duì)于那些真正需 要在CLI中使用NetworkManager的人來(lái)說(shuō)并不太難掌握。比如,列舉系統(tǒng)中的網(wǎng)絡(luò)接口只需要運(yùn)行:
nmcli dev list就會(huì)顯示一些類(lèi)似于下面的輸出:
- - Device: eth0 -----------------------------------------------------------------
- Type 802-3-ethernet
- Driver pcnet32
- State connected
- Default no
- HW Address 00:0C:29:C3:87:30
- Capabilities:
- Carrier Detect yes
- Wired Properties
- Carrier on
- IPv4 Settings:
- Address 172.16.146.140
- Prefix 24 (255.255.255.0)
- Gateway 172.16.146.2
- DNS 172.16.146.2
如果你想要關(guān)閉一個(gè)連接,你可以使用諸如nmcli con down id <id>的東西, 這里<id>是某個(gè)連接的ID。nmcli現(xiàn)在還不像ifconfig那樣靈活和功能完善,不過(guò)這僅僅是一個(gè)開(kāi)始。
展望未來(lái)
毫無(wú)疑問(wèn),NetworkManager尚未完成,或許永遠(yuǎn)也不可能完成??傆行碌脑O(shè)備需要支持,新的功能需要增加。另外,NetworkManager在讓許多用戶在使用主流、標(biāo)準(zhǔn)的網(wǎng)絡(luò)配置時(shí)變得簡(jiǎn)便,但未必適應(yīng)那些不常見(jiàn)的配置。
比如,很有可能在0.8.2或者以后版本中出現(xiàn)的功能有 網(wǎng)絡(luò)接口bonding 和為一個(gè)以太網(wǎng)接口 同時(shí)分配一個(gè)PPPoE地址和本地地址。
不管怎么說(shuō),NetworkManager已經(jīng)成為L(zhǎng)inux桌面的一項(xiàng)殺手級(jí)功能。如果你不曾想過(guò)管理家里,辦公室和旅途中的各種網(wǎng)絡(luò)連接是多么的復(fù)雜,那么你可以感謝NetworkManager,是它讓你的生活變得更加輕松。
【編輯推薦】