109.2 Lecke 2
Tanúsítvány: |
LPIC-1 |
---|---|
Verzió: |
5.0 |
Témakör: |
109 Hálózati alapok |
Fejezet: |
109.2 Perzisztens hálózatkonfiguráció |
Lecke: |
2/2 |
Bevezetés
A Linux gyakorlatilag minden olyan hálózati technológiát támogat, amelyet a szerverek, konténerek, virtuális gépek, asztali számítógépek és mobileszközök összekapcsolására használnak. Az ilyen hálózati csomópontok közötti kapcsolatok dinamikusak és heterogének lehetnek, így megfelelő kezelést igényelnek a bennük futó operációs rendszer részéről.
A múltban a forgalmazók saját, egyedi megoldásokat fejlesztettek ki a dinamikus hálózati infrastruktúra kezelésére. Ma már az olyan eszközök, mint a NetworkManager és a systemd olyan, átfogóbb és integráltabb funkciókat biztosítanak, amelyek minden egyedi igényt kielégítenek.
NetworkManager
A legtöbb Linux-disztribúció a NetworkManager szolgáltatás daemonját használja a rendszer hálózati kapcsolatainak konfigurálására és vezérlésére. A NetworkManager célja, hogy a hálózati konfigurációt a lehető legegyszerűbbé és automatikusabbá tegye. DHCP használata esetén például a NetworkManager gondoskodik az útvonalváltozásokról, az IP-címek lekéréséről és szükség esetén a DNS-szerverek helyi listájának frissítéséről. Ha vezetékes és vezeték nélküli kapcsolat is rendelkezésre áll, a NetworkManager alapértelmezés szerint a vezetékes kapcsolatot részesíti előnyben. A NetworkManager mindig megpróbál legalább egy kapcsolatot aktívan tartani, amikor csak lehetséges.
Note
|
A DHCP (Dynamic Host Configuration Protocol) segítségével a kérés általában a hálózati adapteren keresztül érkezik, amint létrejön a kapcsolat a hálózattal. A hálózaton aktív DHCP-szerver ezután válaszol a beállításokkal (IP-cím, hálózati maszk, alapértelmezett útvonal stb.), amelyeket a kérvényezőnek az IP-protokollon keresztül történő kommunikációhoz használnia kell. |
Alapértelmezés szerint a NetworkManager daemon vezérli az /etc/network/interfaces
fájlban nem említett hálózati interfészeket. Ezt azért teszi, hogy ne zavarja az esetlegesen szintén jelenlévő egyéb konfigurációs módszereket, így csak a felügyelet nélküli interfészeket módosítja.
A NetworkManager szolgáltatás a háttérben fut root jogosultságokkal, és elindítja a rendszer online tartásához szükséges műveleteket. A közönséges felhasználók hálózati kapcsolatokat hozhatnak létre és módosíthatnak olyan kliensalkalmazásokkal, amelyek — bár maguk nem rendelkeznek root jogosultságokkal --, képesek kommunikálni a mögöttes szolgáltatással a kért műveletek végrehajtása érdekében.
A NetworkManager kliensalkalmazások mind parancssori, mind grafikus környezetben elérhetők. Az utóbbi esetben a kliensalkalmazás az asztali környezet tartozékaként jelenik meg (olyan nevek alatt, mint nm-tray, network-manager-gnome, nm-applet vagy plasma-nm), és általában az asztali sáv sarkában lévő jelzőikonon keresztül vagy a rendszerkonfigurációs segédprogramból érhető el.
A parancssorban maga a NetworkManager két kliensprogramot biztosít: nmcli
és nmtui
. Mindkét program ugyanazokkal az alapfunkciókkal van ellátva, de az nmtui
egy curses-alapú interfésszel rendelkezik, míg az nmcli
egy átfogóbb parancs, amely scriptekben is használható. Az nmcli
a NetworkManager által ellenőrzött összes hálózathoz kapcsolódó tulajdonságot objects nevű kategóriákba sorolja:
general
-
A NetworkManager általános állapota és műveletei.
networking
-
Általános hálózati vezérlés.
radio
-
A NetworkManager rádiós kapcsolói.
connection
-
A NetworkManager kapcsolatai.
device
-
A NetworkManager által kezelt eszközök.
agent
-
A NetworkManager secret agent vagy polkit agent.
monitor
-
A NetworkManager változások figyelése.
Az objektum neve az nmcli
parancs fő argumentuma. Ha például a rendszer általános kapcsolati állapotát szeretnénk megjeleníteni, akkor a general
objektumot kell megadni argumentumként:
$ nmcli general STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN connected full enabled enabled enabled enabled
A STATE
oszlop azt mutatja meg, hogy a rendszer csatlakozik-e a hálózathoz vagy sem. Ha a kapcsolat külső hibás konfiguráció vagy hozzáférési korlátozások miatt korlátozott, akkor a CONNECTIVITY
oszlop nem a teljes
(full) kapcsolódási állapotot jelzi. Ha a CONNECTIVITY
oszlopban megjelenik a Portal
, az azt jelenti, hogy a csatlakozási folyamat befejezéséhez további hitelesítési lépésekre van szükség (általában a webböngészőn keresztül). A fennmaradó oszlopok a vezeték nélküli kapcsolatok állapotát jelzik (ha van ilyen), akár WIFI
, akár WWAN
(Wide Wireless Area Network, azaz mobilhálózatok). A HW
utótag azt jelzi, hogy az állapot a hálózati eszköznek felel meg, nem pedig a rendszer hálózati kapcsolatának, vagyis azt, hogy a hardver engedélyezve vagy letiltva van-e az energiatakarékosság érdekében.
Az objektum argumentumon kívül az nmcli
-nek egy parancs argumentumra is szüksége van a végrehajtáshoz. A status
parancsot használja alapértelmezés szerint, ha nincs parancsargumentum, így az nmcli general
parancsot valójában nmcli general status
-ként értelmezi.
Ha a hálózati adapter közvetlenül a hozzáférési ponthoz van csatlakoztatva kábelen keresztül, akkor aligha szükséges bármilyen intézkedést tenni, de a vezeték nélküli hálózatok további interakciót igényelnek az új tagok felvételéhez. Az nmcli
megkönnyíti a csatlakozási folyamatot, és elmenti a beállításokat a jövőbeni automatikus csatlakozás érdekében, ezért nagyon hasznos laptopok vagy más mobileszközök esetében.
A wi-fi-hez való csatlakozás előtt, célszerű először listázni a helyileg elérhető hálózatokat. Ha a rendszer rendelkezik működő wi-fi adapterrel, akkor az device
objektum azt használja a rendelkezésre álló hálózatok keresésére az nmcli device wifi list
parancs esetén:
$ nmcli device wifi list IN-USE BSSID SSID MODE CHAN RATE SIGNAL BARS SECURITY 90:F6:52:C5:FA:12 Hypnotoad Infra 11 130 Mbit/s 67 ▂▄▆_ WPA2 10:72:23:C7:27:AC Jumbao Infra 1 130 Mbit/s 55 ▂▄__ WPA2 00:1F:33:33:E9:BE NETGEAR Infra 1 54 Mbit/s 35 ▂▄__ WPA1 WPA2 A4:33:D7:85:6D:B0 AP53 Infra 11 130 Mbit/s 32 ▂▄__ WPA1 WPA2 98:1E:19:1D:CC:3A Bruma Infra 1 195 Mbit/s 22 ▂___ WPA1 WPA2
A legtöbb felhasználó valószínűleg az SSID
oszlopban szereplő nevet fogja használni a kívánt hálózat azonosítására. Például az nmcli
parancs ismét a device
objektummal tud csatlakozni a Hypnotoad
nevű hálózathoz:
$ nmcli device wifi connect Hypnotoad
Ha a parancsot grafikus környezetben, terminál emulátoron belül hajtjuk végre, akkor egy párbeszédpanel jelenik meg, amely a hálózat passphrase-t (egy jelszó jellegű hosszabb szöveg) kéri. Ha a parancsot a szöveges konzolban hajtjuk végre, a jelszót a többi argumentummal együtt adhatjuk meg:
$ nmcli device wifi connect Hypnotoad password MyPassword
Ha a wi-fi hálózat elrejti az SSID nevét, az nmcli
a hidden yes
argumentummal még mindig tud csatlakozni hozzá:
$ nmcli device wifi connect Hypnotoad password MyPassword hidden yes
Ha a rendszerben egynél több wi-fi adapter van, akkor a használandó adaptert az ifname
kapcsolóval lehet megjelölni. Példa a wlo1
nevű adapterrel való csatlakozára:
$ nmcli device wifi connect Hypnotoad password MyPassword ifname wlo1
Miután a kapcsolat létrejött, a NetworkManager a megfelelő SSID után nevezi el (ha wi-fi-ről van szó), és megtartja a jövőbeli csatlakozásokhoz. A kapcsolatok nevei és UUID-ik az nmcli connection show
paranccsal listázhatók:
$ nmcli connection show NAME UUID TYPE DEVICE Ethernet 53440255-567e-300d-9922-b28f0786f56e ethernet enp3s5 tun0 cae685e1-b0c4-405a-8ece-6d424e1fb5f8 tun tun0 Hypnotoad 6fdec048-bcc5-490a-832b-da83d8cb7915 wifi wlo1 4G a2cf4460-0cb7-42e3-8df3-ccb927f2fd88 gsm --
Az egyes kapcsolatok típusa — ami lehet ethernet
, wifi
, tun
, gsm
, bridge
, stb. — valamint az eszköz is megjelenítésre kerül, amelyhez kapcsolódnak. Egy adott kapcsolaton történő művelet végrehajtásához meg kell adni annak nevét vagy UUID-jét. Például a Hypnotoad
kapcsolat megszüntetéséhez:
$ nmcli connection down Hypnotoad Connection 'Hypnotoad' successfully deactivated
Hasonlóképpen, az nmcli connection up Hypnotoad
parancs használható a kapcsolat felállítására, mivel a NetworkManager már elmentette azt. Az interfész neve is használható az újrakapcsolódáshoz, de ebben az esetben a device
objektumot kell használni helyette:
$ nmcli device disconnect wlo2 Device 'wlo1' successfully disconnected.
Az interfész neve a kapcsolat újbóli létrehozásához is használható:
$ nmcli device connect wlo2 Device 'wlo1' successfully activated with '833692de-377e-4f91-a3dc-d9a2b1fcf6cb'.
Vegyük figyelembe, hogy a kapcsolat UUID-je minden egyes alkalommal változik, amikor a kapcsolat létrejön, ezért a következetesség érdekében célszerű a nevét használni.
Ha a vezeték nélküli adapter rendelkezésre áll, de nem használjuk, akkor az energiatakarékosság érdekében kikapcsolható. Ezúttal a radio objektumot kell átadni az nmcli
-nek:
$ nmcli radio wifi off
Természetesen a vezeték nélküli eszköz újra bekapcsolható az nmcli radio wifi on
paranccsal.
A kapcsolatok létrehozását követően a jövőben nem lesz szükség kézi beavatkozásra, mivel a NetworkManager azonosítja a rendelkezésre álló ismert hálózatokat, és automatikusan csatlakozik hozzájuk. Szükség esetén a NetworkManager rendelkezik olyan bővítményekkel, amelyekkel bővíthetők a funkciói, ilyen például a VPN-kapcsolatok támogatása.
systemd-networkd
A systemd-t futtató rendszerek opcionálisan használhatják a beépített daemonjait a hálózati kapcsolat kezelésére: a systemd-networkd
-t a hálózati interfészek vezérlésére, a systemd-resolved
-t pedig a helyi névfeloldás kezelésére. Ezek a szolgáltatások visszafelé kompatibilisek a régebbi Linux konfigurációs módszerekkel, de különösen a hálózati interfészek konfigurálása rendelkezik olyan tulajdonságokkal, amelyeket érdemes ismerni.
A systemd-networkd által a hálózati interfészek beállításához használt konfigurációs fájlok a következő három mappa valamelyikében találhatók:
/lib/systemd/network
-
A rendszer hálózati mappája.
/run/systemd/network
-
A volatilis futásidejű hálózati mappa.
/etc/systemd/network
-
A helyi adminisztrációs hálózati mappa.
A fájlok feldolgozása lexikográfiai sorrendben történik, ezért ajánlott a nevüket számokkal kezdeni, hogy a sorrend könnyebben olvasható és beállítható legyen.
Az /etc
-ben található fájlok rendelkeznek a legmagasabb prioritással, míg a /run
-ban lévők elsőbbséget élveznek az azonos nevű /lib
-ben lévő állományokkal szemben. Ez azt jelenti, hogy ha a különböző mappákban lévő konfigurációs fájlok azonos nevűek, akkor a systemd-networkd figyelmen kívül hagyja a kisebb prioritású fájlokat. A fájlok ilyen módon történő szétválasztása egy módja annak, hogy az interfész beállításait az eredeti fájlok módosítása nélkül megváltoztassuk: a /etc/systemd/network
-ben elhelyezett módosítások felülírhatják a /lib/systemd/network
-ben lévő beállításokat.
Az egyes konfigurációs fájlok célja az utótagtól (suffix) függ. A .netdev
végződésű fájlneveket a systemd-networkd virtuális hálózati eszközök, például bridge vagy tun eszközök létrehozására használja. A systemd-networkd automatikusan felismeri és konfigurálja a hálózati eszközöket, amint azok megjelennek — valamint figyelmen kívül hagyja a más módon már konfigurált eszközöket --, így a legtöbb esetben nincs szükség ezeknek a fájloknak a hozzáadására.
A legfontosabb utótag a .network
. Az ezzel az utótaggal ellátott fájlok hálózati címek és útvonalak beállítására használhatók. A többi konfigurációs fájltípushoz hasonlóan a fájl neve határozza meg a feldolgozás sorrendjét. A hálózati interfész, amelyre a konfigurációs fájl hivatkozik, az állományon belül a [Match]
szakaszban kerül meghatározásra.
Például az /etc/systemd/network/30-lan.network
fájlban az [Match]
szakaszban a Name=enp3s5
bejegyzéssel lehet kiválasztani az enp3s5
ethernet hálózati interfészt:
[Match] Name=enp3s5
A szóközzel elválasztott nevek listája is elfogadható, hogy egyszerre több hálózati interfésznek is megfeleljen ugyanazzal a fájllal. A nevek tartalmazhatnak shell-stílusú globokat, mint például en*
. Más bejegyzések különböző illesztési szabályokat adnak meg, például egy hálózati eszköz kiválasztása a MAC-címe alapján így néz ki:
[Match] MACAddress=00:16:3e:8d:2b:5b
Az eszköz beállításai a fájl [Network]
szakaszában találhatók. Egy egyszerű statikus hálózati konfigurációhoz csak az Address
és a Gateway
bejegyzésekre van szükség:
[Match] MACAddress=00:16:3e:8d:2b:5b [Network] Address=192.168.0.100/24 Gateway=192.168.0.1
Ha statikus IP-címek helyett a DHCP protokollt szeretnénk használni, akkor a DHCP
bejegyzést kell használni:
[Match] MACAddress=00:16:3e:8d:2b:5b [Network] DHCP=yes
A systemd-networkd szolgáltatás megpróbálja lekérni a hálózati interfész IPv4 és IPv6 címeit is. Csak az IPv4 esetén a DHCP=ipv4
értéket kell használni. Hasonlóképpen, a DHCP=ipv6
figyelmen kívül hagyja az IPv4 beállításokat, és csak a megadott IPv6 címet használja.
A jelszóval védett vezeték nélküli hálózatokat is konfigurálhatja a systemd-networkd, de a hálózati adaptert már hitelesíteni kell a hálózatban, mielőtt a systemd-networkd konfigurálni tudná. A hitelesítést a WPA supplicant végzi, amely egy jelszóval védett hálózatokhoz való hálózati adapterek konfigurálására szolgáló program.
Az első lépés a hitelesítő fájl létrehozása a wpa_passphrase
paranccsal:
# wpa_passphrase MyWifi > /etc/wpa_supplicant/wpa_supplicant-wlo1.conf
Ez a parancs átveszi a MyWifi
vezeték nélküli hálózat passphrase-jét a szabványos bemenetről, és a hash-jét az /etc/wpa_supplicant/wpa_supplicant-wlo1.conf
-ban tárolja. Vegyük figyelembe, hogy a fájlnévnek tartalmaznia kell a vezeték nélküli interfész megfelelő nevét, ezért szerepel benne a wlo1
.
A systemd menedzser beolvassa a WPA passphrase-ket tartalmazó fájlokat az /etc/wpa_supplicant/
állományban, és létrehozza a megfelelő szolgáltatást a WPA supplicant futtatásához és az interfész üzembe helyezéséhez. A példában létrehozott passphrase-es fájlhoz tartozik egy megfelelő szolgáltatásegység, a wpa_supplicant@wlo1.service
. A systemctl start wpa_supplicant@wlo1.service
parancs a vezeték nélküli adaptert társítja a távoli hozzáférési ponthoz. A systemctl enable wpa_supplicant@wlo1.service
paranccsal a társítás automatikus lesz a rendszerindításkor.
Végül, az /etc/systemd/network/
-ben meg kell lennie a wlo1
interfészhez tartozó .network
fájlnak, mivel a systemd-networkd ezt fogja használni az interfész konfigurálásához, amint a WPA supplicant befejezi a hozzáférési ponthoz való társítást.
Gyakorló feladatok
-
Mit jelent a
Portal
szó aCONNECTIVITY
oszlopban aznmcli general status
parancs kimenetében? -
Hogyan tud egy közönséges felhasználó egy konzolterminálban az
nmcli
paranccsal csatlakozni aMyWifi
vezeték nélküli hálózathoz, amelyet aMyPassword
jelszó véd? -
Milyen paranccsal kapcsolhatjuk be a vezeték nélküli adaptert, ha azt az operációs rendszer korábban letiltotta?
-
Az egyéni konfigurációs fájlokat melyik mappában kell elhelyezni, amikor a systemd-networkd kezeli a hálózati interfészeket?
Gondolkodtató feladatok
-
Hogyan kell futtatnia a felhasználónak az
nmcli
parancsot, ha törölni szeretné aHotel Internet
nevű, nem használt kapcsolatot? -
A NetworkManager rendszeresen vizsgálja a wi-fi hálózatokat, és az
nmcli device wifi list
parancs csak a legutóbbi vizsgálat során talált hozzáférési pontokat listázza. Hogyan kell használni aznmcli
parancsot, hogy a NetworkManager azonnal új szkennelést hajtson végre az összes elérhető hozzáférési pont megtalálásának érdekében? -
Milyen
name
bejegyzést kell használni a systemd-networkd konfigurációs fájl[Match]
szakaszában, hogy az az összes ethernet interfésznek megfeleljen? -
Hogyan kell végrehajtani a
wpa_passphrase
parancsot, hogy az argumentumként megadott passphrase-t használja, és ne a standard bemenetet?
Összefoglalás
Ez a lecke a Linuxban a heterogén és dinamikus hálózati kapcsolatok kezelésére használt általános eszközöket tárgyalja. Bár a legtöbb konfigurációs módszer nem igényel felhasználói beavatkozást, néha mégis szükség van rá, és az olyan eszközök, mint a NetworkManager és a systemd-networkd minimálisra csökkenthetik a gondokat. A lecke a következő témákat járja körül:
-
Hogyan integrálódik a NetworkManager és a systemd-networkd a rendszerbe.
-
Hogyan léphet kapcsolatba a felhasználó a NetworkManagerrel és a systemd-networkd-vel.
-
A NetworkManager és a systemd-networkd alapvető interfész-konfigurációja.
A bemutatott koncepciók, parancsok és procedúrák az alábbiak voltak:
-
NetworkManager kliensparancsok:
nmtui
ésnmcli
. -
Vezeték nélküli hálózatok keresése és csatlakoztatása az
nmcli
megfelelő parancsaival. -
Tartós wi-fi hálózati kapcsolatok a systemd-networkd használatával.
Válaszok a gyakorló feladatokra
-
Mit jelent a
Portal
szó aCONNECTIVITY
oszlopban aznmcli general status
parancs kimenetében?Ez azt jelenti, hogy a csatlakozási folyamat befejezéséhez további hitelesítési lépésekre van szükség (általában a webböngészőn keresztül).
-
IHogyan tud egy közönséges felhasználó egy konzolterminálban az
nmcli
paranccsal csatlakozni aMyWifi
vezeték nélküli hálózathoz, amelyet aMyPassword
jelszó véd?Egy szöveges terminálban a parancs:
$ nmcli device wifi connect MyWifi password MyPassword
-
Milyen paranccsal kapcsolhatjuk be a vezeték nélküli adaptert, ha azt az operációs rendszer korábban letiltotta?
$ nmcli radio wifi on
-
Az egyéni konfigurációs fájlokat melyik mappában kell elhelyezni, amikor a systemd-networkd kezeli a hálózati interfészeket?
A helyi hálózati adminisztrációs mappában:
/etc/systemd/network
.
Válaszok a gondolkodtató feladatokra
-
Hogyan kell futtatnia a felhasználónak az
nmcli
parancsot, ha törölni szeretné aHotel Internet
nevű, nem használt kapcsolatot?$ nmcli connection delete "Hotel Internet"
-
A NetworkManager rendszeresen vizsgálja a wi-fi hálózatokat, és az
nmcli device wifi list
parancs csak a legutóbbi vizsgálat során talált hozzáférési pontokat listázza. Hogyan kell használni aznmcli
parancsot, hogy a NetworkManager azonnal új szkennelést hajtson végre az összes elérhető hozzáférési pont megtalálásának érdekében?A root felhasználó tudja futtatni a
nmcli device wifi rescan
parancsot. -
Milyen
name
bejegyzést kell használni a systemd-networkd konfigurációs fájl[Match]
szakaszában, hogy az az összes ethernet interfésznek megfeleljen?A
name=en*
bejegyzést, mivel azen
az ethernet interfészek előtagja a Linuxban, és a systemd-networkd elfogadja a shell-szerű globokat. -
Hogyan kell végrehajtani a
wpa_passphrase
parancsot, hogy az argumentumként megadott passphrase-t használja, és ne a standard bemenetet?A jelszót közvetlenül az SSID után kell megadni, például
wpa_passphrase MyWifi MyPassword
.