Translations:Handbook:AMD64/Networking/Advanced/2/hu
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:
/etc/conf.d/net
Pé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"
A tartalék sorrendje fontos! Ha a null opció nem lett megadva, akkor az
apipa
csak akkor futna, ha a noop
meghiúsul.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.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:
/etc/conf.d/net
Adding a net.br0 dependencyrc_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:
/etc/conf.d/net
Virtuális függőségek és rendelkezések frissítése a hálózathozrc_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:
/etc/conf.d/net
Vá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).