Firefox 和OpenOffice之类的应用软件占据了所有的光辉,因为它们看得见摸得着,是自由桌面的基石型应用。但那些静静地运行在后台,默默地完成它们工作的 程序呢,是不是除非碰到bug之外就直接被忽略掉?其中这样一个重要而未被歌颂过,但Linux用户却不可缺少的软件就是NetworkManager。
什么是NetworkManager?
NetworkManager由几个部分组成:一个管理系统网络连接、并且将其状态通过D-BUS进行报告的后台服务,以及一个允许用户管理网络连接的客户端程序。开发NetworkManager的初衷是简化网络连接的工作,让桌面本身和其他应用程序能感知网络。
绝大部分用户不必关心NetworkManager的后台服务,他们只通过GUI的applets来管理网络连接。对于GNOME和Xfce那就是nm-applet工具,而对于KDE用户来说就是KNetworkManager了。
许多Linux用户不记得,甚至根本不曾认识到在早期Linux里面管理网络连接时的那种折腾与痛苦。尤其是对于笔记本用户这种需要连接到两个甚至 更多网 络的情况。虽然早期版本的NetworkManager用起来也是一种痛苦(那个时候曾经有个外号叫NetworkMangler,即网络磨肉机),不过 现在它已经成为了一个强大的工具,让管理网络不再痛苦。
比如说吧,我记得两年前我把我的Verizon无线EV-DO卡装入openSUSE 11.0的时候,NetworkManager根本不需要任何设置。它识别了这张卡,并且出现在GNOME工具栏的下拉菜单里面,唯一须要进行的操作就是 点击“连接”。这是这些年来我碰到的最简单的配置无线网卡的方式。
不过总是有需要改进的地方,因此NetworkManager也在继续发展。即将到来的0.8.1版本已经可以在Fedora 13中找到,带来了许许多多的改进和新功能。
0.8.1的新功能
最新版本的NetworkManager包括了许多新的特征,其中绝大部分都跟支持更多的的网络设备有关。移动用户将会很喜欢这个版本,因为 0.8.1增加了用于GSM、UMTS和CDMA卡等移动宽带设备ModemManager的支持。使用ModemManager也有新的功能,比如信号 强度显示和选择2G/3G模式的功能。最后(当然并不止这些),你还可以关掉漫游功能以避免产生额外的连接费用。
0.8.1还支持使用蓝牙,不仅支持个人区域网络(PAN)上网,也支持老的蓝牙拨号网络(DUN)协议。所有(或者说最多)支持的设备可以在wiki上找到。
如果你是为数不多的使用IPv6联网的用户之一(事实上他们发誓以后每个人都会用上),你会很高兴地发现现在NetworkManager支持IPv6的自动配置和静态IP了。0.8.1版本还会带来IPv6的DHCP支持。
尽管大多数最近的改变都是增强设备或者协议的支持,可0.8.1也同样给我们代来了一个新的漂亮的客户端界面。
命令行接口
在我看来,0.8.1中最有趣的特征是nmcli,一个NetworkManager的命令行接口。虽然NetworkManager在管理网络连接方面有着巨大的飞跃,但是有一点倒退到老风格的管理方式的是忽略了命令行接口。只用GUI配置网络有错吗?
有几个问题。一部分用户可能没有使用能够方便地支持NetworkManager的applet的桌面环境或者窗口管理器。有些人或者根本就没有使用GUI环境。用户也有可能想通过编写脚本的方式来管理网络接口,如果唯一可用的控制器是GUI的话这会变得非常困难。
终于,NetworkManager有了自己 的CLI工具,nmcli。使用nmcli用户可以查询网络连接的状态,也可以用来管理。这个工具依然有点原始,不过其语法相对简单,并且对于那些真正需 要在CLI中使用NetworkManager的人来说并不太难掌握。比如,列举系统中的网络接口只需要运行:
nmcli dev list就会显示一些类似于下面的输出:
- - 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
-
如果你想要关闭一个连接,你可以使用诸如nmcli con down id <id>的东西, 这里<id>是某个连接的ID。nmcli现在还不像ifconfig那样灵活和功能完善,不过这仅仅是一个开始。
展望未来
毫无疑问,NetworkManager尚未完成,或许永远也不可能完成。总有新的设备需要支持,新的功能需要增加。另外,NetworkManager在让许多用户在使用主流、标准的网络配置时变得简便,但未必适应那些不常见的配置。
比如,很有可能在0.8.2或者以后版本中出现的功能有 网络接口bonding 和为一个以太网接口 同时分配一个PPPoE地址和本地地址。
不管怎么说,NetworkManager已经成为Linux桌面的一项杀手级功能。如果你不曾想过管理家里,办公室和旅途中的各种网络连接是多么的复杂,那么你可以感谢NetworkManager,是它让你的生活变得更加轻松。
来源:oschina
链接:https://my.oschina.net/u/264328/blog/60575