Pain-free networking is the promise that the NetworkManager project makes. NetworkManager ships with most major Linux distributions now and is, by default, enabled at boot time. For mobile laptop users NetworkManager is great, but its usefulness is questionable for desktops and server deployments. This week we will introduce NetworkManager and its features (and drawbacks), followed by a Cisco VPN Client how-to next week.
The Premise of the Promise
The NetworkManager project believes that pain-free networking should be possible for laptop users. Everything should just work, as it typically does in OS X and Windows. If you unplug your CAT-5 cable and there is wireless available, you should be automatically connected to the Wi-Fi network so you may continue working. Likewise, when you return to your desk, NetworkManager should automatically connect to the faster wired network. This is how it works in every other operating system, so generally speaking this is a move in the right direction for Linux.
NetworkManager also seeks to be the authoritative source of network state information. Given that NetworkManager should know what type of network you are connected to, it is well positioned to provide information to applications. Using dbus and hal, NetworkManager provides interfaces for applications to query for network state and network speed, which allows them to adjust their behavior accordingly. The example given on the project's Web page is that your computer should not try to update itself when there is no networking, nor when connected to a pay-per-KB GSM network.
NetworkManager supports the standard wired and wireless network types. That is, it automatically detects available devices and attempts to use them. If eth0 (the first wired network card) has a link, it will automatically try to connect to the network using DHCP. If a previously used wireless network is available, the same thing happens. You can either select an available network via the GNOME desktop applet, or you can open the NetworkManager GUI to configure most aspects of these connections manually. DSL is also supported in the interface, but it a tad trickier to configure due to the wide variety of devices and link-layer protocols used by service providers.
Mobile broadband support is also available in NetworkManager. Mobile broadband is the data your cellular phone uses. If your phone supports it, and the appropriate driver is installed, you can tether your phone via USB cable and it can be used as a modem. More common these days however, are the mobile broadband USB cards. NetworkManager detects these just like Wi-Fi cards now, and allows you to configure the network connection via the GUI. One major difference with a mobile broadband type of connection is that it does not ever automatically connect. The logic is that most mobile broadband connections are pay-per-use, so NetworkManager does not want to automatically start using the connection without the user's knowledge. If you have unlimited data, this setting can be changed: edit the connection and select "connect automatically" on the first page.
NetworkManager also provides a neat way to configure VPN connections. OpenVPN, Cisco VPNs, and even Microsoft's PPTP VPN are all supported, once the appropriate plugin is installed. Some of these are more painful to configure than others, but surprisingly PPTP is quite easy in Ubuntu. After installing the network-manager-pptp package, NetworkManager will allow you to create a new PPTP connection via the GUI. A VPN connection in NetworkManager can be configured to connect automatically or manually, as desired by the user. Next week, we will get into the details of making the Cisco VPN client work.