The current Ubuntu versions are (in my oppinion) a big step backwards in terms of reliability. For example last week, I wasted quite a lot of time working around various breackage in the networking area.
Especially high brain-damage can be experienced by using the ifup/ifdown network configuration, because it only does half of the work, when you are lucky. Right now, for example, my machine here lacks it's ipv6-address, even though it's clearly configured in /etc/network/interfaces as it should. Now if I try to ifup manually, it fails because of the already configured ipv4-half... and ifdown fails because of the non configured ipv6 half. If I manually flush the addresess, ifup does the right thing though... but ifup just blindly running the network configuration commands and failing on the first one signalling an error is just BAD, BAD, BAD!
Things like secondary ip-addresses added with the up directive seem to work even less often....
The second-to-most-painful thing is the udev scripts that now merrily rename your network interfaces according to /etc/iftab, a very bright move that --combined with the abomination that is NetworkManager-- can make the unsuspecting administrator hunt for non-existing configurations for hours!
To add insult to injury, the NetworkManager manual-page says (emphasis mine):
The NetworkManager daemon attempts to keep an active network connection available at all times. The point of NetworkManager is to make networking configuration and setup as painless and automatic as possible. If using DHCP, NetworkManager is intended to replace default routes, obtain IP addresses from a DHCP server, and change nameservers whenever it sees fit, with the aim of making networking Just Work.The obvious solution to all that idiocy of course is to just ignore the non working amatuer work and fall back to the method that already worked in Slackware, 1995. That's what I call progress.
ip link set lo up
ip -f inet addr flush dev lo
ip addr add 127.0.0.1/32 dev lo
ip link set eth0 up
ip -f inet addr flush dev eth0
ip addr add 18.104.22.168/24 broadcast 22.214.171.124 dev eth0
ip route add default via 126.96.36.199
# ... add ipv6 stuff here...