Configurar la red para cualquier lado

Imagen de RazaMetaL

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.