There are various ways of managing multiple network profiles in Ubuntu, but I've never been a fan of NetworkManager. Commandlines work for me very well, and even there - multiple solutions exist with the help of packages like resolvconf etc. Here's my setup which is very Debian-ish and depends on this nice package called ifupdown.
First, there's the /etc/network/interfaces file :
# we always want the loopback auto lo iface lo inet loopback # mappings mapping eth0 script /etc/network/map-scheme map dhcp eth0-dhcp map emergency eth0-emergency mapping ath0 script /etc/network/map-scheme map office ath0-office map home ath0-home iface eth0-dhcp inet dhcp up iptables -F up lokkit -n -q --high --dhcp up /etc/init.d/lokkit restart iface ath0-office inet dhcp wpa-driver madwifi wpa-conf /etc/wpa_supplicant/office.conf up iptables -F up lokkit -n -q --high --dhcp up /etc/init.d/lokkit restart iface eth0-emergency inet static address 10.9.5.201 gateway 10.9.4.1 netmask 255.255.254.0 up iptables -F up lokkit -q --high up echo nameserver 172.31.6.5 > /etc/resolv.conf up echo nameserver 203.197.12.30 >> /etc/resolv.conf iface ath0-home inet dhcp wpa-driver madwifi wpa-conf /etc/wpa_supplicant/home.conf up iptables -F up lokkit -n -q --high --dhcp up /etc/init.d/lokkit restart
Notice the mappings section (and see 'man interfaces') - that allows me to say :
NETSCHEME="home" sudo ifup ath0
or
NETSCHEME="office" sudo ifup ath0
because the specified script (/etc/network/map-scheme) just looks up the NETSCHEME environment variable and spit out the correct mapping to go to. This thing, by the way, could be rigged to do arbitrarily complex tasks (look in /usr/share/doc/ifupdown/examples/ for sample scripts, including one which tries to ping some known IPs, and decides its location/profile based on successful pings - you could write one which looks for all known wireless SSIDs and then decide which profile to switch to). Here's my trivial script :
#!/usr/bin/perl -w
use strict;
my $scheme = $ENV{NETSCHEME} || "home";
while(<>) {
if ( s/$scheme\s+// ) {
print;
}
}
The conf files in /etc/wpa_supplicant/* are of course wpa_supplicant configuration files. See 'man wpa_supplicant.conf' for details.