[ << ]
[ < ]
[ Hauptseite ]
[ > ]
[ >> ]
2. Fortgeschrittene Konfiguration
Inhalt:
2.a. Erweiterte Konfiguration
Das Herz der Konfiguration der Schnittstellen ist die Variable
config_eth0. Es ist eine hochsprachliche Anweisungsliste zur
Konfiguration der Schnittstelle (in diesem Fall eth0). Die Anweisungen
in der Liste werden der Reihe nach abgearbeitet. Wenn mindestens eine Anweisung
korrekt ausgeführt wird, wird von einer erfolgreichen Konfiguration der
Schnittstelle ausgegangen.
Hier ist eine Liste der eingebauten Anweisungen.
| Anweisung |
Beschreibung |
| null |
Nichts machen |
| noop |
Wenn die Schnittstelle aktiviert ist und eine Adresse vorhanden ist,
beende die Konfiguration erfolgreich.
|
| eine IPv4 oder IPv6 Adresse |
Die angegebene Adresse zur Schnittstelle hinzufügen |
|
dhcp, adsl or apipa (oder ein spezielles Kommando
von einem externen Modul)
|
Das Modul ausführen, das das Kommando bereitstellt. Beispielsweise ruft
dhcp ein Modul auf, das DHCP bereitstellt - das kann entweder
dhcpcd, dhclient oder pump sein.
|
Schlägt eine Anweisung fehl, können sie eine andere Anweisung als
Ausweichlösung angeben. Dieses muss der Konfigurationsstruktur genau folgen.
Sie können die verschiedenen Anweisungen aneinanderhängen. Es folgen einige
Beispiele aus der Praxis.
Befehlsauflistung 1.1: Konfigurationsbeispiel |
config_eth0="192.168.0.2/24
192.168.0.3/24
192.168.0.4/24"
config_eth0="192.168.0.2/24
4321:0:1:2:3:4:567:89ab
4321:0:1:2:3:4:567:89ac"
config_eth0="noop
dhcp"
fallback_eth0="null
apipa"
|
Notiz:
Wenn Sie das ifconfig Modul benutzen und mehr als eine Adresse
hinzufügen, wird für jede neue Adresse ein Alias erstellt. Mit obigem Beispiel
erhalten Sie zum Beispiel die Schnittstellen eth0, eth0:1 und
eth0:2. Sie können damit nichts weiter anfangen, da der Kernel und
andere Programme eth0:1 und eth0:2 einfach als eth0
behandeln werden.
|
Wichtig:
Die Reihenfolge in den Anweisungen der Ausweichlösung ist wichtig! Würden wir
nicht die null Option hinzufügen, würde apipa nur ausgeführt,
wenn noop fehlschlagen würde.
|
Notiz:
APIPA und DHCP werden später im Detail behandelt.
|
2.b. Netzwerk-Abhängigkeiten
Initskripte in /etc/init.d können von einer speziellen
Netzwerkschnittstelle abhängen oder einfach von net. Alle
Netzwerkschnittstellen in Gentoos Init-System stellen net bereit.
Falls in /etc/rc.conf rc_depend_strict="YES" gesetzt ist,
müssen alle Netzwerkschnittstellen, die net bereitstellen, aktiv sein, bevor
eine Abhängigkeit auf "net" als gegeben angenommen wird. In anderen Worten,
falls Sie ein net.eth0 und net.eth1 sowie ein
Init-Skript haben, das von "net" abhängt, müssen beide Schnittstellen
aktiviert sein.
Andernfalls, wenn Sie rc_depend_strict="NO" gesetzt haben, dann wird die
"net"-Abhängigkeit als gegeben angenommen, sobald mindestens eine
Netzwerkschnittstelle aktiv ist.
Was aber, wenn net.br0 von net.eth0 und
net.eth1 abhängt? net.eth1 könnte eine drahtlose oder
Wählverbindung sein, die vor dem Hinzufügen zur Bridge konfiguriert werden
muss. Das kann nicht in /etc/init.d/net.br0 erfolgen, da es sich
um einen symbolischen Link auf net.lo handelt.
Die Antwort darauf lautet, dass Sie eine rc_need_ Einstellung in
/etc/conf.d/net definieren.
Befehlsauflistung 2.1: net.br0 Abhängigkeit in /etc/conf.d/net |
rc_need_br0="net.eth0 net.eth1"
|
Das allein reicht aber nicht aus. Gentoos Init-Skripte verwenden eine
virtuelle Abhängigkeit namens net, die dem System mitteilt, wann
Netzwerkfunktionalität vorhanden ist. In obigem Beispiel sollte die
Netzwerkfunktionalität aber offensichtlich erst als vorhanden gesehen werden,
wenn net.br0 gestartet wurde, nicht wenn die anderen gestartet
wurden. Wir müssen dies ebenfalls in /etc/conf.d/net angeben:
Befehlsauflistung 2.2: Aktualisieren der virtuellen Abhängigkeiten und Voraussetzungen für Netzwerkfunktionalität |
rc_net_lo_provide="!net"
rc_net_eth0_provide="!net"
rc_net_eth1_provide="!net"
|
Weitere Details zu Abhängigkeiten gibt es im Kapitel Schreiben von Initskripten des Gentoo
Handbuchs. Weitere Informationen zur /etc/rc.conf finden Sie als
Kommentare innerhalb der Datei.
2.c. Variablennamen und ihre Werte
Variablennamen sind dynamisch. Normalerweise gehorchen sie der Struktur
variable_${interface|mac|essid|apmac}. Zum Beispiel verwaltet die
Variable dhcpcd_eth0 die Werte für dhcpcd Optionen für eth0 und
dhcpcd_essid verwaltet die Werte der dhcpcd Optionen, wann immer sich
eine Schnittstelle zur ESSID "essid" verbindet.
Nichtsdestotrotz gibt es keine harte Regel, die angibt, das Schnittstellen dem
Schema ethx folgen müssen. In der Tat besitzen viele drahtlose Schnittstellen
die Namen wlanx, rax oder auch ethx. Einige benutzerdefinierte Schnittstellen
wie Bridges können frei wählbare Namen gegeben werden, etwa foo. Um das ganze
noch etwas interessanter zu gestalten, können drahtlose Zugangspunkte Namen mit
nicht alphanumerischen Zeichen haben - das ist wichtig, da Netzwerkparameter
per ESSID eingestellt werden können.
Der Nachteil dessen ist aber, das dadurch Konflikte auftreten, denn Gentoo
benutzt bash Variablen - die dürfen allerdings nur englische alphanumerische
Zeichen enthalten. Um diese Beschränkung zu umgehen, ersetzen wir alle Zeichen,
die keine englischen alphanumerischen Zeichen sind, durch ein _ Zeichen.
Ein weiterer Nachteil der bash ist der Variableninhalt - einige Zeichen müssen
escaped (durch umgekehrten Schrägstrich geschützt) werden. Dazu setzt man ein
\ Zeichen vor das Zeichen, das escaped werden muss. Die folgende Liste
von Zeichen muss auf diese Weise escaped werden: ", ' und
\.
In diesem Beispiel benutzen wir eine drahtlose ESSID, da diese den größten
Bereich an Zeichen zulässt. Gehen wir davon aus, dass wir die ESSID
My "\ NET verwenden:
Befehlsauflistung 3.1: Beispiel für Variablennamen |
dns_domain_My____NET="My \"\\ NET"
|
[ << ]
[ < ]
[ Hauptseite ]
[ > ]
[ >> ]
Die Inhalte dieses Dokuments sind, sofern nicht explizit
anders genannt, unter der Creative Commons -
Namensnennung / Weitergabe Lizenz lizenziert. Die Gentoo Name and Logo
Usage Guidelines treffen zu.
|