En este tutorial, vamos a aprender cómo conectarse a la red Wi-Fi desde la línea de comandos en el servidor y escritorio Ubuntu 18.04/20.04 usando wpa_supplicant . En una red inalámbrica doméstica moderna, las comunicaciones están protegidas con WPA-PSK (clave precompartida) en lugar de WPA-Enterprise, que está diseñado para redes empresariales. WPA-PSK también se conoce como WPA-Personal. wpa_supplicant es una implementación del componente suplicante WPA. Un solicitante en LAN inalámbrica es un software de cliente instalado en la computadora del usuario final que debe autenticarse para unirse a una red.
 Tenga en cuenta que deberá instalar wpa_supplicant software antes de conectarse a Wi-Fi, por lo que primero debe conectarse a Ethernet por cable, lo cual se hace solo una vez. Si no te gusta este método, no te enfades conmigo. Quizás algún día Ubuntu envíe wpa_supplicant en una instalación limpia.
Paso 1:encuentre el nombre de su interfaz inalámbrica y red inalámbrica
 Ejecute iwconfig comando 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 usa Systemd, encontrará que su interfaz de red inalámbrica se llama algo así como wlp4s0 . También puede ver que no está asociado con ningún punto de acceso en este momento.
 
Si su interfaz inalámbrica no se muestra, tal vez necesite abrirla con el siguiente comando.
sudo ifconfig wlp4s0 up
 Luego busque el nombre de su red inalámbrica escaneando las redes cercanas con el siguiente comando. Reemplazar wlp4s0 con su propio nombre de interfaz inalámbrica. ESSID es el identificador del nombre de la red.
sudo iwlist wlp4s0 scan | grep ESSID
 
Paso 2:Conéctese a la red Wi-Fi con WPA_Supplicant
 Ahora instala wpa_supplicant en Ubuntu 18.04/20.04 desde el repositorio de software predeterminado.
sudo apt install wpasupplicant
 Necesitamos crear un archivo llamado wpa_supplicant.conf usando la wpa_passphrase utilidad. wpa_supplicant.conf es el archivo de configuración que describe todas las redes a las que el usuario desea que se conecte la computadora. Ejecute el siguiente comando para crear este archivo. Reemplace el ESSID y la contraseña de Wi-Fi con los suyos propios.
wpa_passphrase your-ESSID your-wifi-passphrase | sudo tee /etc/wpa_supplicant.conf
 
Tenga en cuenta que en la captura de pantalla anterior, envolví mi ESSID con comillas dobles, porque mi ESSID contiene espacios en blanco.
 La salida de wpa_passphrase el comando se canalizará a tee y luego se escribe en /etc/wpa_supplicant.conf expediente. Ahora use el siguiente comando para conectar su tarjeta inalámbrica al punto de acceso inalámbrico.
sudo wpa_supplicant -c /etc/wpa_supplicant.conf -i wlp4s0
El siguiente resultado indica que su tarjeta inalámbrica se conectó con éxito a un punto de acceso.
Successfully initialized wpa_supplicant wlp4s0: 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:eb wlp4s0: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0 wlp4s0: WPA: Key negotiation completed with c5:4a:21:53:ac:eb [PTK=CCMP GTK=CCMP] wlp4s0: CTRL-EVENT-CONNECTED - Connection to c5:4a:21:53:ac:eb completed [id=0 id_str=]
Tenga en cuenta que si está utilizando la edición de escritorio de Ubuntu, debe detener Network Manager con el siguiente comando; de lo contrario, causará un problema de conexión al usar wpa_supplicant .
sudo systemctl stop NetworkManager
Y deshabilite el inicio automático de NetworkManager en el momento del arranque ejecutando el siguiente comando.
sudo systemctl disable NetworkManager-wait-online NetworkManager-dispatcher NetworkManager
De forma predeterminada, wpa_supplicant se ejecuta en primer plano. Si se completa la conexión, abra otra ventana de terminal y ejecute
iwconfig
Puede ver que la interfaz inalámbrica ahora está asociada con un punto de acceso.
 
 Puedes presionar CTRL+C para detener el wpa_supplicant actual proceso y ejecútelo en segundo plano agregando -B bandera.
