In questo tutorial impareremo come connetterci alla rete Wi-Fi dalla riga di comando su server e desktop Ubuntu 18.04/20.04 usando wpa_supplicant . In una moderna rete wireless domestica, le comunicazioni sono protette con WPA-PSK (chiave precondivisa) al contrario di WPA-Enterprise, progettato per le reti aziendali. WPA-PSK è anche noto come WPA-Personale. wpa_supplicant è un'implementazione del componente supplicant WPA. Un supplicant in LAN wireless è un software client installato sul computer dell'utente finale che deve essere autenticato per poter entrare in una rete.
Tieni presente che dovrai installare wpa_supplicant
software prima di connetterti al Wi-Fi, quindi devi prima connetterti a Ethernet cablata, che viene eseguita solo una volta. Se non ti piace questo metodo, per favore non essere arrabbiato con me. Forse un giorno Ubuntu spedirà wpa_supplicant
su un'installazione pulita.
Fase 1:trova il nome dell'interfaccia wireless e della rete wireless
Esegui iwconfig
comando per trovare il nome della tua interfaccia wireless.
iwconfig
wlan0
era un nome comune per l'interfaccia di rete wireless su sistemi Linux senza Systemd. Poiché Ubuntu utilizza Systemd, scoprirai che la tua interfaccia di rete wireless ha un nome simile a wlp4s0
. Puoi anche vedere che al momento non è associato ad alcun punto di accesso.
Se la tua interfaccia wireless non viene mostrata, forse devi aprirla con il seguente comando.
sudo ifconfig wlp4s0 up
Quindi trova il nome della tua rete wireless scansionando le reti vicine con il comando seguente. Sostituisci wlp4s0
con il proprio nome di interfaccia wireless. ESSID è l'identificatore del nome della rete.
sudo iwlist wlp4s0 scan | grep ESSID
Fase 2:connettiti alla rete Wi-Fi con WPA_Supplicant
Ora installa wpa_supplicant
su Ubuntu 18.04/20.04 dal repository software predefinito.
sudo apt install wpasupplicant
Dobbiamo creare un file denominato wpa_supplicant.conf
usando il wpa_passphrase
utilità. wpa_supplicant.conf
è il file di configurazione che descrive tutte le reti a cui l'utente desidera che il computer si connetta. Eseguire il comando seguente per creare questo file. Sostituisci ESSID e passphrase Wi-Fi con la tua.
wpa_passphrase your-ESSID your-wifi-passphrase | sudo tee /etc/wpa_supplicant.conf
Nota che nello screenshot sopra, ho racchiuso il mio ESSID tra virgolette, perché il mio ESSID contiene spazi bianchi.
L'output di wpa_passphrase
il comando verrà inviato a tee
, e quindi scritto in /etc/wpa_supplicant.conf
file. Ora usa il comando seguente 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 è connessa correttamente a un punto di accesso.
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=]
Nota che se stai utilizzando l'edizione desktop di Ubuntu, devi interrompere Network Manager con il comando seguente, altrimenti causerà un problema di connessione quando usi wpa_supplicant .
sudo systemctl stop NetworkManager
E disabilita l'avvio automatico di NetworkManager all'avvio eseguendo il comando seguente.
sudo systemctl disable NetworkManager-wait-online NetworkManager-dispatcher NetworkManager
Per impostazione predefinita, wpa_supplicant viene eseguito in primo piano. Se la connessione è completata, apri un'altra finestra del terminale ed esegui
iwconfig
Puoi vedere che l'interfaccia wireless è ora associata a un punto di accesso.
Puoi premere CTRL+C
per interrompere l'attuale wpa_supplicant elaboralo ed eseguilo in background aggiungendo il -B
bandiera.
sudo wpa_supplicant -B -c /etc/wpa_supplicant.conf -i wlp4s0
Sebbene siamo autenticati e connessi a una rete wireless, non abbiamo ancora un indirizzo IP. Per ottenere un indirizzo IP privato dal server DHCP, utilizzare il comando seguente:
sudo dhclient wlp4s0
Ora la tua interfaccia wireless ha un indirizzo IP privato, che può essere mostrato con:
ip addr show wlp4s0
Ora puoi accedere a Internet. Per rilasciare l'indirizzo IP privato, esegui
sudo dhclient wlp4s0 -r
Connessione a una rete wireless nascosta
Se il tuo router wireless non trasmette ESSID, devi aggiungere la seguente riga in /etc/wpa_supplicant.conf
file.
scan_ssid=1
Come di seguito:
network={ ssid="LinuxBabe.Com Network" #psk="12345qwert" psk=68add4c5fee7dc3d0dac810f89b805d6d147c01e281f07f475a3e0195 scan_ssid=1 }
Passaggio 3:connessione automatica all'avvio
Per connetterci automaticamente alla rete wireless all'avvio, dobbiamo modificare il wpa_supplicant.service
file. È una buona idea copiare il file da /lib/systemd/system/
directory in /etc/systemd/system/
directory, quindi modifica il contenuto del file, perché non vogliamo una versione più recente di wpa_supplicant
per ignorare le nostre modifiche.
sudo cp /lib/systemd/system/wpa_supplicant.service /etc/systemd/system/wpa_supplicant.service
Modifica il file con un editor di testo da riga di comando, come Nano.
sudo nano /etc/systemd/system/wpa_supplicant.service
Trova la riga seguente.
ExecStart=/sbin/wpa_supplicant -u -s -O /run/wpa_supplicant
Cambialo come segue. Qui abbiamo aggiunto il file di configurazione e il nome dell'interfaccia wireless a ExecStart
comando.
ExecStart=/sbin/wpa_supplicant -u -s -c /etc/wpa_supplicant.conf -i wlp4s0
Si consiglia di provare sempre a riavviare wpa_supplicant quando viene rilevato un errore. Aggiungi quanto segue subito sotto ExecStart
linea.
Restart=always
Se riesci a trovare la riga seguente in questo file, commentala (aggiungi il carattere # all'inizio della riga).
Alias=dbus-fi.w1.wpa_supplicant1.service
Salva e chiudi il file. (Per salvare un file nell'editor di testo Nano, premi Ctrl+O
, quindi premi Enter
per confermare. Per uscire, premi Ctrl+X
.) Quindi ricarica systemd.
sudo systemctl daemon-reload
Abilita wpa_supplicant servizio da avviare all'avvio.
sudo systemctl enable wpa_supplicant.service
Dobbiamo anche avviare dhclient
all'avvio 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
Inserisci il seguente testo nel file.
[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
Salva e chiudi il file. Quindi abilita questo servizio.
sudo systemctl enable dhclient.service
Come ottenere un indirizzo IP statico
Se vuoi ottenere un indirizzo IP statico, devi disabilitare dhclient.service
.
sudo systemctl disable dhclient.service
Dobbiamo usare netplan per configurare l'indirizzo IP statico su Ubuntu 18.04/20.04. Crea un file di configurazione in /etc/netplan/
.
sudo nano /etc/netplan/10-wifi.yaml
Aggiungi le seguenti righe a questo file. Sostituisci 192.168.0.102
con il tuo indirizzo IP preferito. Si prega di fare attenzione al rientro. Uno spazio in più renderebbe la configurazione non valida.
network: ethernets: wlp4s0: dhcp4: no addresses: [192.168.0.102/24] gateway4: 192.168.0.1 version: 2
Salva e chiudi il file. Quindi applica le configurazioni.
sudo netplan apply
Puoi anche attivare --debug
opzione se non funziona come previsto.
sudo netplan --debug apply
Se sono presenti altri .yaml
file in /etc/netplan/
directory, quindi netplan
unirà automaticamente le configurazioni di file diversi. netplan
utilizza systemd-networkd
come renderer di rete back-end. Si consiglia di configurare wpa_supplicant.service
viene eseguito prima di systemd-networkd.service
, quindi il sistema si assocerà prima a un punto di accesso Wi-Fi, quindi otterrà un indirizzo IP privato.
sudo nano /etc/systemd/system/wpa_supplicant.service
Trova la riga seguente.
Before=network.target
Cambialo in:
Before=network.target systemd-networkd.service
Salva e chiudi il file.
Un altro modo per ottenere un indirizzo IP statico è accedere all'interfaccia di gestione del router e assegnare un IP statico all'indirizzo MAC della scheda wireless, se il router supporta questa funzione.
Utilizzo di un nome host per accedere ai servizi su Ubuntu
In realtà, non devi ottenere un indirizzo IP statico per il tuo box Ubuntu. Ubuntu può utilizzare mDNS (Multicast DNS) per annunciare il suo nome host alla rete locale e i client possono accedere ai servizi sulla tua macchina Ubuntu con quel nome host. Questo nome host può sempre essere risolto nell'indirizzo IP della tua casella Ubuntu, anche se l'indirizzo IP cambia.
Per utilizzare mDNS, devi installare avahi-daemon, che è un'implementazione open source di mDNS/DNS-SD.
sudo apt install avahi-daemon
Avvia il servizio.
sudo systemctl start avahi-daemon
Abilita l'avvio automatico all'avvio.
sudo systemctl enable avahi-daemon
Avahi-daemon è in ascolto su UDP 5353, quindi è necessario aprire questa porta nel firewall. Se usi UFW, esegui il comando seguente.
sudo ufw allow 5353/udp
Quindi dovresti impostare un nome host univoco per il tuo box Ubuntu con hostnamectl
comando. Sostituisci ubuntubox con il tuo nome host preferito, che non dovrebbe essere già preso da altri dispositivi nella rete locale.
sudo hostnamectl set-hostname ubuntubox
Ora riavvia avahi-daemon.
sudo systemctl restart avahi-daemon
Se controlli lo stato con
systemctl status avahi-daemon
puoi vedere il nome host mDNS, che termina con .local
dominio.
Sul computer client, devi anche 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 puoi accedere ai servizi utilizzando ubuntubox.local
hostname, eliminando la necessità di controllare e digitare l'indirizzo IP.
Sblocca il Wi-Fi su Raspberry Pi
Il sistema operativo Ubuntu ARM per Raspberry Pi blocca l'interfaccia wireless per impostazione predefinita. Devi sbloccarlo con:
sudo rfkill unblock wifi
Per sbloccarlo all'avvio, crea un'unità di servizio systemd.
sudo nano /etc/systemd/system/unblock-wifi.service
Aggiungi le seguenti righe.
[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
Salva e chiudi il file. Abilita l'avvio automatico all'avvio.
sudo systemctl enable unblock-wifi
Ho scoperto che il unblock-wifi.service
dovrebbe essere eseguito dopo il wpa_supplicant.service
si avvia, altrimenti non può sbloccare il wifi. Tieni presente che se hai installato un ambiente desktop, probabilmente è in esecuzione un gestore di rete che può interferire con la connessione. Devi disabilitarlo. Ad esempio, utilizzo l'ambiente desktop leggero LXQT su Raspberry Pi (sudo apt install lubuntu-desktop
) e devi disabilitare connman.service e NetworkManager.service.
sudo systemctl disable connman.service NetworkManager.service
Lettura consigliata
- Come utilizzare Systemd su Linux:gestione di servizi, livelli di esecuzione e registri
Più reti Wi-Fi
Il /etc/wpa_supplicant.conf
il file di configurazione 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 il -a
opzione con il tee
comando, che aggiungerà, invece di eliminare il contenuto originale, la nuova rete Wi-Fi al file.
Sicurezza Wi-Fi
Non utilizzare TKIP WPA2 o TKIP WPA2+AES come metodo di crittografia nel router Wi-Fi. TKIP non è più considerato sicuro. Puoi utilizzare WPA2-AES come metodo di crittografia.