In deze tutorial gaan we leren hoe verbinding te maken met Wi-Fi netwerk vanaf de opdrachtregel op Ubuntu 18.04/20.04 server en desktop met behulp van wpa_supplicant. In een modern draadloos thuisnetwerk wordt de communicatie beschermd met WPA-PSK (vooraf gedeelde sleutel) in tegenstelling tot WPA-Enterprise, dat is ontworpen voor bedrijfsnetwerken. WPA-PSK is ook bekend als WPA-Personal. wpa_supplicant is een implementatie van de WPA supplicant component. Een supplicant in wireless LAN is een client software geinstalleerd op de computer van de eindgebruiker die geauthenticeerd moet worden om toegang te krijgen tot een netwerk.
Stap 1: Vind de naam van uw draadloze interface en draadloos netwerk
Run iwconfig
commando om de naam van uw draadloze interface te vinden.
iwconfig
wlan0
was vroeger een gebruikelijke naam voor de draadloze netwerkinterface op Linux-systemen zonder Systemd. Omdat Ubuntu Systemd gebruikt, zult u merken dat uw draadloze netwerkinterface een naam heeft zoals wlp4s0
. U kunt ook zien dat het op dit moment niet is gekoppeld aan een toegangspunt.
Als uw draadloze interface niet wordt weergegeven, moet u deze misschien met het volgende commando tevoorschijn halen.
sudo ifconfig wlp4s0 up
Vind vervolgens uw draadloze netwerknaam door netwerken in de buurt te scannen met het onderstaande commando. Vervang wlp4s0
door de naam van je eigen draadloze interface. ESSID is de identificatie van de netwerknaam.
sudo iwlist wlp4s0 scan | grep ESSID
Step 2: Verbinding maken met Wi-Fi-netwerk met WPA_Supplicant
Installeer nu wpa_supplicant
op Ubuntu 18.04/20.04 vanuit de standaard software repository.
sudo apt install wpasupplicant
We moeten een bestand met de naam wpa_supplicant.conf
maken met behulp van het wpa_passphrase
hulpprogramma. wpa_supplicant.conf
is het configuratiebestand dat alle netwerken beschrijft waarmee de gebruiker wil dat de computer verbinding maakt. Voer de volgende opdracht uit om dit bestand te maken. Vervang de ESSID en Wi-Fi-wachtzin door uw eigen.
wpa_passphrase your-ESSID your-wifi-passphrase | sudo tee /etc/wpa_supplicant.conf
Merk op dat ik in de bovenstaande schermafbeelding mijn ESSID heb omwikkeld met dubbele aanhalingstekens, omdat mijn ESSID een spatie bevat.
De uitvoer van het wpa_passphrase
commando wordt naar tee
gepiped, en vervolgens naar het /etc/wpa_supplicant.conf
bestand geschreven. Gebruik nu het volgende commando om uw draadloze kaart te verbinden met een draadloos toegangspunt.
sudo wpa_supplicant -c /etc/wpa_supplicant.conf -i wlp4s0
De volgende uitvoer geeft aan dat uw draadloze kaart met succes is verbonden met een toegangspunt.
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
Aantekening: als u Ubuntu desktop editie gebruikt, dan moet u Network Manager stoppen met het volgende commando, anders zal het verbindingsprobleem veroorzaken wanneer u wpa_supplicant gebruikt.
sudo systemctl stop NetworkManager
En schakel NeworkManager auto-start bij het opstarten uit door het volgende commando uit te voeren.
sudo systemctl disable NetworkManager-wait-online NetworkManager-dispatcher NetworkManager
Bestandaard draait wpa_supplicant op de voorgrond. Als de verbinding is voltooid, open dan een ander terminalvenster en voer
iwconfig
U kunt zien dat de draadloze interface nu is gekoppeld aan een toegangspunt.
U kunt CTRL+C
om het huidige wpa_supplicant proces te stoppen en het op de achtergrond te laten draaien door de -B
vlag toe te voegen.
sudo wpa_supplicant -B -c /etc/wpa_supplicant.conf -i wlp4s0
Hoewel we geauthenticeerd zijn en verbonden met het draadloze netwerk, maar we hebben nog geen IP adres. Om een privaat IP-adres te verkrijgen van de DHCP-server, gebruikt u het volgende commando:
sudo dhclient wlp4s0
Nu heeft uw draadloze interface een privaat IP-adres, dat kan worden weergegeven met:
ip addr show wlp4s0
Nu kunt u toegang krijgen tot het internet. Om het privé-IP-adres vrij te geven, voert u
sudo dhclient wlp4s0 -r
Verbinding maken met verborgen draadloos netwerk
Als uw draadloze router geen ESSID uitzendt, moet u de volgende regel toevoegen in /etc/wpa_supplicant.conf
bestand.
scan_ssid=1
zoals hieronder:
network={ ssid="LinuxBabe.Com Network" #psk="12345qwert" psk=68add4c5fee7dc3d0dac810f89b805d6d147c01e281f07f475a3e0195 scan_ssid=1}
Stap 3: Automatisch verbinding maken bij opstarten
Om automatisch verbinding te maken met het draadloze netwerk bij het opstarten, moeten we het wpa_supplicant.service
bestand bewerken. Het is een goed idee om het bestand te kopiëren van de /lib/systemd/system/
directory naar de /etc/systemd/system/
directory, en dan de inhoud van het bestand te bewerken, omdat we niet willen dat een nieuwere versie van wpa_supplicant
onze wijzigingen overschrijft.
sudo cp /lib/systemd/system/wpa_supplicant.service /etc/systemd/system/wpa_supplicant.service
Bewerk het bestand met een command-line tekst editor, zoals Nano.
sudo nano /etc/systemd/system/wpa_supplicant.service
Vind de volgende regel.
ExecStart=/sbin/wpa_supplicant -u -s -O /run/wpa_supplicant
Verander het naar het volgende. Hier hebben we het configuratiebestand en de naam van de draadloze interface toegevoegd aan het ExecStart
commando.
ExecStart=/sbin/wpa_supplicant -u -s -c /etc/wpa_supplicant.conf -i wlp4s0
Het wordt aanbevolen om altijd te proberen wpa_supplicant opnieuw te starten wanneer er een fout wordt gedetecteerd. Voeg het volgende toe direct onder de ExecStart
regel.
Restart=always
Als u de volgende regel in dit bestand kunt vinden, becommentarieer deze dan (Voeg het # teken toe aan het begin van de regel).
Alias=dbus-fi.w1.wpa_supplicant1.service
Bewaar en sluit het bestand. (Om een bestand op te slaan in Nano tekst editor, druk op Ctrl+O
, druk dan op Enter
om te bevestigen. Om af te sluiten, druk op Ctrl+X
.) Herlaad vervolgens systemd.
sudo systemctl daemon-reload
Schakel wpa_supplicant service in om te starten tijdens het opstarten.
sudo systemctl enable wpa_supplicant.service
We moeten ook dhclient
starten tijdens het opstarten om een privé IP adres te verkrijgen van de DHCP server. Dit kan worden bereikt door een systemd service unit aan te maken voor dhclient
.
sudo nano /etc/systemd/system/dhclient.service
Plaats de volgende tekst in het bestand.
Description= DHCP ClientBefore=network.targetAfter=wpa_supplicant.serviceType=forkingExecStart=/sbin/dhclient wlp4s0 -vExecStop=/sbin/dhclient wlp4s0 -rRestart=always WantedBy=multi-user.target
Save en sluit het bestand. Schakel vervolgens deze service in.
sudo systemctl enable dhclient.service
Hoe verkrijg ik een statisch IP-adres
Als u een statisch IP-adres wilt verkrijgen, dan dient u dhclient.service
uit te schakelen.
sudo systemctl disable dhclient.service
We moeten netplan gebruiken om een statisch IP adres te configureren op Ubuntu 18.04/20.04. Maak een configuratiebestand aan onder /etc/netplan/
.
sudo nano /etc/netplan/10-wifi.yaml
Voeg de volgende regels toe aan dit bestand. Vervang 192.168.0.102
door het IP-adres van uw voorkeur. Wees voorzichtig met de inspringing. Een extra spatie zou de configuratie ongeldig maken.
network: ethernets: wlp4s0: dhcp4: no addresses: gateway4: 192.168.0.1 version: 2
Opslaan en sluiten van het bestand. Pas dan de configuraties toe.
sudo netplan apply
U kunt ook de --debug
optie aanzetten als het niet werkt zoals verwacht.
sudo netplan --debug apply
Als er andere .yaml
bestanden onder /etc/netplan/
directory staan, dan zal netplan
automatisch configuraties uit verschillende bestanden samenvoegen. netplan
gebruikt systemd-networkd
als de backend netwerk renderer. Het wordt aanbevolen om de wpa_supplicant.service
te configureren voordat systemd-networkd.service
wordt uitgevoerd, zodat het systeem zich eerst met een Wi-Fi-toegangspunt zal associëren, en dan een privé IP-adres zal verkrijgen.
sudo nano /etc/systemd/system/wpa_supplicant.service
Vind de volgende regel.
Before=network.target
Verander deze in:
Before=network.target systemd-networkd.service
Bewaar en sluit het bestand.
Een andere manier om een statisch IP adres te verkrijgen is door in te loggen op de management interface van uw router en een statisch IP adres toe te wijzen aan het MAC adres van uw draadloze kaart, als uw router deze functie ondersteunt.
Een Hostnaam gebruiken om toegang te krijgen tot diensten op Ubuntu
Eigenlijk hoeft u geen statisch IP adres te verkrijgen voor uw Ubuntu box. Ubuntu kan mDNS (Multicast DNS) gebruiken om zijn hostnaam aan te kondigen op het lokale netwerk en clients kunnen toegang krijgen tot de diensten op uw Ubuntu box met die hostnaam. Deze hostnaam kan altijd worden omgezet naar het IP adres van uw Ubuntu box, zelfs als het IP adres verandert.
Om mDNS te gebruiken, moet u avahi-daemon installeren, dat is een open-source implementatie van mDNS/DNS-SD.
sudo apt install avahi-daemon
Start de service.
sudo systemctl start avahi-daemon
Schakel auto-start in bij het opstarten.
sudo systemctl enable avahi-daemon
Avahi-daemon luistert op UDP 5353, dus u moet deze poort openen in de firewall. Als u UFW gebruikt, voer dan het volgende commando uit.
sudo ufw allow 5353/udp
Dan moet u een unieke hostnaam instellen voor uw Ubuntu box met het hostnamectl
commando. Vervang ubuntubox door de hostnaam van uw voorkeur, die niet al bezet mag zijn door andere apparaten in het lokale netwerk.
sudo hostnamectl set-hostname ubuntubox
Nu herstart u avahi-daemon.
sudo systemctl restart avahi-daemon
Als u de status controleert met
systemctl status avahi-daemon
kunt u de mDNS hostnaam zien, die eindigt op het .local
domein.
Op de clientcomputer moet u ook een mDNS/DNS-SD-software installeren.
- Linux-gebruikers moeten
avahi-daemon
installeren. - Windows-gebruikers moeten de Bonjour-service inschakelen door ofwel de Bonjour-afdrukservice te installeren of iTunes te installeren.
- Op macOS is Bonjour voorgeïnstalleerd.
Nu kunt u toegang krijgen tot diensten door gebruik te maken van de ubuntubox.local
hostnaam, waardoor u niet langer het IP-adres hoeft te controleren en in te typen.
Wifi deblokkeren op Raspberry Pi
Het Ubuntu ARM OS voor Raspberry Pi blokkeert standaard de draadloze interface. U moet het deblokkeren met:
sudo rfkill unblock wifi
Om het te deblokkeren tijdens het opstarten, maakt u een systemd service unit.
sudo nano /etc/systemd/system/unblock-wifi.service
Voeg er de volgende regels aan toe.
Description=RFKill Unblock WiFi DevicesRequires=wpa_supplicant.serviceAfter=wpa_supplicant.serviceType=oneshotExecStart=/usr/sbin/rfkill unblock wifiExecStop=RemainAfterExit=yesWantedBy=multi-user.target
Bewaar en sluit het bestand. Schakel auto-start bij het opstarten in.
sudo systemctl enable unblock-wifi
Ik vond dat de unblock-wifi.service
moet draaien nadat de wpa_supplicant.service
is gestart, anders kan het wifi niet deblokkeren. Merk op dat als je een desktop omgeving hebt geïnstalleerd, er waarschijnlijk een netwerkbeheerder draait die de verbinding kan verstoren. Die moet je uitschakelen. Ik gebruik bijvoorbeeld de lichtgewicht LXQT desktop omgeving op Raspberry Pi (sudo apt install lubuntu-desktop
) en ik moet connman.service en NetworkManager.service uitschakelen.
sudo systemctl disable connman.service NetworkManager.service
Meerdere Wi-Fi netwerken
Het /etc/wpa_supplicant.conf
configuratiebestand kan meerdere Wi-Fi netwerken bevatten. wpa_supplicant zal automatisch het beste netwerk selecteren, gebaseerd op de volgorde van de netwerkblokken in het configuratiebestand, het netwerkbeveiligingsniveau en de signaalsterkte.
Om een tweede Wi-Fi-netwerk toe te voegen, voert u
wpa_passphrase your-ESSID your-wifi-passphrase | sudo tee -a /etc/wpa_supplicant.conf
Merk op dat u de -a
optie moet gebruiken met het tee
commando, dat het nieuwe Wi-Fi-netwerk aan het bestand zal toevoegen, in plaats van de originele inhoud te verwijderen.
Wrapping Up
Ik hoop dat deze tutorial u heeft geholpen om Ubuntu 18.04/20.04 te verbinden met een Wi-Fi-netwerk vanaf de commandoregel met WPA Supplicant. Zoals altijd, als je deze post nuttig vond, schrijf je dan in op onze gratis nieuwsbrief om meer tips en trucs te krijgen 🙂