CONTENIDOS:
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.
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:
—> 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 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“.
# 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
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
interface wlan0
por el SSID al que se conectará:
ssid myssid
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
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 }
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"
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.
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.
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