Configurar la Wifi estática en Raspbian Stretch Lite puede convertirse en una tarea complicada.
Algo que parece facil, ha llegado a complicarse un poco con las actualizaciones del sistema operativo Raspbian y los nuevos cambios en los kernel de Linux.
CONTENIDOS:
- Diferencias entre /etc/network/interfaces y /etc/dhcpcd.conf
- ¿Qué pasaría si nos ponemos a trastear en el archivo /etc/network/interfaces para asignar IP estática en interfaz Wlan (WIFI) ?
Decimos que se ha complicado porque el funcionamiento que se consideraba habitual (a través del archivo /etc/network/interfaces) ha cambiado (aunque el archivo interfaces siga siendo compatible).
Hace tiempo (y actualmente también funciona, aunque se desaconseja) se usaba el archivo /etc/network/interfaces para declarar las interfaces y configurarlas como estáticas o dinámicas (dhcp), la máscara de red, la gateway, en el caso del wifi se configuraba también el ssid y la clave wifi … lo típico, vamos.
Hoy día, en 2019, con Raspbian Stretch, y tras las diversas actualizaciones de Raspbian, la forma más adecuada de configurar la red en Raspberry para configurar una IP estática en lugar de dinámica, es por medio del archivo /etc/dhcpcd.conf (aunque también hemos de revisar el archivo /etc/network/interfaces) y para conectar a la red wifi pondremos su configuración en /etc/wpa_supplicant .conf.
De hecho, en la parte superior del archivo interfaces podremos leer:
# Please note that this file is written to be used with dhcpcd # For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf' |
O sea:
# Tenga en cuenta que este archivo está escrito para ser usado con dhcpcd
# Para IP estática, consulte /etc/dhcpcd.conf y ‘man dhcpcd.conf’
Más claro agua .. pero desde aquí lo vamos a explicar y mostrar cómo realizar la configuración correctamente.
¿Qué pasaría si nos ponemos a trastear en el archivo /etc/network/interfaces para asignar IP estática en interfaz Wlan (WIFI) ?
Si no editamos correctamente el archivo /etc/network interfaces y el /etc/dhcpcd.conf, tendremos problemas de red y de servicios (concrétamente en el log podremos ver errores que vienen del servicio networking y del servicio dhcpcd).
Los archivos que entran en juego para configurar correctamente el Wifi en Raspbian, son:
- Archivo /etc/network/interfaces
- archivo /etc/dhcpcd.conf
- Archivo /etc/wpa_supplicant/wpa_supplicant.conf
—> Vamos a ver cómo tendría que quedar los archivos de configuración para activar la red Wifi correctamente:
El archivo /etc/network/interfaces
El archivo /etc/network/interfaces hemos de dejarlo casi sin cambios. Digo casi, porque la red no la configuraremos con este archivo, sino con el archivo dhcpcd.conf, pero sí que hemos de cambiar una línea para que la interfaz eth0 funcione y el servicio dhcpcd no nos de un error.
—> ¿qué hay que cambiar en este archivo?:
Ya que vamos a configurar el Wifi a través del archivo dhcpd.conf, y vamos a modificarlo, la configuración de red se regirá por dicho archivo. Así que en la interfaz eth0, lo dejaremos como “manual“.
Después, cuando el servicio dhcpcd vaya a buscar la configuración al archivo dhcpcd.conf, y no encuentre nada relativo a la interfaz eth0, le asignará una dirección dinámica.
Y a la interfaz wlan le asignará la dirección estática que después veremos cómo configurar en el archivo dhcpcd.conf.
—> en la interfaz eth0, hemos de cambiar la opción “dhcp” por “manual“.
Cambios en el archivo /etc/network/interfaces
# Please note that this file is written to be used with dhcpcd # For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf' # Include files from /etc/network/interfaces.d: source-directory /etc/network/interfaces.d auto lo iface lo inet loopback auto eth0 iface eth0 inet manual allow-hotplug wlan0 iface wlan0 inet manual wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf |
Resumen de configuración del archivo /etc/network/interfaces
- La interfaz Loopback se declara como auto y como tipo loopback
- la interfaz cableada eth0 se declara como auto y como tipo manual, no static. Así usará el archivo dhcpcd.conf al igual que la interfaz wifi wlan.
- la interfaz wlan0 se declara como conexión en caliente, tipo manual (usará la config de dhcpcd.conf), y usará el archivo wpa_suppplicant para conectar a las redes wifi.
Configuración del archivo /etc/dhcpdcd.conf
Ahora veremos lo que hemos de modificar en el archivo /etc/dhcpcd.conf, para que las interfaces eth0 y wlan0 funcionen, así como las configuraciones de iP estática (cuando lo deseemos):
#interface wlan0 ssid myssid # aquí en lugar de "interface wlan0" podríamos poner "ssid NOMBRE_DEL_SSID" # De esa forma, la interfaz se configurará con la IP estática que hayamos configurado en cada SSID. |
static ip_address=192.168.0.19/24 static routers=192.168.0.1 static domain_name_servers=192.168.0.1 8.8.8.8 |
Resumen y explicación de la configuración del archivo /etc/dhcpcd.conf
- Vemos que la interfaz Wlan0 utiliza una IP estática. Además vemos que hemos cambiado la línea donde declaramos la interfaz wlan0:
interface wlan0 |
por el SSID al que se conectará:
ssid myssid |
- Como no hemos declarado nada de la interfaz eth0, se configurará dinámicamente. Si quisiéramos que eth0 tuviera una configuración estática, la configuraríamos igual que la interfaz wlan0, con la excepción de que dejaríamos la línea que define la interfaz (ya que no se conectará a un SSID, sino a la red cableada), así:
interface eth0 |
y después la configuración de
ip_address routers domain_name_servers |
*Nótese que en el archivo /etc/network/interfaces, como comentábamos antes, la interfaz eth0 la hemos declarado como manual, no como dhcp, que era lo habitual al utilizar el archivo /etc/network/interfaces
Cuando realicemos cambios en el archivo dhcpcd.conf, hemos de ejecutar los comandos:
systemctl daemon-reload |
y
systemctl restart dhcpcd.service |
Configurar clave y encriptación de la red Wifi en el archivo wpa_supplicant.conf
Para configurar la conexión WiFi por SSH tenemos que editar el archivo /etc/wpa_supplicant/wpa_supplicant.conf y añadir al final del archivo las siguientes líneas:
network={ ssid="MIREDWIFI" psk="AFE2FE7BC2cmgfu4khgls" key_mgmt=WPA-PSK } |
Comprobar Errores de Configuración en el archivo /etc/wpa_supplicant/wpa_supplicant.conf
Si con la configuración de dhcpcd.conf, la wifi no funciona o no conecta correctamente, podemos probar a configurar la wifi desde /etc/network/interfaces, así:
allow-hotplug wlan0 auto wlan0 iface wlan0 inet dhcp wpa-ssid "MISSID" wpa-psk "c6a295a4" |
- comentamos las líneas referentes a wpa_supplicant.conf
- paramos el servicio dhcpcd.service
- reiniciamos el servicio networking
- y comprobamos si la wifi está conectada.
Si funciona así, es que tenemos un error en el archivo wpa_supplicant.conf. Así que tendremos que revisarlo y comprobar que las opciones que hemos introducido son correctas.
Conectar a red wifi desde la terminal de Linux
Podemos realizar la conexión wifi desde la terminal Linux con este comando:
sudo wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf |
Pero si el proceso wpa_supplicant ya está funcionando preciamente, tendremos que matar el proceso wpa_supplicant primero, porque sino no podremos conectar por wifi; podremos ver errores relacionados en el log.
Matar procesos wpa_supplicant
Para matar los procesos wpa_supplicant existentes, podremos hacerlo así:
killall wpa_supplicant |
o
sudo kill -9 $(pidof wpa_supplicant) |
Después volvemos a ejecutar el comando anterior para conectar por terminal al wifi, o simplemente activamos la wifi y dejamos que se conecte con las opciones que ya hemos configurado previamente, con el comando:
ifup wlan0 |