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.