sudo wpa_supplicant -B -c /etc/wpa_supplicant.conf -i wlp4s0
Aunque estamos autenticados y conectados a una red inalámbrica, aún no tenemos una dirección IP. Para obtener una dirección IP privada del servidor DHCP, use 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 puede acceder a Internet. Para liberar la dirección IP privada, ejecute
sudo dhclient wlp4s0 -r
Conexión a una red inalámbrica oculta
 Si su enrutador inalámbrico no transmite ESSID, debe agregar la siguiente línea en /etc/wpa_supplicant.conf archivo.
scan_ssid=1
Como a continuación:
network={
        ssid="LinuxBabe.Com Network"
        #psk="12345qwert"
        psk=68add4c5fee7dc3d0dac810f89b805d6d147c01e281f07f475a3e0195
        scan_ssid=1
} Paso 3:Conexión automática en el momento del arranque
 Para conectarse automáticamente a la red inalámbrica en el momento del arranque, debemos editar el wpa_supplicant.service expediente. Es una buena idea copiar el archivo desde /lib/systemd/system/ directorio a /etc/systemd/system/ directorio, luego edite el contenido del archivo, porque no queremos una versión más nueva de wpa_supplicant para anular nuestras modificaciones.
sudo cp /lib/systemd/system/wpa_supplicant.service /etc/systemd/system/wpa_supplicant.service
Edite el archivo con un editor de texto de línea de comandos, como Nano.
sudo nano /etc/systemd/system/wpa_supplicant.service
Busque la siguiente línea.
ExecStart=/sbin/wpa_supplicant -u -s -O /run/wpa_supplicant
 Cámbialo por lo siguiente. Aquí agregamos el archivo de configuración y el nombre de la interfaz inalámbrica al ExecStart comando.
ExecStart=/sbin/wpa_supplicant -u -s -c /etc/wpa_supplicant.conf -i wlp4s0
 Se recomienda intentar siempre reiniciar wpa_supplicant cuando se detecta una falla. Agregue lo siguiente justo debajo de ExecStart línea.
