Conectarse al Wi-Fi desde el terminal en Ubuntu 18.04/20.04 con WPA Supplicant

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.

Servidor de Ubuntu conectar a terminal wifi

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

ubuntu 19.04 conectar a wifi línea de comandos wpa supplicant

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_passphrasewpa_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

wpa_passphrase

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.

Habilitar wifi en ubuntu con el comando de terminal

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

ubuntu dhclient obtain private ip address

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.

avahi-daemon mdns hostname

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 🙂

Rate this tutorial

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *