Translations:Handbook:AMD64/Networking/Advanced/2/hu

From Gentoo Wiki
Jump to:navigation Jump to:search
Handbook:AMD64 kézikönyv
A Gentoo Linux telepítése
A telepítésről
Telepítőképfájl kiválasztása
Hálózat beállítása
Adathordozók előkészítése
Stage fájl
Alaprendszer telepítése
Kernel beállítása
Rendszer beállítása
Eszközök telepítése
Bootloader beállítása
Telepítés véglegesítése
Munka a Gentoo rendszerrel
Portage bemutatása
USE jelölőzászlók
Portage jellemzői
Init-szkript rendszer
Környezeti változók
Munka a Portage szoftvercsomag-kezelővel
Fájlok és könyvtárak
Változók
Szoftverágak keverése
További eszközök
Egyéni szoftvercsomag-tárolóhely
Fejlett funkciók
Hálózat beállítása OpenRC init-rendszeren
Munka elkezdése
Fejlett beállítások
Moduláris hálózat
Vezeték nélküli (Wi-Fi)
Funkcionalitás hozzáadása
Dinamikus menedzsment


Fejlett beállítás

A config_{interface} változó - ahol a {interface} egy interfész neve, például eth0 - az interfész beállításának a központi eleme. A változó értéke egy magas szintű utasításlista a megadott interfész beállításához.

Itt van egy lista a beépített utasításokról:

Érték Leírás
null Semmit se nem csinál.
noop Ha az interfész aktív, és van cím, akkor a beállítást sikeresen megszakítja.
IPv4 vagy IPv6 cím. Cím hozzáadása az interfészhez.
dhcp, adsl vagy apipa (vagy egy harmadik fél moduljából származó egyéni érték). Futtassa azt a modult, amely biztosítja a parancsot. Például a dhcp egy olyan modult fog futtatni, amely DHCP szolgáltatást biztosít (például dhcpcd, dhclient stb. révén).

A parancs sikertelenségének kezeléséhez egy megfelelő tartalékérték adható meg a fallback_{interface} változó segítségével. Az értéknek pontosan meg kell egyeznie a megfelelő config_{interface} változó szerkezetével.

Lehetséges ezeket az értékeket összeláncolni. Íme néhány valós példa:

FILE /etc/conf.d/netPéldák a beállításra
# Adding three IPv4 addresses
config_eth0="192.168.0.2/24
192.168.0.3/24
192.168.0.4/24"
  
# Adding an IPv4 address and two IPv6 addresses
config_eth0="192.168.0.2/24
4321:0:1:2:3:4:567:89ab
4321:0:1:2:3:4:567:89ac"
  
# Keep our kernel assigned address, unless the interface goes
# down so assign another via DHCP. If DHCP fails then add a
# static address determined by APIPA
config_eth0="noop
dhcp"
fallback_eth0="null
apipa"
Important
A tartalék sorrendje fontos! Ha a null opció nem lett megadva, akkor az apipa csak akkor futna, ha a noop meghiúsul.
Note
Amikor az ifconfig modult használja és több címet ad hozzá, akkor az extra címekhez interfész aliasok jönnek létre. Tehát a fenti két példa alapján a felhasználók eth0, eth0:1 és eth0:2 interfészeket kapnak. Ezekkel az interfészekkel nem lehet semmi különlegeset tenni, mivel a kernel és más programok egyszerűen eth0:1 és eth0:2 interfészekként kezelik őket.
Note
A APIPA (kézikönyv) és a DHCP (kézikönyv) a moduláris hálózati rész című részben kerülnek megvitatásra.

Hálózati függőségek

Az /etc/init.d/ könyvtárban található init szkriptek függhetnek egy adott hálózati interfésztől vagy egyszerűen a "net"-től. Minden hálózati interfész a Gentoo init rendszerében biztosítja a "net" nevű szolgáltatást.

Ha az /etc/rc.conf fájlban a rc_depend_strict változó értéke YES-re van állítva, akkor minden olyan hálózati interfésznek, amely biztosítja a "net" szolgáltatást, aktívnak kell lennie, mielőtt a "net" függőség teljesítettnek tekinthető. Más szóval, ha egy rendszernek van net.eth0 és net.eth1 interfésze, és egy init szkript a "net"-től függ, akkor mindkettőt engedélyezni kell.

Másrészt, ha a rc_depend_strict="NO" van beállítva, akkor a "net" függőség már akkor teljesítettnek tekinthető, amikor legalább egy hálózati interfész működésbe lép.

Egy hálózati interfész, mint például a net.br0, függhet a net.eth0 és net.eth1 interfészektől. Ha a net.eth1 egy vezeték nélküli vagy PPP eszköz, amely konfigurálást igényel, mielőtt hozzáadható a hídhoz, ezt nem lehet megtenni az /etc/init.d/net.br0 fájlban, mivel ez egy szimbolikus link a net.lo-hoz.

A megoldás az, hogy meghatározza az rc_net_{interface}_need beállítást az /etc/conf.d/net fájlban:

FILE /etc/conf.d/netAdding a net.br0 dependency
rc_net_br0_need="net.eth0 net.eth1"

Ez önmagában nem elegendő. A Gentoo hálózati init szkriptjei virtuális függőséget használnak "net" néven, hogy tájékoztassák a rendszert, amikor a hálózat elérhető. A fenti esetben egyértelműen csak akkor szabadna a hálózatot elérhetőnek jelölni, amikor a net.br0 működik, nem pedig amikor a többi. Ezt a következőképpen kell beállítani az /etc/conf.d/net fájlban is:

FILE /etc/conf.d/netVirtuális függőségek és rendelkezések frissítése a hálózathoz
rc_net_eth0_provide="!net"
rc_net_eth1_provide="!net"

A függőségek részletesebb ismertetésének az érdekében tekintse meg a Gentoo Kézikönyv init szkriptek írásáról szóló szakaszát.

Változónevek és értékek

A változók nevei dinamikusak. Általában a következő szerkezetet követik: {variable}_{interface|mac|essid|apmac}. Például a dhcpcd_eth0 változó az eth0-hoz tartozó dhcpcd opciók értékét tartalmazza, míg a dhcpcd_essid változó a dhcpcd opciók értékét tartalmazza, amikor bármelyik interfész csatlakozik az "essid" ESSID-hez.

Nincs szabály arra vonatkozóan, hogy az interfészneveknek ethx formátumúnak kell lenniük. Például az alapértelmezett beállítás szerint a kernel a vezeték nélküli interfészeket olyan nevekkel látja el, mint wlanx. Továbbá, a felhasználók által definiált interfészek, például hidak, bármilyen nevet kaphatnak. Hogy az élet még érdekesebb legyen, a vezeték nélküli hozzáférési pontok nevei tartalmazhatnak nem alfanumerikus karaktereket is - ez azért fontos, mert a felhasználók beállíthatják a hálózati paramétereket egyes ESSID-ekhez.

A Gentoo a hálózatkezeléshez Bash változókat használ, és a Bash-ban a változónevek nem tartalmazhatnak mást, mint angol alfanumerikus karaktereket. Ezt a korlátozást úgy kerüljük meg, hogy minden nem angol alfanumerikus karaktert _ (aláhúzás) karakterré alakítunk át.

A Bash másik hátránya a változók tartalma - bizonyos karaktereket ki kell kerülni. Ezt úgy lehet megoldani, hogy a \ (hátrafelé perjel) karaktert az elkerülendő karakter elé helyezzük. Az alábbi karaktereket kell így elkerülni: ", ' és \.

Például az My "\ NET ESSID megadásához:

FILE /etc/conf.d/netVáltozók nevei
# This does work, but the domain is invalid
dns_domain_My____NET="My \"\\ NET"

A fenti példa beállítja a DNS domént My "\ NET-re, amikor egy vezeték nélküli kártya csatlakozik egy AP-hez, amelynek ESSID-je My "\ NET.

Hálózati interfész nevek

Hogyan működik?

A hálózati interfész nevek nem véletlenszerűen vannak választva: A Linux kernel és az eszközkezelő (a legtöbb rendszerben az udev az eszközkezelő, bár mások is elérhetőek) rögzített szabályrendszeren keresztül választják ki az interfész nevét.

Amikor egy hálózati kártyát érzékel a rendszeren, a Linux kernel összegyűjti a szükséges adatokat erről a kártyáról. Ez magában foglalja:

  • Az alaplapra ráforrasztott hálózati kártya regisztrált neve, amely később az ID_NET_NAME_ONBOARD értékben látható.
  • Az a hely, ahol a hálózati kártya be van dugva, amely később az ID_NET_NAME_SLOT értékben látható.
  • Az elérési útvonal, amelyen keresztül a hálózati kártya eszköz elérhető, amely később az ID_NET_NAME_PATH értékben látható.
  • A (gyártó által biztosított) hálózati kártya MAC-címe, amely később az ID_NET_NAME_MAC értékben látható.

Ezen információk alapján az eszközkezelő dönti el, hogy miként nevezze el az interfészt a rendszeren. Alapértelmezés szerint az első három változó egyikének első találatát használja (ID_NET_NAME_ONBOARD, _SLOT vagy _PATH). Például, ha az ID_NET_NAME_ONBOARD értéke megtalálható és eno1-re van állítva, akkor az interfész neve eno1 lesz.

Egy aktív interfész neve esetén a megadott változók értékei megjeleníthetők az udevadm segítségével:

root #udevadm test-builtin net_id /sys/class/net/enp3s0 2>/dev/null
ID_NET_NAME_MAC=enxc80aa9429d76
ID_OUI_FROM_DATABASE=Quanta Computer Inc.
ID_NET_NAME_PATH=enp3s0

Mivel a felső három változó közül az első (és valójában az egyetlen) találat az ID_NET_NAME_PATH, az értékét használjuk interfész névként. Ha egyik változó sem tartalmaz értéket, akkor a rendszer visszatér a kernel által megadott elnevezéshez (eth0, eth1, stb.).

Régi típusú kernel elnevezés használata

A változás előtt a hálózati interfész kártyákat maga a Linux kernel nevezte el, attól függően, hogy milyen sorrendben töltődnek be az illesztőprogramok (és más, esetleg homályosabb okokból). Ezt a viselkedést Ön még mindig engedélyezheti, ha a bootloader-ben a net.ifnames=0 boot paramétert be állítja.

Egyéni nevek használata

Az elnevezési séma megváltozásának nem az a célja, hogy az embereket összezavarja, hanem az interfész nevek könnyebb megváltoztatása. Tegyük fel, hogy egy rendszer két interfésszel rendelkezik, amelyeket egyébként eth0 és eth1 néven lennének elnevezve. Az egyik a hálózat vezetékes elérésére szolgál, a másik pedig a vezeték nélküli hozzáférésre. Az interfész elnevezés támogatásával a felhasználók ezeket lan0 (vezetékes) és wifi0 (vezeték nélküli) nevekkel hívhatják. Érdemes kerülni a korábban jól ismert nevek, mint például az eth* és wlan* használatát, mivel ezek még mindig ütközhetnek a javasolt nevekkel.

Tudja meg, mik a hálózati kártyák paraméterei, majd használja fel ezeket az információkat egy egyedi elnevezési szabály beállításához:

root #udevadm test-builtin net_id /sys/class/net/eth0 2>/dev/null
ID_NET_NAME_MAC=enxc80aa9429d76
ID_OUI_FROM_DATABASE=Quanta Computer Inc.
root #vim /etc/udev/rules.d/70-net-name-use-custom.rules
# First one uses MAC information, and 70- number to be before other net rules
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="c8:0a:a9:42:9d:76", NAME="lan0"
root #vim /etc/udev/rules.d/76-net-name-use-custom.rules
# Second one uses ID_NET_NAME_PATH information, and 76- number to be between
# 75-net-*.rules and 80-net-*.rules
SUBSYSTEM=="net", ACTION=="add", ENV{ID_NET_NAME_PATH}=="enp3s0", NAME="wifi0"

Mivel a szabályok az alapértelmezett előtt vannak aktiválva (a szabályok alfanumerikus sorrendben aktiválódnak, tehát a 70 megelőzi a 80-at), a szabályfájlban megadott nevek lesznek használva az alapértelmezettek helyett. A fájlnak adott számnak 76 és 79 között kell lennie (a környezeti változók egy 75-tel kezdődő szabály által vannak definiálva, és az alapértelmezett elnevezés egy 80-as számmal rendelkező szabályban történik).