Connettersi al Wi-Fi da terminale su Ubuntu 18.04/20.04 con WPA Supplicant

In questo tutorial, stiamo per imparare come connettersi alla rete Wi-Fi da riga di comando su Ubuntu 18.04/20.04 server e desktop utilizzando wpa_supplicant. In una moderna rete wireless domestica, le comunicazioni sono protette con WPA-PSK (pre-shared key) al contrario di WPA-Enterprise, che è progettato per le reti aziendali. WPA-PSK è anche conosciuto come WPA-Personal. wpa_supplicant è un’implementazione del componente WPA supplicant. Un supplicant nella LAN wireless è un software client installato sul computer dell’utente finale che ha bisogno di essere autenticato per unirsi ad una rete.

Step 1: Trova il nome della tua interfaccia wireless e della rete wireless

Esegui il comando iwconfig per trovare il nome della tua interfaccia wireless.

iwconfig

wlan0 era un nome comune per l’interfaccia di rete wireless sui sistemi Linux senza Systemd. Poiché Ubuntu usa Systemd, troverete che la vostra interfaccia di rete wireless si chiama qualcosa come wlp4s0. Puoi anche vedere che non è associata a nessun punto di accesso in questo momento.

ubuntu server connect to wifi terminal

Se la tua interfaccia wireless non viene visualizzata, forse hai bisogno di farla apparire con il seguente comando.

sudo ifconfig wlp4s0 up

Poi trova il nome della tua rete wireless scansionando le reti vicine con il comando qui sotto. Sostituite wlp4s0 con il nome della vostra interfaccia wireless. ESSID è l’identificatore del nome della rete.

sudo iwlist wlp4s0 scan | grep ESSID

ubuntu 19.04 connect to wifi command line wpa supplicant

Step 2: Collegarsi alla rete Wi-Fi con WPA_Supplicant

Ora installate wpa_supplicant su Ubuntu 18.04/20.04 dal repository del software predefinito.

sudo apt install wpasupplicant

Dobbiamo creare un file chiamato wpa_supplicant.conf usando l’utilità wpa_passphrasewpa_supplicant.conf è il file di configurazione che descrive tutte le reti a cui l’utente vuole che il computer si connetta. Esegui il seguente comando per creare questo file. Sostituite ESSID e Wi-Fi passphrase con i vostri.

wpa_passphrase your-ESSID your-wifi-passphrase | sudo tee /etc/wpa_supplicant.conf

wpa_passphrase

Nota che nello screenshot di sopra, ho avvolto il mio ESSID con doppie virgolette, perché il mio ESSID contiene uno spazio bianco.

L’output del comando wpa_passphrase sarà convogliato in tee, e poi scritto nel file /etc/wpa_supplicant.conf. Ora usa il seguente comando per connettere la tua scheda wireless al punto di accesso wireless.

sudo wpa_supplicant -c /etc/wpa_supplicant.conf -i wlp4s0

Il seguente output indica che la tua scheda wireless è collegata con successo a un punto di accesso.

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 

Nota che se stai usando l’edizione desktop di Ubuntu, allora devi fermare Network Manager con il seguente comando, altrimenti causerà problemi di connessione quando usi wpa_supplicant.

sudo systemctl stop NetworkManager

E disabilitare l’avvio automatico di NeworkManager all’avvio eseguendo il seguente comando.

sudo systemctl disable NetworkManager-wait-online NetworkManager-dispatcher NetworkManager

Di default, wpa_supplicant viene eseguito in primo piano. Se la connessione viene completata, allora aprite un’altra finestra di terminale ed eseguite

iwconfig

Vedete che l’interfaccia wireless è ora associata ad un access point.

abilitare il wifi su ubuntu usando il comando da terminale

Si può premere CTRL+C per fermare il processo wpa_supplicant corrente ed eseguirlo in background aggiungendo il flag -B.

sudo wpa_supplicant -B -c /etc/wpa_supplicant.conf -i wlp4s0

Anche se siamo autenticati e connessi alla rete wireless, ma non abbiamo ancora un indirizzo IP. Per ottenere un indirizzo IP privato dal server DHCP, usate il seguente comando:

sudo dhclient wlp4s0

Ora la vostra interfaccia wireless ha un indirizzo IP privato, che può essere mostrato con:

ip addr show wlp4s0

ubuntu dhclient obtain private ip address

Ora potete accedere a Internet. Per rilasciare l’indirizzo IP privato, eseguire

sudo dhclient wlp4s0 -r

