I’m running Kubuntu Gutsy Gibbon (7.10) on one of my main workstations. As with its sibling Ubuntu, it’s an endlessly-entertaining blend of really nice stuff and really irritating stuff.
The nice stuff is nearly-current releases of fast-moving applications like KDE, Digikam, Krita, KWord, and other apps that I use a lot, easy-on-the-eyes graphics, a good set of default applications, and nicely-organized menus.
The irritating stuff is they still don’t pay enough attention to delivering reliable basic functionality in core functions like networking and printing.
Both often require manual tweakage to get them to work correctly, and even then you may be foiled by a Helpful Daemon.
NetworkManager is the newest addition to my Helpful Daemon hit list. I have two wired Ethernet interfaces on this box. One is configured and active, eth1, and one is not, which is eth0.
The correct behavior is for any unconfigured NIC to be ignored by the system. But no. NetworkManager, which is installed by default on Gutsy, thinks it knows better than me how to manage my interfaces. This is what the Release Notes say:
In Ubuntu 7.10, network-manager only manages interfaces that are marked for roaming. Thus, all interfaces that were previously managed by network-manager will be set to roaming mode during upgrade.
Technically, this takes any interface stanzas using the dhcp method with no options and that are marked auto, and removes them from /etc/network/interfaces. If you rely on your interfaces being started by ifupdown when the system starts up, you need to re-enable them in /etc/network/interfaces manually, or disable roaming in System -> Administration -> Network.
I read that a dozen times and I’m still not sure what it means, except it’s clear that NetworkManager is interfering unhelpfully. I never marked any interfaces for roaming, and when I create an entry in /etc/network/interfaces it is for a purpose, not because I’m bored and don’t care what happens.
The result of this brilliant bit of engineering is NetworkManager started eth0 and plucked an address for it from my DHCP server, with the result that both interfaces were on the same subnet, 192.168.1.0/24.
Which means no networking, because you can’t have two interfaces on one box on the same subnet. Nothing works.[Update: An excellent reader pointed out that you can have two interfaces on one PC on the same subnet. So something else was responsible for the loss of connectivity. There are some twists and turns to this that we shall explore in the future.]
So after finding the relevant nugget in the Release Notes, I gave eth0 a minimal configuration just to shut up NetworkManager. But NetworkManager still had to sticks its oar in–it didn’t configure eth0, but it still brought it up in a weird half-baked way:
eth0 Link encap:Ethernet HWaddr 00:01:11:00:11:CF
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:16 Base address:0xd400
eth1 Link encap: Ethernet HWaddr 00:22:62:22:7E:22 inet addr:192.168.1.10 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::20b:6aff:feef:7e8d/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:12709 errors:0 dropped:0 overruns:0 frame:0 TX packets:11869 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:13013566 (12.4 MB) TX bytes:1768011 (1.6 MB) Interrupt:19 Base address:0xbc00
ifconfig with no options only displays up interfaces. eth0 is not marked as up, so what the heck is it doing there?
So then I tried System Settings -> Network Settings, and unchecked “activate when the computer starts.” That made no difference.
So I removed NetworkManager, and that cured everything. Untangling NetworkManager, HAL, Avahi, udev, ifupdown, and the interfaces file to try to figure out who’s doing what is a beastly job–please, for the love of $deity, quit trying to be so darned helpful.