En este tutorial, vamos a aprender a conectarnos a la red Wi-Fi desde la línea de comandos en el servidor y el escritorio de Ubuntu 18.04/20.04 utilizando wpa_supplicant. En una red inalámbrica doméstica moderna, las comunicaciones están protegidas con WPA-PSK (clave precompartida) a diferencia de WPA-Enterprise, que está diseñada para redes empresariales. WPA-PSK también se conoce como WPA-Personal. wpa_supplicant es una implementación del componente WPA supplicant. Un suplicante en la LAN inalámbrica es un software cliente instalado en el ordenador del usuario final que necesita ser autenticado para unirse a una red.
Paso 1: Encuentre el nombre de su interfaz inalámbrica y de la red inalámbrica
Ejecute el comando iwconfig
para encontrar el nombre de su interfaz inalámbrica.
iwconfig
wlan0
solía ser un nombre común para la interfaz de red inalámbrica en sistemas Linux sin Systemd. Debido a que Ubuntu utiliza Systemd, vas a encontrar que tu interfaz de red inalámbrica se llama algo así como wlp4s0
. También puedes ver que no está asociada a ningún punto de acceso en este momento.
Si tu interfaz inalámbrica no se muestra, tal vez necesites hacerla aparecer con el siguiente comando.
sudo ifconfig wlp4s0 up
Entonces encuentra el nombre de tu red inalámbrica escaneando las redes cercanas con el siguiente comando. Sustituye wlp4s0
por el nombre de tu propia interfaz inalámbrica. ESSID es el identificador del nombre de la red.
sudo iwlist wlp4s0 scan | grep ESSID
Paso 2: Conectar a la red Wi-Fi con WPA_Supplicant
Ahora instala wpa_supplicant
en Ubuntu 18.04/20.04 desde el repositorio de software por defecto.
sudo apt install wpasupplicant
Necesitamos crear un archivo llamado wpa_supplicant.conf
utilizando la utilidad wpa_passphrase
wpa_supplicant.conf
es el archivo de configuración que describe todas las redes a las que el usuario quiere que se conecte el ordenador. Ejecute el siguiente comando para crear este archivo. Sustituye el ESSID y la frase de contraseña Wi-Fi por los tuyos.
wpa_passphrase your-ESSID your-wifi-passphrase | sudo tee /etc/wpa_supplicant.conf
Nota que en la captura de pantalla anterior, he envuelto mi ESSID con comillas dobles, porque mi ESSID contiene un espacio en blanco.
La salida del comando wpa_passphrase
se canalizará a tee
, y luego se escribirá en el archivo /etc/wpa_supplicant.conf
. Ahora usa el siguiente comando para conectar tu tarjeta inalámbrica al punto de acceso inalámbrico.
sudo wpa_supplicant -c /etc/wpa_supplicant.conf -i wlp4s0
La siguiente salida indica que tu tarjeta inalámbrica está conectada con éxito a un punto de acceso.
Successfully initialized wpa_supplicantwlp4s0: SME: Trying to authenticate with c5:4a:21:53:ac:eb (SSID='LinuxBabe.Com Network' freq=2437 MHz)wlp4s0: Trying to associate with c5:4a:21:53:ac:eb (SSID='LinuxBabe.Com Network' freq=2437 MHz)wlp4s0: Associated with c5:4a:21:53:ac:ebwlp4s0: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0wlp4s0: WPA: Key negotiation completed with c5:4a:21:53:ac:eb wlp4s0: CTRL-EVENT-CONNECTED - Connection to c5:4a:21:53:ac:eb completed
Tenga en cuenta que si está utilizando la edición de escritorio de Ubuntu, entonces necesita detener el Administrador de red con el siguiente comando, de lo contrario causará problemas de conexión cuando utilice wpa_supplicant.
sudo systemctl stop NetworkManager
Y desactiva el inicio automático de NeworkManager en el arranque ejecutando el siguiente comando.
sudo systemctl disable NetworkManager-wait-online NetworkManager-dispatcher NetworkManager
Por defecto, wpa_supplicant se ejecuta en primer plano. Si la conexión se completa, entonces abre otra ventana de terminal y ejecuta
iwconfig
Puedes ver que la interfaz inalámbrica está ahora asociada a un punto de acceso.
Puedes pulsar CTRL+C
para detener el proceso actual de wpa_supplicant y ejecutarlo en segundo plano añadiendo el flag -B
.
sudo wpa_supplicant -B -c /etc/wpa_supplicant.conf -i wlp4s0
Aunque estamos autenticados y conectados a la red inalámbrica, pero aún no tenemos una dirección IP. Para obtener una dirección IP privada desde el servidor DHCP, utilice el siguiente comando:
sudo dhclient wlp4s0
Ahora su interfaz inalámbrica tiene una dirección IP privada, que se puede mostrar con:
ip addr show wlp4s0
Ahora puedes acceder a Internet. Para liberar la dirección IP privada, ejecuta
sudo dhclient wlp4s0 -r
Conexión a la red inalámbrica oculta
Si tu router inalámbrico no emite ESSID, entonces necesitas añadir la siguiente línea en el archivo /etc/wpa_supplicant.conf
.
scan_ssid=1
Como a continuación:
network={ ssid="LinuxBabe.Com Network" #psk="12345qwert" psk=68add4c5fee7dc3d0dac810f89b805d6d147c01e281f07f475a3e0195 scan_ssid=1}
Paso 3: Conectar automáticamente en el arranque
Para conectarse automáticamente a la red inalámbrica en el arranque, necesitamos editar el archivo wpa_supplicant.service
. Es una buena idea copiar el archivo del directorio /lib/systemd/system/
al directorio /etc/systemd/system/
, y luego editar el contenido del archivo, porque no queremos que una versión más nueva de wpa_supplicant
anule nuestras modificaciones.
sudo cp /lib/systemd/system/wpa_supplicant.service /etc/systemd/system/wpa_supplicant.service
Edita el archivo con un editor de texto de línea de comandos, como Nano.
sudo nano /etc/systemd/system/wpa_supplicant.service
Busca la siguiente línea.
ExecStart=/sbin/wpa_supplicant -u -s -O /run/wpa_supplicant
Cámbiala por lo siguiente. Aquí añadimos el archivo de configuración y el nombre de la interfaz inalámbrica al comando ExecStart
.
ExecStart=/sbin/wpa_supplicant -u -s -c /etc/wpa_supplicant.conf -i wlp4s0
Se recomienda intentar siempre reiniciar wpa_supplicant cuando se detecte un fallo. Añade lo siguiente justo debajo de la línea ExecStart
.
Restart=always
Si encuentras la siguiente línea en este archivo, coméntala (Añade el carácter # al principio de la línea).
Alias=dbus-fi.w1.wpa_supplicant1.service
Guarda y cierra el archivo. (Para guardar un archivo en el editor de texto Nano, pulsa Ctrl+O
, luego pulsa Enter
para confirmar. Para salir, pulse Ctrl+X
.) A continuación, recargue systemd.
sudo systemctl daemon-reload
Habilite el servicio wpa_supplicant para que se inicie en el arranque.
sudo systemctl enable wpa_supplicant.service
También necesitamos iniciar dhclient
en el arranque para obtener una dirección IP privada del servidor DHCP. Esto se puede conseguir creando una unidad de servicio systemd para dhclient
.
sudo nano /etc/systemd/system/dhclient.service
Coloca el siguiente texto en el archivo.
Description= DHCP ClientBefore=network.targetAfter=wpa_supplicant.serviceType=forkingExecStart=/sbin/dhclient wlp4s0 -vExecStop=/sbin/dhclient wlp4s0 -rRestart=always WantedBy=multi-user.target
Guarda y cierra el archivo. A continuación, habilita este servicio.
sudo systemctl enable dhclient.service
Cómo obtener una dirección IP estática
Si quieres obtener una dirección IP estática, entonces tienes que desactivar dhclient.service
.
sudo systemctl disable dhclient.service
Necesitamos usar netplan para configurar la dirección IP estática en Ubuntu 18.04/20.04. Crear un archivo de configuración en /etc/netplan/
.
sudo nano /etc/netplan/10-wifi.yaml
Añadir las siguientes líneas a este archivo. Sustituye 192.168.0.102
por tu dirección IP preferida. Tenga cuidado con la sangría. Un espacio extra haría que la configuración no fuera válida.
network: ethernets: wlp4s0: dhcp4: no addresses: gateway4: 192.168.0.1 version: 2
Guarda y cierra el archivo. Luego aplica las configuraciones.
sudo netplan apply
También puedes activar la opción --debug
si no funciona como se espera.
sudo netplan --debug apply
Si hay otros archivos .yaml
bajo el directorio /etc/netplan/
, entonces netplan
fusionará automáticamente las configuraciones de los diferentes archivos. netplan
utiliza systemd-networkd
como el renderizador de red backend. Se recomienda configurar el wpa_supplicant.service
se ejecuta antes de systemd-networkd.service
, para que el sistema se asocie primero a un punto de acceso Wi-Fi y luego obtenga una dirección IP privada.
sudo nano /etc/systemd/system/wpa_supplicant.service
Busca la siguiente línea.
Before=network.target
Cámbiala por:
Before=network.target systemd-networkd.service
Guarda y cierra el archivo.
Otra forma de obtener una dirección IP estática es accediendo a la interfaz de gestión de su router y asignando una IP estática a la dirección MAC de su tarjeta inalámbrica, si su router admite esta función.
Utilizar un nombre de host para acceder a los servicios en Ubuntu
En realidad, no tiene que obtener una dirección IP estática para su caja de Ubuntu. Ubuntu puede usar mDNS (Multicast DNS) para anunciar su nombre de host a la red local y los clientes pueden acceder a los servicios en su caja de Ubuntu con ese nombre de host. Este nombre de host siempre se puede resolver a la dirección IP de su caja de Ubuntu, incluso si la dirección IP cambia.
Con el fin de utilizar mDNS, es necesario instalar avahi-daemon, que es una implementación de código abierto de mDNS/DNS-SD.
sudo apt install avahi-daemon
Iniciar el servicio.
sudo systemctl start avahi-daemon
Activar el inicio automático en el arranque.
sudo systemctl enable avahi-daemon
Avahi-daemon escucha en UDP 5353, por lo que es necesario abrir este puerto en el firewall. Si usas UFW, entonces ejecuta el siguiente comando.
sudo ufw allow 5353/udp
Entonces debes establecer un nombre de host único para tu caja de Ubuntu con el comando hostnamectl
. Sustituye ubuntubox por tu nombre de host preferido, que no debe estar ya tomado por otros dispositivos de la red local.
sudo hostnamectl set-hostname ubuntubox
Ahora reinicia avahi-daemon.
sudo systemctl restart avahi-daemon
Si compruebas el estado con
systemctl status avahi-daemon
podrás ver el nombre de host mDNS, que termina con el dominio .local
.
En el ordenador cliente, también hay que instalar un software mDNS/DNS-SD.
- Los usuarios de Linux deben instalar
avahi-daemon
. - Los usuarios de Windows necesitan habilitar el servicio Bonjour instalando el servicio de impresión Bonjour o instalando iTunes.
- En macOS, Bonjour está preinstalado.
Ahora puedes acceder a los servicios utilizando el ubuntubox.local
nombre de host, eliminando la necesidad de comprobar y escribir la dirección IP.
Desbloquear Wifi en Raspberry Pi
El sistema operativo Ubuntu ARM para Raspberry Pi bloquea la interfaz inalámbrica por defecto. Tienes que desbloquearla con:
sudo rfkill unblock wifi
Para desbloquearla en el arranque, crea una unidad de servicio systemd.
sudo nano /etc/systemd/system/unblock-wifi.service
Add las siguientes líneas en ella.
Description=RFKill Unblock WiFi DevicesRequires=wpa_supplicant.serviceAfter=wpa_supplicant.serviceType=oneshotExecStart=/usr/sbin/rfkill unblock wifiExecStop=RemainAfterExit=yesWantedBy=multi-user.target
Guarda y cierra el archivo. Activa el autoarranque en el arranque.
sudo systemctl enable unblock-wifi
He comprobado que el unblock-wifi.service
debe ejecutarse después de que se inicie el wpa_supplicant.service
, de lo contrario no podrá desbloquear el wifi. Ten en cuenta que si has instalado un entorno de escritorio, es probable que se esté ejecutando un gestor de red que puede interferir en la conexión. Tienes que desactivarlo. Por ejemplo, yo uso el entorno de escritorio ligero LXQT en la Raspberry Pi (sudo apt install lubuntu-desktop
) y necesito desactivar connman.service y NetworkManager.service.
sudo systemctl disable connman.service NetworkManager.service
Múltiples redes Wi-Fi
El archivo de configuración /etc/wpa_supplicant.conf
puede incluir múltiples redes Wi-Fi. wpa_supplicant seleccionará automáticamente la mejor red basándose en el orden de los bloques de red en el archivo de configuración, el nivel de seguridad de la red y la intensidad de la señal.
Para añadir una segunda red Wi-Fi, ejecuta
wpa_passphrase your-ESSID your-wifi-passphrase | sudo tee -a /etc/wpa_supplicant.conf
Nota que necesitas usar la opción -a
con el comando tee
, que añadirá, en lugar de borrar el contenido original, la nueva red Wifi al archivo.
Resumiendo
Espero que este tutorial os haya ayudado a conectar Ubuntu 18.04/20.04 a una red Wi-Fi desde la línea de comandos con WPA Supplicant. Como siempre, si te ha resultado útil este post, suscríbete a nuestra newsletter gratuita para recibir más consejos y trucos 🙂