Konfigurera nätverket med systemd-networkd
Det finns ett universellt sätt att konfigurera nätverket på i nyare
Linuxutgåvor, och det är via systemd
. Detta fungerar för exempelvis Debian,
Ubuntu, Fedora-baserade utgåvor, Arch Linux med flera.
Arch Linux är en av få Linuxutgåvor som använder detta sättet som standard. Men
inom kort tror jag att fler utgåvor kommer att börja använda systemd-networkd,
av den anledningen att det redan finns stöd för det i Linux. De enskilda
Linuxutgåvorna behöver då inte bygga egna verktyg för att konfigurera nätverket.
Dessutom har det en annan fördel, nämligen att med systemd-networkd blir
Linuxutgåvorna mer enhetliga. Precis som systemd
har gjort så mycket annat i
Linux mer enhetligt mellan utgåvorna, kommer systemd-networkd fortsätta att
göra dem än mer enhetliga.
Jag kommer börja med att visa hur man byter från NetworkManager till systemd-networkd på Fedora. Processen är liknande för andra utgåvor med bara mindre skillnader.
För att byta måste vi börja med att avaktivera NetworkManager så att den inte startar automatiskt när datorn startas.
#> systemctl disable NetworkManager
...
#> systemctl disable network
...
Det är inte säkert att disable network
fungerar på just din dator. Beroende på
version finns det en rad nätverksskript som startas och stoppas med
network
. Får du ett felmeddelande om att Unit network.service does not exist
kan du ignorera det.
Därefter måste vi aktivera systemd-networkd. Detta gör vi med:
#> systemctl enable systemd-networkd
...
Vi måste även aktivera den inbyggda DNS-resolvern i systemd
samt ta bort den
gamla /etc/resolv.conf. Denna ska vi istället länka till resolvern i
systemd
.
#> systemctl enable systemd-resolved
...
#> systemctl start systemd-resolved
#> rm /etc/resolv.conf
#> ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
Nu måste vi konfigurera nätverkskortet innan vi startar om datorn. Ta en titt på
ip addr
för att se vad ditt nätverkskort heter. I mitt fall är det ens3. Vi
skapar därefter en konfigurationsfil i /etc/systemd/network för kortet.
#> cd /etc/systemd/network
Skapa en fil som heter exempelvis ens3.network under förutsättning att ditt nätverkskort heter ens3. För att använda automatiskt konfiguration med DHCP ska innehållet se ut som nedan:
[Match]
Name=ens3
[Network]
DHCP=yes
Om du istället vill använda en statisk konfiguration kan filen se ut som nedan:
[Match]
Name=ens3
[Network]
Address=192.168.0.134/24
Address=2001:470:xxxx:1:xxxx:xx:xxxx:4e79/64
Gateway=192.168.0.1
Gateway=2001:470:xxxx:1::1
DNS=192.168.0.1
DNS=2001:470:xxxx:1::1
Nu kan du starta om datorn så att de nya inställningarna får effekt och NetworkManager släpper taget om nätverkskortet. Du bör dock endast starta om datorn om du har fysisk tillgång till den ifall någon konfiguration skulle visa sig vara felaktig.
För att läsa om de olika konfigurationsdirektiven som finns tillgängliga se
man systemd.network
.
För att se status för nätverkskorten använder vi kommandot
networkctl
.
$> networkctl
IDX LINK TYPE OPERATIONAL SETUP
1 lo loopback carrier unmanaged
2 ens3 ether routable configured
2 links listed.
För att starta om nätverket när du gjort ändringar kör du kommandot:
#> systemctl restart systemd-networkd
Trådlöst nätverk med systemd-networkd
Instruktionerna här är testade på Fedora 29 och bör vara relativt enkla att anpassa för andra Linuxutgåvor.
Börja med att lista dina nätverkskort och deras status med
networkctl
.
#> networkctl
IDX LINK TYPE OPERATIONAL SETUP
1 lo loopback carrier unmanaged
2 ens3 ether routable configured
3 wls9u1 wlan off unmanaged
3 links listed.
Här ser vi att wls9u1 är mitt trådlösa nätverkskort (eftersom det listas som wlan under TYPE).
Vi börjar med att konfigurera kortet precis som vi gjorde tidigare med det trådbundna nätverkskortet ens3. Här väljer jag att låta kortet konfigureras via DHCP. Skapa en fil /etc/systemd/network/wls9u1.network med följande innehåll (ändra filnamnet och Name till det som just ditt kort heter):
[Match]
Name=wls9u1
[Network]
DHCP=yes
Starta sedan om nätverket.
#> systemctl restart systemd-networkd
Nu är det dags att konfigurera det trådlösa kortet så att det kan koppla sig upp mot accesspunkten. Detta måste vi göra med ett tredjepartsverktyg kallat WPA Supplicant. Installerat programmet med:
#> dnf install wpa_supplicant
Om du använder en desktop-utgåva är chansen stor att paketet redan finns installerat.
Innan vi börjar använda WPA Supplicant måste vi skapa en enkel konfiguration. Chansen är stor att denna redan finns och i så fall behöver du inte gör något just nu med den filen. På min dator ser filen ut så här:
#> cat /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
Men däremot måste vi lägga till konfigurationen för ditt trådlösa nätverk, det
vill säga SSID och lösenord för nätverket. För att dölja lösenordet – så att
det inte står i klartext i filen – använder vi kommandot wpa_passprase
.
Kommandot genererar en lång sträng så att det riktiga lösenordet inte går att
läsa. Utdatan från programmet omdirigerar vi till filen
/etc/wpa_supplicant/wpa_supplicant.conf som vi nyss tittade på. I
nedanstående exempel är eyes_only mitt SSID och MyVerySecretPassword är
lösenordet till det nätverket.
Var noga med att använda två omdirigeringstecken – vi ska lägga till konfigurationen till wpa_supplicant.conf, inte skriva över den.
#> wpa_passphrase eyes_only MyVerySecretPassword >> \
> /etc/wpa_supplicant/wpa_supplicant.conf
Nu är det dags att öppna filen
/etc/wpa_supplicant/wpa_supplicant.conf. Vi måste nämligen radera en
kommentar. Som standard lägger wpa_passphrase
till det riktiga lösenord i
klartext som en kommentar.
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
network={
ssid="eyes_only"
#psk="MyVerySecretPassword"
psk=a78e6f648315a810dfe3868c01086faa58c4c0e48253d3671cc2...
}
Radera alltså raden #psk=”MyVerySecretPassword” så att ingen kan se lösenordet till det trådlösa nätverk i klartext. Spara sedan filen.
Därefter måste vi specificera vårt nätverkskort i filen
/etc/sysconfig/wpa_supplicant. På raden som börjar med INTERFACES= ska du
lägga till nätverkskortet. Se nedan för ett exempel från min egna dator. Notera
att du måste lägga till -i
precis innan nätverkskortet.
INTERFACES="-iwls9u1"
Nu är det dags att starta om tjänsten WPA Supplicant med systemd
.
#> systemctl restart wpa_supplicant
Om du vill kontrollera huruvida uppkopplingen mot det trådlösa nätverket lyckades kan du köra:
#> systemctl status wpa_supplicant
... systemd[1]: Starting WPA supplicant...
... systemd[1]: Started WPA supplicant.
... wpa_supplicant[663]: Successfully initialized wpa_supplicant
... wpa_supplicant[663]: wls9u1: SME: Trying to authenticate with
... wpa_supplicant[663]: wls9u1: Trying to associate with f8:1a:6
... wpa_supplicant[663]: wls9u1: Associated with f8:1a:67:90:91:d
... wpa_supplicant[663]: wls9u1: CTRL-EVENT-SUBNET-STATUS-UPDATE
... wpa_supplicant[663]: wls9u1: WPA: Key negotiation completed w
... wpa_supplicant[663]: wls9u1: CTRL-EVENT-CONNECTED - Connectio
Du bör se något liknande om uppkopplingen lyckades.
Kontrollera gärna också med networkctl
.
#> networkctl
IDX LINK TYPE OPERATIONAL SETUP
1 lo loopback carrier unmanaged
2 ens3 ether routable configured
3 wls9u1 wlan routable configured
3 links listed.
Under OPERATIONAL ser vi att båda nätverkskorten är ansluta och fungerar eftersom det står routable här. Skulle det trådlösa nätverkskortet inte ha lyckats koppla upp sig står det troligen no-carrier istället. Texten no-carrier visas även för trådbundna nätverk om du kopplar ur kabeln till nätverkskortet.
Relaterat
Senaste nyheterna och inläggen
CyberInfo Sverige är ett IT- och medieföretag i nordvästra Skåne som tillhandahåller böcker, utbildningar, nyheter och konsulttjänster inom Linux, BSD och programmering.
CyberInfo Sverige är godkänd för F-skatt, är momsregistrerat och innehar
utgivningsbevis för webbplatsen www.cyberinfo.se.