Restart=always
Si puede encontrar la siguiente línea en este archivo, coméntelo (agregue el carácter # al principio de la línea).
Alias=dbus-fi.w1.wpa_supplicant1.service
 Guarde y cierre el archivo. (Para guardar un archivo en el editor de texto Nano, presione Ctrl+O , luego presione Enter para confirmar. Para salir, presiona Ctrl+X .) Luego recarga systemd.
sudo systemctl daemon-reload
Habilitar wpa_supplicant servicio para iniciar en el momento del arranque.
sudo systemctl enable wpa_supplicant.service
 También necesitamos iniciar dhclient en el momento del arranque para obtener una dirección IP privada del servidor DHCP. Esto se puede lograr creando una unidad de servicio systemd para dhclient .
sudo nano /etc/systemd/system/dhclient.service
Ponga el siguiente texto en el archivo.
[Unit] Description= DHCP Client Before=network.target After=wpa_supplicant.service [Service] Type=forking ExecStart=/sbin/dhclient wlp4s0 -v ExecStop=/sbin/dhclient wlp4s0 -r Restart=always [Install] WantedBy=multi-user.target
Guarde y cierre el archivo. Luego habilite este servicio.
sudo systemctl enable dhclient.service
Cómo obtener una dirección IP estática
 Si desea obtener una dirección IP estática, debe deshabilitar dhclient.service .
sudo systemctl disable dhclient.service
 Necesitamos usar netplan para configurar la dirección IP estática en Ubuntu 18.04/20.04. Cree un archivo de configuración en /etc/netplan/ .
sudo nano /etc/netplan/10-wifi.yaml
 Agregue las siguientes líneas a este archivo. Reemplazar 192.168.0.102 con su dirección IP preferida. Tenga cuidado con la sangría. Un espacio adicional invalidaría la configuración.
network:
    ethernets:
        wlp4s0:
            dhcp4: no
            addresses: [192.168.0.102/24]
            gateway4: 192.168.0.1
    version: 2
 Guarde y cierre el archivo. Luego aplique las configuraciones.
sudo netplan apply
 También puede activar --debug opción si no funciona como se esperaba.
sudo netplan --debug apply
 Si hay otros .yaml archivos bajo /etc/netplan/ directorio, luego netplan combinará automáticamente las configuraciones de diferentes archivos. netplan usa systemd-networkd como renderizador de red back-end. Se recomienda configurar el wpa_supplicant.service se ejecuta antes de systemd-networkd.service , por lo que el sistema primero se asociará con un punto de acceso Wi-Fi y luego obtendrá una dirección IP privada.
sudo nano /etc/systemd/system/wpa_supplicant.service
Busque la siguiente línea.
Before=network.target
Cámbialo por:
Before=network.target systemd-networkd.service
Guarde y cierre el archivo.
Otra forma de obtener una dirección IP estática es iniciar sesión en la interfaz de administración de su enrutador y asignar una IP estática a la dirección MAC de su tarjeta inalámbrica, si su enrutador admite esta función.
Uso de 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 en la dirección IP de su caja de Ubuntu, incluso si la dirección IP cambia.
Para usar mDNS, debe instalar avahi-daemon, que es una implementación de código abierto de mDNS/DNS-SD.
sudo apt install avahi-daemon
Inicie el servicio.
sudo systemctl start avahi-daemon
Habilite el inicio automático en el momento del arranque.
sudo systemctl enable avahi-daemon
Avahi-daemon escucha en UDP 5353, por lo que debe abrir este puerto en el firewall. Si usa UFW, ejecute el siguiente comando.
sudo ufw allow 5353/udp
 Luego, debe establecer un nombre de host único para su caja de Ubuntu con hostnamectl dominio. Reemplace ubuntubox con su nombre de host preferido, que no debería estar ya en otros dispositivos en la red local.
sudo hostnamectl set-hostname ubuntubox
Ahora reinicie avahi-daemon.
sudo systemctl restart avahi-daemon
Si comprueba el estado con
systemctl status avahi-daemon
 puede ver el nombre de host mDNS, que termina con .local dominio.
 
En la computadora cliente, también necesita instalar un software mDNS/DNS-SD.
- Los usuarios de Linux deben instalar avahi-daemon.
- Los usuarios de Windows deben habilitar el servicio Bonjour instalando el servicio de impresión Bonjour o instalando iTunes.
- En macOS, Bonjour está preinstalado.
 Ahora puede acceder a los servicios usando ubuntubox.local nombre de host, lo que elimina la necesidad de verificar y escribir la dirección IP.
Desbloquear Wi-Fi en Raspberry Pi
El sistema operativo Ubuntu ARM para Raspberry Pi bloquea la interfaz inalámbrica de forma predeterminada. Necesitas desbloquearlo con:
sudo rfkill unblock wifi
Para desbloquearlo en el momento del arranque, cree una unidad de servicio systemd.
sudo nano /etc/systemd/system/unblock-wifi.service
Añádele las siguientes líneas.
[Unit] Description=RFKill Unblock WiFi Devices Requires=wpa_supplicant.service After=wpa_supplicant.service [Service] Type=oneshot ExecStart=/usr/sbin/rfkill unblock wifi ExecStop= RemainAfterExit=yes [Install] WantedBy=multi-user.target
Guarde y cierre el archivo. Habilite el inicio automático en el momento del arranque.
sudo systemctl enable unblock-wifi
 Descubrí que unblock-wifi.service debe ejecutarse después de wpa_supplicant.service comienza, de lo contrario no puede desbloquear wifi. Tenga en cuenta que si ha instalado un entorno de escritorio, es probable que se esté ejecutando un administrador de red que pueda interferir con la conexión. Necesitas desactivarlo. Por ejemplo, uso el entorno de escritorio ligero LXQT en Raspberry Pi (sudo apt install lubuntu-desktop ) y necesita deshabilitar connman.service y NetworkManager.service.
sudo systemctl disable connman.service NetworkManager.service
Lectura recomendada
- Cómo usar Systemd en Linux:administrar servicios, niveles de ejecución y registros
Múltiples redes wifi
 El /etc/wpa_supplicant.conf El archivo de configuración puede incluir múltiples redes Wi-Fi. wpa_supplicant seleccionará automáticamente la mejor red según 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 agregar una segunda red Wi-Fi, ejecute
wpa_passphrase your-ESSID your-wifi-passphrase | sudo tee -a /etc/wpa_supplicant.conf
 Tenga en cuenta que debe usar -a opción con la tee comando, que agregará, en lugar de eliminar el contenido original, la nueva red Wifi al archivo.
Seguridad wifi
No use WPA2 TKIP o WPA2 TKIP+AES como el método de cifrado en su enrutador Wi-Fi. TKIP ya no se considera seguro. Puedes usar WPA2-AES como método de cifrado.