Connettersi alla rete wireless nascosta

Se il router wireless non trasmette ESSID, allora è necessario aggiungere la seguente linea nel file /etc/wpa_supplicant.conf.

scan_ssid=1

Come sotto:

network={ ssid="LinuxBabe.Com Network" #psk="12345qwert" psk=68add4c5fee7dc3d0dac810f89b805d6d147c01e281f07f475a3e0195 scan_ssid=1}

Step 3: Connessione automatica all’avvio

Per connettersi automaticamente alla rete wireless all’avvio, dobbiamo modificare il file wpa_supplicant.service. E’ una buona idea copiare il file dalla directory /lib/systemd/system/ alla directory /etc/systemd/system/, quindi modificare il contenuto del file, perché non vogliamo che una versione più recente di wpa_supplicant sovrascriva le nostre modifiche.

sudo cp /lib/systemd/system/wpa_supplicant.service /etc/systemd/system/wpa_supplicant.service

Modificare il file con un editor di testo a riga di comando, come Nano.

sudo nano /etc/systemd/system/wpa_supplicant.service

Trovare la seguente linea.

ExecStart=/sbin/wpa_supplicant -u -s -O /run/wpa_supplicant

Cambiarla come segue. Qui abbiamo aggiunto il file di configurazione e il nome dell’interfaccia wireless al comando ExecStart.

ExecStart=/sbin/wpa_supplicant -u -s -c /etc/wpa_supplicant.conf -i wlp4s0

Si raccomanda di provare sempre a riavviare wpa_supplicant quando viene rilevato un errore. Aggiungere quanto segue proprio sotto la linea ExecStart.

Restart=always

Se si trova la seguente linea in questo file, commentarla (Aggiungere il carattere # all’inizio della linea).

Alias=dbus-fi.w1.wpa_supplicant1.service

Salvare e chiudere il file. (Per salvare un file nell’editor di testo Nano, premere Ctrl+O, poi premere Enter per confermare. Per uscire, premere Ctrl+X.) Quindi ricaricare systemd.

sudo systemctl daemon-reload

Enable wpa_supplicant service to start at boot time.

sudo systemctl enable wpa_supplicant.service

Abbiamo anche bisogno di avviare dhclient al boot per ottenere un indirizzo IP privato dal server DHCP. Questo può essere ottenuto creando un’unità di servizio systemd per dhclient.

sudo nano /etc/systemd/system/dhclient.service

Inserire il seguente testo nel file.

Description= DHCP ClientBefore=network.targetAfter=wpa_supplicant.serviceType=forkingExecStart=/sbin/dhclient wlp4s0 -vExecStop=/sbin/dhclient wlp4s0 -rRestart=always WantedBy=multi-user.target

Salvare e chiudere il file. Poi abilitare questo servizio.

sudo systemctl enable dhclient.service

Come ottenere un indirizzo IP statico

Se si vuole ottenere un indirizzo IP statico, allora è necessario disabilitare dhclient.service.

sudo systemctl disable dhclient.service

Abbiamo bisogno di usare netplan per configurare un indirizzo IP statico su Ubuntu 18.04/20.04. Creare un file di configurazione sotto /etc/netplan/.

sudo nano /etc/netplan/10-wifi.yaml

Aggiungere le seguenti righe a questo file. Sostituite 192.168.0.102 con il vostro indirizzo IP preferito. Fate attenzione all’indentazione. Uno spazio in più renderebbe la configurazione non valida.

network: ethernets: wlp4s0: dhcp4: no addresses: gateway4: 192.168.0.1 version: 2

Salva e chiudi il file. Poi applica le configurazioni.

sudo netplan apply

Puoi anche attivare l’opzione --debug se non funziona come previsto.

sudo netplan --debug apply

Se ci sono altri .yaml file sotto la /etc/netplan/ directory, allora netplan unirà automaticamente le configurazioni di file diversi. netplan usa systemd-networkd come renderer di rete backend. Si raccomanda di configurare il wpa_supplicant.service viene eseguito prima del systemd-networkd.service, in modo che il sistema si associ prima con un punto di accesso Wi-Fi, poi ottenga un indirizzo IP privato.

sudo nano /etc/systemd/system/wpa_supplicant.service

Trova la seguente linea.

Before=network.target

Cambiala in:

Before=network.target systemd-networkd.service

Salva e chiudi il file.

Un altro modo per ottenere un indirizzo IP statico è quello di accedere all’interfaccia di gestione del router e assegnare un IP statico all’indirizzo MAC della scheda wireless, se il router supporta questa funzione.

Usare un nome host per accedere ai servizi su Ubuntu

In realtà, non è necessario ottenere un indirizzo IP statico per la propria macchina Ubuntu. Ubuntu può utilizzare mDNS (Multicast DNS) per annunciare il suo nome host alla rete locale e i clienti possono accedere ai servizi sulla vostra casella Ubuntu con questo nome host. Questo hostname può sempre essere risolto all’indirizzo IP della vostra scatola Ubuntu, anche se l’indirizzo IP cambia.

Per utilizzare mDNS, è necessario installare avahi-daemon, che è un’implementazione open-source di mDNS/DNS-SD.

sudo apt install avahi-daemon

Avviare il servizio.

sudo systemctl start avahi-daemon

Abilitare l’avvio automatico all’avvio.

sudo systemctl enable avahi-daemon

Avahi-daemon ascolta su UDP 5353, quindi è necessario aprire questa porta nel firewall. Se usate UFW, eseguite il seguente comando.

sudo ufw allow 5353/udp

Poi dovreste impostare un hostname unico per la vostra casella Ubuntu con il comando hostnamectl. Sostituite ubuntubox con il vostro hostname preferito, che non dovrebbe essere già preso da altri dispositivi nella rete locale.

sudo hostnamectl set-hostname ubuntubox

Ora riavviate avahi-daemon.

sudo systemctl restart avahi-daemon

Se si controlla lo stato con

systemctl status avahi-daemon

si può vedere l’hostname mDNS, che termina con il dominio .local.

avahi-daemon mdns hostname

Sul computer client, è anche necessario installare un software mDNS/DNS-SD.

  • Gli utenti Linux dovrebbero installare avahi-daemon.
  • Gli utenti Windows devono abilitare il servizio Bonjour installando il servizio di stampa Bonjour o installando iTunes.
  • Su macOS, Bonjour è preinstallato.

Ora è possibile accedere ai servizi utilizzando il ubuntubox.local hostname, eliminando la necessità di controllare e digitare l’indirizzo IP.

Sbloccare il Wifi su Raspberry Pi

Il sistema operativo Ubuntu ARM OS per Raspberry Pi blocca l’interfaccia wireless per impostazione predefinita. Dovete sbloccarla con:

sudo rfkill unblock wifi

Per sbloccarla all’avvio, create un’unità di servizio systemd.

sudo nano /etc/systemd/system/unblock-wifi.service

Aggiungi le seguenti righe.

Description=RFKill Unblock WiFi DevicesRequires=wpa_supplicant.serviceAfter=wpa_supplicant.serviceType=oneshotExecStart=/usr/sbin/rfkill unblock wifiExecStop=RemainAfterExit=yesWantedBy=multi-user.target

Salva e chiudi il file. Abilitare l’avvio automatico all’avvio.

sudo systemctl enable unblock-wifi

Ho scoperto che il unblock-wifi.service deve essere eseguito dopo l’avvio del wpa_supplicant.service, altrimenti non può sbloccare il wifi. Nota che se hai installato un ambiente desktop, probabilmente c’è un gestore di rete in esecuzione che può interferire con la connessione. È necessario disabilitarlo. Per esempio, io uso l’ambiente desktop leggero LXQT su Raspberry Pi (sudo apt install lubuntu-desktop) e devo disabilitare connman.service e NetworkManager.service.

sudo systemctl disable connman.service NetworkManager.service

Reti Wi-Fi multiple

Il file di configurazione /etc/wpa_supplicant.conf può includere più reti Wi-Fi. wpa_supplicant selezionerà automaticamente la rete migliore in base all’ordine dei blocchi di rete nel file di configurazione, al livello di sicurezza della rete e alla potenza del segnale.

Per aggiungere una seconda rete Wi-Fi, esegui

wpa_passphrase your-ESSID your-wifi-passphrase | sudo tee -a /etc/wpa_supplicant.conf

Nota che devi usare l’opzione -a con il comando tee, che aggiungerà, invece di cancellare il contenuto originale, la nuova rete Wifi al file.

Concludendo

Spero che questo tutorial vi abbia aiutato a connettere Ubuntu 18.04/20.04 alla rete Wi-Fi da linea di comando con WPA Supplicant. Come sempre, se hai trovato questo post utile, allora iscriviti alla nostra newsletter gratuita per ottenere altri suggerimenti e trucchi 🙂

Valuta questo tutorial

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *