Ir al contenido
Impala Wifi: Gestionando redes inalámbricas con iwd en Linux

Impala Wifi: Gestionando redes inalámbricas con iwd en Linux

Graplo
Autor
Graplo
Usuario de CachyOS. Le gusta el terminal y contribuye con el open source y del tema favoríto Dracula.

Introducción
#

En Linux existen varios componentes para gestionar una conexión WiFi.

En la mayoría de distribuciones, NetworkManager utiliza wpa_supplicant como backend para controlar la interfaz inalámbrica.

NetworkManager
|
└── wpa_supplicant

Una alternativa moderna es utilizar iwd (iNet Wireless Daemon), que puede reemplazar a wpa_supplicant como backend.

NetworkManager
|
└── iwd

iwd (iNet Wireless Daemon) fue desarrollado originalmente por Intel, pero funciona con tarjetas WiFi de diferentes fabricantes porque utiliza las interfaces estándar del kernel Linux.

Una vez configurado, herramientas como iwctl o impala pueden controlar la conexión WiFi usando iwd.

Ver qué tarjeta WiFi tengo
#

Primero hay que saber cómo se llama nuestra interfaz WiFi.

El comando más simple:

ip link

En mi caso:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp9s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 10:7c:61:d5:22:ad brd ff:ff:ff:ff:ff:ff
    altname enx107c61d522ad
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc htb state DOWN mode DEFAULT group default qlen 1000
    link/ether 52:54:00:2e:59:98 brd ff:ff:ff:ff:ff:ff
5: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000
    link/ether a8:41:f4:52:59:b3 brd ff:ff:ff:ff:ff:ff

Ver servicios WiFi instalados
#

pacman -Qs iwd
pacman -Qs wpa

Ver el estado de los servicios:
#

systemctl status iwd
systemctl status wpa_supplicant
systemctl status NetworkManager

Ver qué backend usa NetworkManager
#

NetworkManager puede usar diferentes motores WiFi.

Comprobar configuración:

Activar iwd como backend de NetworkManager
#

Editar el archivo:

sudo helix /etc/NetworkManager/NetworkManager.conf

Añadir:

[device]
wifi.backend=iwd

En mi equipo consume aproximadamente 2.2 MiB de memoria, aunque el valor puede variar según la distribución y la versión instalada.

sudo systemctl enable iwd

Guardar y reiniciar NetworkManager:

sudo systemctl restart NetworkManager

Desactivar wpa_supplicant
#

Si anteriormente NetworkManager utilizaba wpa_supplicant, es recomendable detenerlo y deshabilitarlo antes de cambiar a iwd.

Primero comprobamos su estado:

systemctl status wpa_supplicant

Si todo está correcto, debería aparecer algo similar a:

○ wpa_supplicant.service - WPA supplicant
     Loaded: loaded (/usr/lib/systemd/system/wpa_supplicant.service; disabled; preset: disabled)
     Active: inactive (dead)

Esto indica que el servicio está instalado, pero no se está ejecutando.

En caso de que estuviera activo, podemos detenerlo:

sudo systemctl stop wpa_supplicant

Y evitar que se inicie automáticamente:

sudo systemctl disable wpa_supplicant

También es posible que exista una instancia asociada directamente a la interfaz WiFi:

sudo systemctl stop wpa_supplicant@wlan0
sudo systemctl disable wpa_supplicant@wlan0

Después verificamos que iwd esté funcionando:

systemctl status iwd

El servicio debe aparecer como:

Active: active (running)

Finalmente reiniciamos NetworkManager para aplicar el nuevo backend:

sudo systemctl restart NetworkManager

La arquitectura final queda así:

NetworkManager
      |
      └── iwd
             |
             └── tarjeta WiFi


Impala / iwctl
      |
      └── D-Bus
             |
             └── iwd

De esta forma, iwd se encarga de la gestión inalámbrica y herramientas como iwctl o impala pueden comunicarse con él mediante D-Bus.

Usar iwd desde la terminal
#

La herramienta oficial de iwd es iwctl.

Abrir:

iwctl

Dentro de la consola:

Comandos útiles dentro de iwctl
#

AcciónComando
Ver dispositivosdevice list
Escanear redes WiFistation wlan0 scan
Ver redes disponiblesstation wlan0 get-networks
Conectarse a una redstation wlan0 connect NombreWifi
Ejemplo de conexiónstation wlan0 connect Graplo
Ver estado de conexiónstation wlan0 show
Ejemplo de estadoConnected network: Graplo
Ver redes guardadasknown-networks list

¿Qué es Impala?
#

Impala es una aplicación TUI (Terminal User Interface) para administrar conexiones WiFi mediante iwd.

A diferencia de iwctl, que funciona como una consola interactiva donde los comandos deben escribirse manualmente, Impala presenta una interfaz visual que facilita la administración de redes inalámbricas directamente desde la terminal.

Internamente utiliza la API de iwd a través de D-Bus, por lo que no reemplaza a iwd, sino que actúa como un cliente gráfico para la terminal.

Gracias a esto, resulta especialmente útil en gestores de ventanas (Window Managers) o entornos minimalistas donde no se dispone de un applet gráfico de NetworkManager.

Instalación
#

En Arch Linux y distribuciones derivadas como CachyOS, Impala se encuentra en los repositorios oficiales, por lo que puede instalarse con:

sudo pacman -S impala

Una vez instalado, basta con ejecutar:

impala

Si iwd está correctamente configurado y NetworkManager utiliza este backend, Impala detectará automáticamente la interfaz inalámbrica y mostrará las redes WiFi disponibles.


Funciones
#

Entre las principales características de Impala se encuentran:

  • Escaneo automático de redes WiFi disponibles.
  • Conexión a redes abiertas y protegidas.
  • Solicitud de contraseña cuando es necesaria.
  • Visualización de la intensidad de la señal.
  • Identificación del tipo de seguridad de cada red.
  • Desconexión de la red actual.
  • Eliminación de redes guardadas (Known Networks).
  • Actualización de la lista de redes sin salir de la aplicación.
  • Interfaz completamente basada en teclado.
  • Integración directa con iwd mediante D-Bus.

Atajos de teclado
#

Impala está pensado para utilizarse completamente con el teclado.

TeclaAcción
↑ / ↓Moverse entre las redes disponibles
EnterConectarse a la red seleccionada
TabCambiar entre paneles
rVolver a escanear redes
dDesconectarse de la red actual
DeleteEliminar una red guardada
qSalir de Impala
EscCerrar cuadros de diálogo o volver atrás

Impala frente a iwctl
#

iwctlImpala
Basado en comandosInterfaz TUI
Hay que recordar la sintaxisNavegación mediante teclado
Ideal para scriptingIdeal para el uso diario
Incluido con iwdAplicación independiente