La siguiente receta pretende conseguir tener conectividad de red en cualquier lugar donde estemos. En mi caso mi laptop tiene una interaz wi-fi y una ethernet 10/100. Asi cuando voy a mi casa puedo tener conectividad wi-fi con ip statica, en el trabajo wi-fi con dhcp y algunas veces ehternet con ip stática. Modificar los valores cada vez que me muevo de un lugar a otro se ha vuelto tedioso, Debian me lo facilita. Las indicaciones pueden ser llevadas a otra distrubución con algún ligero cambio, recuerden que al final es GNU/Linux.
Necesitamos las herramientas:
ifplugd : monitorea si se establece link en la capa física (por ejemplo si un cable de red es conectado o si existe una asociación wireless activa);
wpagui : maneja la asociación wireless con un accesspoint;
guessnet : nos da herramientas para detectar a cual red estamos conectados;
resolvconf : para entender la configuración de los servidores de nombre en /etc/network/interfaces;
aptitude install ifplugd wpagui guessnet resolvconf
Lo siguiente es realizar la configuracion, para esto es recomendable detener la red y los dispositivos de red:
ifdown eth0
ifdown wlan0
/etc/init.d/wpasupplicant stop
/etc/init.d/ifplugd stop
Capa física:
Editamos /etc/default/wpasupplicant y agregamos:
ENABLED=1
OPTIONS="-D wext -i wlan0 -c /etc/wpa_supplicant.conf"
/etc/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
eapol_version=1
ap_scan=1
fast_reauth=1
### Example of basic WPA-PSK secured AP
#network={
# ssid="ournet"
# psk="w243sd5f324asdf5123sadf54324"
#}
### Associate with any open access point
### Scans/ESSID changes can be done with wpa_cli
network={
ssid=""
key_mgmt=NONE
}
Esta config (es la que viene por defecto) permitirá que nos asociemos a cualquer accesspoint. En mi caso tengo uno en casa y uno en el trabajo.
/etc/init.d/wpasupplicant start
iwconfig
Ahora nos centramos en /etc/network/interfaces para realizar la configuracion de los parámetros para cada red.
# The loopback network interface
auto lo
iface lo inet loopback
# ifplugd se encarga de activar las interfaces, no las activamos al inicio:
noauto eth0 eth1
# ambas interfaces son manejadas automaticamente
mapping eth0 wlan0
script guessnet-ifupdown
map default: outside
map timeout: 3
map verbose: true
iface home inet static
address 192.168.0.29
netmask 255.255.255.240
broadcast 192.168.0.31
gateway 192.168.0.17
dns-search manta.telconet.net
dns-nameservers 192.168.0.2
test peer address 192.168.0.17 mac 00:30:48:72:9a:ba
iface outside inet dhcp
Esta configuración hace que eth0 o wlan0 sean configuradas si el host 200.93.220.17 con mac address 00:30:48:72:9a:ba es o no encontrado. Si es encontrado, entonces tomará una dirección estática. Si no, tratará con dhcp.
Estoy utilizando suspend2 para hibernar mi laptop, es necesaria agregar las siguientes líneas en /etc/hibernate/hibernate.conf :
RestartServices ifplugd
Esta receta me esta funcionando, existen otras maneras como por ejemplo utilizando whereami o NetworkManager para gnome (http://www.gnome.org/projects/NetworkManager/) pero no las he probado.