Gentoo Linux alpha Handbuch: Netzwerk-Konfiguration
Der folgende Netzwerkteil des Handbuchs beschreibt die 'fortgeschrittene' Netzwerkkonfiguration für Systeme, die das OpenRC-Init-System mit netifrc als Netzwerkmanagementsystem verwenden.
Für Systeme, auf denen systemd läuft, sollten die Leser den Networking-Teil des systemd-Artikels durchlesen.
Erste Schritte
In diesem Netzwerkhandbuch wird davon ausgegangen, dass der Benutzer das System korrekt konfiguriert und den/die Namen der Netzwerkschnittstelle(n) der Hardware bestimmt hat. Der Name der Netzwerkschnittstelle wird auf der Grundlage der Busposition der Netzwerkkarte(n) im System erstellt. Aus diesem Grund gibt es potenzielle Varianten für Schnittstellennamen wie eno0, ens1, wlan0, enp1s0 usw. Jedes System kann einen etwas anderen Schnittstellennamen haben. Im Folgenden wird davon ausgegangen, dass der Name der zu konfigurierenden Schnittstelle eth0 ist, obwohl jeder der oben genannten Namen funktioniert.
Um mit der Konfiguration der Netzwerkkarte zu beginnen, geben Sie dem Gentoo RC System über sie Bescheid. Dies geschieht im Verzeichnis /etc/init.d dadurch die Erzeugung eines symbolischen Links auf net.lo mit dem Namen net.eth0 (oder wie auch immer die Netzwerkschnittstelle auf dem System heißt).
root #
cd /etc/init.d
root #
ln -s net.lo net.eth0
Gentoos RC System weiß nun dass es die Schnittstelle gibt. Es muss außerdem darüber Bescheid wissen, wie die neue Netzwerkschnittstelle zu konfigurieren ist. Alle Netzwerkschnittstellen werden in der /etc/conf.d/net Datei konfiguriert. Unten befindet sich eine Beispielkonfiguration für DHCP und statische Adressen.
# Für DHCP
config_eth0="dhcp"
# Für statisches IP mit CIDR-Notation
config_eth0="192.168.0.7/24"
routes_eth0="default via 192.168.0.1"
dns_servers_eth0="192.168.0.1 8.8.8.8"
# Für statisches IP mit Netmask-Notation
config_eth0="192.168.0.7 netmask 255.255.255.0"
routes_eth0="default via 192.168.0.1"
dns_servers_eth0="192.168.0.1 8.8.8.8"
Wenn für eine Schnittstelle keine Konfiguration genannt ist, wird DHCP angenommen.
CIDR steht für Classless Inter-Domain Routing. Ursprünglich wurden die IPv4 Adressen in A, B oder C eingeteilt. Das frühe Einteilungssystem sah die starke Popularität des Internets nicht voraus und befindet sich in der Gefahr, dass ihm neue eindeutige Adressen ausgehen. CIDR ist ein Adressierungsschema das es erlaubt einer IP-Adresse viele IP-Adressen zuzuordnen. Eine CIDR IP-Adresse sieht wie eine gewöhnliche IP-Adresse aus mit dem Unterschied, dass sie mit einem Schrägstrich gefolgt von einer Nummer endet (beispielsweise 192.168.0.0/16). CIDR wird in RFC 1519 beschrieben.
Nun da die Schnittstelle konfiguriert ist, können wir sie über den folgenden Befehl starten und stoppen:
root #
rc-service net.eth0 start
root #
rc-service net.eth0 stop
Bei der Lösung von Netzwerkproblemen sollten Sie einen Blick in die Datei /var/log/rc.log werfen. Solange die rc_logger Variable in der Konfigurationsdatei /etc/rc.conf nicht auf
NO
eingestellt ist, werden Aktivitäten beim Booten in dieser Log-Datei gespeichert.Nun da die Netzwerkschnittstelle erfolgreich angehalten und gestartet wurde, ist der nächste Schritt sie automatisch beim Booten von Gentoo starten zu lassen. Und So machen Sie das:
root #
rc-update add net.eth0 default
root #
rc
Der letzte Befehl rc weist Gentoo an, alle Skripte im aktuellen Runlevel die noch nicht gestartet wurden zu starten.
Erweiterte Konfiguration
Die Variable config_eth0 ist das Herzstück einer Schnittstellenkonfiguration. Sie ist eine übergeordnete Befehlsliste für die Konfiguration der Schnittstelle (in diesem Fall eth0). Jeder Befehl in der Befehlsliste wird der Reihe nach ausgeführt. Die Schnittstelle gilt als OK, wenn mindestens ein Befehl funktioniert.
Hier ist eine Liste von eingebauten Anweisungen:
Wert | Beschreibung |
---|---|
null
|
Nichts tun. |
noop
|
Wenn die Schnittstelle aktiv ist und eine Adresse vorhanden ist, wird die Konfiguration erfolgreich abgebrochen. |
Eine IPv4 oder IPv6 Adresse | Hinzufügen der Adresse zur Schnittstelle. |
dhcp , adsl , oder apipa (oder ein benutzerdefinierter Wert aus einem Modul eines Drittanbieters)
|
Ausführen des Moduls, das den Befehl bereitstellt. Zum Beispiel wird dhcp ein Modul starten, das DHCP bereitstellt, das von dhcpcd, dhclient oder pump bedient werden kann.
|
Wenn ein Befehl fehlschlägt, geben Sie einen Fallback-Wert an. Der Fallback-Wert muss genau mit der Konfigurationsstruktur übereinstimmen.
Es ist möglich diese Werte miteinander zu verknüpfen. Hier sind einige Beispiele aus der Praxis:
# Hinzufügen von drei IPv4-Adressen
config_eth0="192.168.0.2/24
192.168.0.3/24
192.168.0.4/24"
# Hinzufügen einer IPv4-Adresse und zweier IPv6-Adressen
config_eth0="192.168.0.2/24
4321:0:1:2:3:4:567:89ab
4321:0:1:2:3:4:567:89ac"
# Behalten Sie unsere vom Kernel zugewiesene Adresse, es sei denn, die Schnittstelle geht
# aus, also weisen Sie eine anderen über DHCP zu. Wenn DHCP fehlschlägt, fügen Sie eine
# statische Adresse, die von APIPA ermittelt wird hinzu.
config_eth0="noop
dhcp"
fallback_eth0="null
apipa"
Wenn Sie das Modul
ifconfig
verwenden und mehr als eine Adresse hinzufügen werden für jede zusätzliche Adresse Schnittstellen-Aliase erstellt. In den beiden obigen Beispielen erhält der Benutzer also die Schnittstellen eth0, eth0:1 und eth0:2. Es ist nicht möglich, irgendetwas Spezielles mit diesen Schnittstellen zu tun, da der Kernel und andere Programme eth0:1 und eth0:2 einfach als eth0 behandeln.Die Rückfallreihenfolge ist wichtig! Wenn die Option null nicht angegeben wurde, wird
apipa
nur ausgeführt, wenn noop
fehlgeschlagen ist.{{NoteAPIPA (Handbuch) und DHCP (Handbuch) werden im modularer Netzwerkabschnitt behandelt.}}
Netzwerkabhängigkeiten
Init-Skripte in /etc/init.d/ können von einer bestimmten Netzwerkschnittstelle oder einfach von "net" abhängen. Alle Netzwerkschnittstellen in Gentoo's Init-System bieten das, was "net" genannt wird.
Wenn in /etc/rc.conf die Variable rc_depend_strict auf YES
gesetzt ist, dann müssen alle Netzwerkschnittstellen, die "net" bereitstellen, aktiv sein, bevor eine Abhängigkeit von "net" angenommen wird. Mit anderen Worten: Wenn ein System über net.eth0 und neth.eth1 verfügt und ein Init-Skript von "net" abhängig ist, müssen beide aktiviert sein.
Wenn hingegen rc_depend_strict="NO"
gesetzt ist, wird die "net"-Abhängigkeit als aufgelöst markiert, sobald mindestens eine Netzwerkschnittstelle aktiviert ist.
Aber was ist mit net.br0, das von net.eth0 und net.eth1 abhängt? net.eth1 könnte ein drahtloses oder PPP-Gerät sein, das konfiguriert werden muss, bevor es zur Bridge hinzugefügt werden kann. Dies kann nicht in /etc/init.d/net.br0 erfolgen, da dies ein symbolischer Link zu net.lo ist.
Die Antwort ist, eine rc_net_{schnittstelle}_need Einstellung in /etc/conf.d/net zu definieren:
rc_net_br0_need="net.eth0 net.eth1"
Das allein ist jedoch nicht ausreichend. Gentoos Netzwerk-Init-Skripte verwenden eine virtuelle Abhängigkeit namens "net", um dem System mitzuteilen, wann ein Netzwerk verfügbar ist. Im obigen Fall sollte das Netzwerk nur als verfügbar markiert sein, wenn net.br0 verfügbar ist, nicht wenn die anderen verfügbar sind. Also müssen wir das auch in /etc/conf.d/net angeben:
rc_net_eth0_provide="!net"
rc_net_eth1_provide="!net"
Für eine detaillierte Diskussion über Abhängigkeiten lesen Sie bitte den Abschnitt über das Schreiben von Initskripten im Gentoo Handbuch. Weitere Informationen über /etc/rc.conf sind als Kommentare in dieser Datei verfügbar.
Variablennamen und -werte
Variablennamen sind dynamisch. Sie folgen normalerweise der Struktur von variable_${interface|mac|essid|apmac}
. Zum Beispiel enthält die Variable dhcpcd_eth0 den Wert für dhcpcd-Optionen für eth0 und dhcpcd_essid enthält den Wert für dhcpcd-Optionen, wenn eine Schnittstelle mit der ESSID "essid" verbunden ist.
Es gibt jedoch keine feste Regel, die besagt, dass Schnittstellennamen ethx sein müssen. Tatsächlich haben viele drahtlose Schnittstellen Namen wie wlanx, rax oder auch ethx. Außerdem können einige benutzerdefinierte Schnittstellen wie z.B. Bridges, einen beliebigen Namen erhalten. Um das Leben interessanter zu machen, können drahtlose Zugangspunkte Namen mit nicht-alphanumerischen Zeichen haben - dies ist wichtig, weil Benutzer Netzwerkparameter pro ESSID konfigurieren können.
Der Nachteil von all dem ist, dass Gentoo Bash-Variablen für die Vernetzung verwendet- und Bash kann nichts außerhalb der englischen Alphanumerik verwenden. Um diese Einschränkung zu umgehen, ändern wird jedes Zeichen, dass keine englische Alphanumerik ist, in ein _ (Unterstrich) Zeichen.
Ein weiterer Nachteil der Bash ist der Inhalt von Variablen - einige Zeichen müssen mit einem Escape-Zeichen versehen werden. Dies kann erreicht werden, indem man das Zeichen \ (Backslash) vor das Zeichen setzt, das escaped werden muss. Die folgende Liste von Zeichen muss auf diese Weise escaped werden: ", ' und \.
In diesem Beispiel verwenden wir eine drahtlose ESSID, da sie die meisten Zeichen enthalten kann. Wir verwenden die ESSID Mein "\ NET:
# Dies funktioniet zwar, aber die Domäne ist ungültig
dns_domain_My____NET="My \"\\ NET"
Die obige Einstellung setzt die DNS-Domäne auf Mein "\ NET, wenn eine drahtlose Karte eine Verbindung zu einem AP herstellt, dessen ESSID Mein \ NET ist:
Benennung der Netzwerkschnittstellen
Wie es funktioniert
Netzwerkschnittstellennamen werden nicht willkürlich gewählt: Der Linux-Kernel und der Gerätemanager (die meisten Systeme haben udev als Gerätemanager, obwohl auch andere verfügbar sind) wählen den Schnittstellennamen nach einem festen Regelwerk.
Wenn eine Schnittstellenkarte in einem System erkannt wird, sammelt der Linux-Kernel die notwendigen Daten über diese Karte. Dazu gehören:
- Der onboard (auf der Schnittstelle selbst) registrierte Name der Netzwerkkarte, der später durch den Wert ID_NET_NAME_ONBOARD angezeigt wird.
- Der Steckplatz, in dem die Netzwerkkarte eingesteckt ist, was später durch den ID_NET_NAME_SLOT Wert ersichtlich wird.
- Der Pfad, über den auf das Netzwerkkartengerät zugegriffen werden kann, der später durch den Wert von ID_NET_NAME_PATH angezeigt wird.
- Die (vom Hersteller bereitgestellte) MAC-Adresse der Karte, die später durch den Wert ID_NET_NAME_MAC angezeigt wird.
Auf der Grundlage dieser Informationen entscheidet der Gerätemanager, wie die Schnittstelle auf dem System benannt werden soll. Standardmäßig verwendet er den ersten Treffer der ersten drei oben genannten Variablen (ID_NET_NAME_ONBOARD, _SLOT oder _PATH). Wenn zum Beispiel ID_NET_NAME_ONBOARD gefunden und auf eno1 gesetzt wird, dann wird die Schnittstelle eno1 genannt.
Bei einem aktiven Schnittstellennamen können die Werte der angegebenen Variablen mit udevadm angezeigt werden:
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
Da der erste (und eigentlich einzige) Treffer der obersten drei Variablen ID_NET_NAME_PATH ist, wird sein Wert als Schnittstellenname verwendet. Wenn keine der Variablen Wert enthält, kehrt das System zu der vom Kernel bereitgestellten Benennung zurück (eth0, eth1, usw.)
Verwendung der Kernel-Benennung im alten Stil
Vor dieser Änderung wurden Netzwerkkarten vom Linux-Kernel selbst benannt, abhängig von der Reihenfolge, in der die Treiber geladen werden (neben anderen, möglicherweise noch obskureren Gründen). Dieses Verhalten kann immer noch durch Setzen des Bootparameters net.ifnames=0
im Bootloader aktiviert werden.
Verwendung eigener Namen
Die Idee hinter der Namensänderung ist nicht, die Leute zu verwirren, sondern das Ändern der Namen zu erleichtern. Nehmen wir an, ein System hat zwei Schnittstellen, die anders als eth0 und eth1 bezeichnet werden. Eine ist für den drahtgebundenen Zugriff auf das Netzwerk gedacht, die andere für den drahtlosen Zugriff. Mit der Unterstützung für die Benennung von Schnittstellen können Benutzer diese als lan0 (kabelgebunden) und wifi0 (drahtlos) bezeichnen - es ist am besten, die bisher bekannten Namen wie eth* und wlan* zu vermeiden, da diese immer noch mit den vorgeschlagenen Namen kollidieren können.
Finden Sie heraus, welche Parameter für die Karten gelten, und verwenden Sie diese Informationen, um eine benutzerdefinierte eigene Benennungsregel aufzustellen:
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
# Die erste verwendet MAC-Informationen und die 70-er Nummer, um vor anderen Netzregeln zu sein 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"
Da die Regeln vor der Standardregel ausgelöst werden (die Regeln werden in alphanumerischer Reihenfolge ausgelöst d.h. 70 kommt vor 80), werden die in der Regeldatei angegebenen Namen anstelle der Standardnamen verwendet. Die der Datei zugewiesenen Nummer sollte zwischen 76 und 79 liegen (die Umgebungsvariablen werden durch eine Regel definiert, die mit 75 beginnt, und die Fallback-Benennung wird in einer Regel mit der Nummer 70 vorgenommen).
Netzwerkmodule
Netifrc-Skripte unterstützen jetzt modulare Netzwerkskripte, was bedeutet, dass die Unterstützung für neue Schnittstellentypen und Konfigurationsmodule leicht hinzugefügt werden kann, während die Kompatibilität mit den bestehenden erhalten bleibt.
Module werden standardmäßig geladen, wenn das für sie erforderliche Paket installiert ist. Wenn Benutzer hier ein Modul angeben, dessen Paket nicht installiert ist, erhalten sie eine Fehlermeldung mit dem Hinweis, welches Paket sie installieren müssen. Idealerweise wird die Moduleinstellung nur verwendet, wenn zwei oder mehr Pakete installiert sind, die denselben Dienst bereitstellen, und eines dem anderen vorgezogen werden muss.
Alle hier besprochenen Einstellungen werden in /etc/conf.d/net gespeichert, sofern nicht anders angegeben.
# ifconfig über iproute2 bevorzugen
modules="ifconfig"
# Sie können auch andere Module für eine Schnittstelle bevorzugen
# In diesem Fall bevorzugen wir dhclient gegenüber dhcpcd
modules_eth0="dhclient"
# Sie können auch angeben, welche Module nicht verwendet werden sollen - zum Beispiel könen Sie
# zum Beispiel einen Supplicant oder linux-wlan-ng verwenden, um die drahtlose Konfiguration zu steuern, aber Sie möchten trotzdem die Netzwerkeinstellungen pro ESSID konfigurieren, die mit einem Supplicant verbunden ist.
modules="!iwconfig"
Schnittstellen-Handler
Wir bieten derzeit zwei Schnittstellen-Handler an: ifconfig und iproute2. Für jede Art von Netzwerkkonfiguration wird nur einer von ihnen benötigt.
Beide werden standardmäßig als Teil des Systemprofils installiert. iproute2 ist das leistungsfähigere und flexiblere Paket.
Da sowohl ifconfig als auch iproute2 sehr ähnliche Dinge tun, erlauben wir, dass ihre Grundkonfiguration miteinander funktioniert. Zum Beispiel funktionieren die beiden untenstehenden Codeschnipsel unabhängig davon, welches Modul der Benutzer verwendet.
config_eth0="192.168.0.2/24"
config_eth0="192.168.0.2 netmask 255.255.255.0"
# Wir können auch Broadcast angeben
config_eth0="192.168.0.2/24 brd 192.168.0.255"
config_eth0="192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255"
DHCP
DHCP ist ein Mittel zum Abrufen von Netzwerkinformationen (IP-Adresse, DNS-Server, Gateway usw.) von DHCP-Server. Das heißt, wenn ein DHCP-Server im Netz läuft, muss der Benutzer nur jedem Client sagen, dass er DHCP verwenden soll, und das Netz richtet sich von selbst ein. Natürlich muss der Benutzer andere Dinge wie drahtlose Verbindungen, PPP oder andere Dinge konfigurieren, bevor er DHCP verwenden kann.
DHCP kann von dhclient oder dhcpcd bereitgestellt werden. Jedes DHCP-Modul hat seine Vor- und Nachteile - hier ist eine kurze Zusammenfassung:
DHCP-Modul | Paket | Pro | Kontra |
---|---|---|---|
dhclient | net-misc/dhcp | Entwickelt von ISC, den gleichen Leuten, die auch die BIND-DNS-Software entwicklen. Sehr konfigurierbar | Die Konfiguration ist übermäßig komplex, die Software ist ziemlich aufgebläht, kann keine NTP-Server über DHCP beziehen, sendet standardmäßig keinen Hostnamen. Wird nicht mehr upstream gewartet |
dhcpcd | net-misc/dhcpcd | Lange Zeit Gentoo-Standard, keine Abhängigkeit von externen Tools, aktiv von Gentoo entwickelt | Kann manchmal langsam sein, noch keine Daemonisierung, wenn Lease unendlich ist |
Wenn mehr als eine DHCP-Client installiert ist, geben Sie an, welcher verwendet werden soll - andernfalls wird standardmäßig dhcpcd verwendet, falls verfügbar.
Um bestimmte Optionen an das DHCP-Modul zu senden, verwenden Sie module_eth0="..."
(ändern Sie module in das verwendete DHCP-Modul - d.h. dhcpcd_eth0).
Wir versuchen, DHCP relativ unabhängig zu machen - daher unterstützen wir die folgenden Befehle, indem wir die Variable dhcp_eth0 verwenden. Die Voreinstellung ist, keinen dieser Befehle zu setzen:
release
- Gibt die IP-Adresse zur Wiederverwendung frei.
nodns
- /etc/resolv.conf nicht überschreiben
nontp
- /etc/ntp.conf nicht überschreiben
nonis
- /etc/yp.conf nicht überschreiben
# Nur erforderlich, wenn Sie mehr als ein DHCP-Modul installiert haben
modules="dhcpcd"
config_eth0="dhcp"
dhcpcd_eth0="-t 10" # Timeout nach 10 Sekunden
dhcp_eth0="release nodns nontp nonis" # Nur eine Adresse erhalten
dhcpcd sendet standardmäßig den aktuellen Hostnamen an den DHCP-Server, so dass dieser nicht mehr angegeben werden muss.
# Only needed if more than one DHCP module is installed
modules="dhclient"
config_eth0="dhcpv6"
# To use both DHCPv4 and DHCPv6 on a dual-stack network, remove the above line and uncomment the following lines
#config_eth0="dhcp
#dhcpv6"
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
# To pass runtime arguments to dhclient for DHCPv6
dhclientv6_eth0="-t 10" # Timeout after 10 seconds
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
# Set generic DHCPv6 options
dhcpv6_eth0="release nodns nontp nonis nogateway nosendhost"
ADSL mit PPPoE/PPPoA
Installieren Sie zunächst die ADSL-Software:
root #
emerge --ask net-dialup/ppp
Zweitens erstellen Sie das PPP-Netzskript und das Netzskript für die Ethernet-Schnittstelle, die von PPP verwendet werden soll:
root #
ln -s /etc/init.d/net.lo /etc/init.d/net.ppp0
root #
ln -s /etc/init.d/net.lo /etc/init.d/net.eth0
Stellen Sie sicher, dass Sie rc_depend_strict in /etc/rc.conf auf YES
setzen.
Nun müssen wir /etc/conf.d/net konfigurieren.
config_eth0=null (Geben Sie die Ethernet-Schnittstelle an)
config_ppp0="ppp"
link_ppp0="eth0" (Geben Sie die Ethernet-Schnittstelle an)
plugins_ppp0="pppoe"
username_ppp0='benutzer'
password_ppp0='passwort'
pppd_ppp0="
noauth
defaultroute
usepeerdns
holdoff 3
child-timeout 60
lcp-echo-interval 15
lcp-echo-failure 3
noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp"
rc_net_ppp0_need="net.eth0"
Es ist möglich, das Passwort in /etc/ppp/pap-secrets zu setzen.
# Das * ist wichtig
"benutzername" * "passwort"
Wenn PPPoE mit einem USB-Modem verwendet wird, stellen Sie sicher, dass Sie br2684ctl emergen. Bitte lesen Sie /var/db/repos/gentoo/net-dialup/speedtouch-usb/files/README für Informationen über die richtige Konfiguration.
Lesen Sie bitte sorgfältig den Abschnitt über ADSL und PPP in /usr/share/doc/netifrc-*/net.example.bz2. Er enthält viele detaillierte Erklärungen zu allen Einstellungen, die für eine bestimmte PPP-Einrichtung wahrscheinlich erforderlich sind.
APIPA (Automatic Private IP Addressing/Automatische Private IP-Adressierung)
APIPA versucht, eine freie Adresse im Bereich 169.254.0.0-169.254.255.255 zu finden, indem es eine zufällige Adresse in diesem Bereich an die Schnittstelle sendet. Wenn keine Antwort gefunden wird, wird der Schnittstelle diese Adresse zugewiesen.
This is only useful for LANs where:
- there is no DHCP server;
- the system doesn't connect directly to the Internet; and
- all other computers use APIPA.
Um APIPA-Unterstützung zu erhalten, emergen Sie net-misc/iputils mit dem arping
USE-Flag oder net-analyzer/arping.
# Es zuerst mit DHCP versuchen - wenn das fehlschlägt, auf APIPA zurückgreifen
config_eth0="dhcp"
fallback_eth0="apipa"
# Einfach APIPA verwenden
config_eth0="apipa"
Bonding
Bonding wird eingesetzt, um die Netzwerkbandbreite zu erhöhen oder die Ausfallsicherheit bei Hardwarefehlern zu verbessern. Wenn ein System über zwei Netzwerkkarten verfügt, die an dasselbe Netzwerk angeschlossen sind, kann der Administrator diese miteinander verbinden, so dass die Anwendungen nur eine Schnittstelle sehen, aber in Wirklichkeit beide Netzwerkkarten nutzen.
Es gibt viele Möglichkeiten, Bonding zu konfigurieren. Einige davon, wie z.B. der 802.3ad-LACP-Modus, erfordern die Unterstützung und zusätzliche Konfiguration des Netzwerk-Switches. Eine Referenz der einzelnen Optionen finden Sie in der lokalen Kopie von /usr/src/linux/Documentation/networking/bonding.txt.
Löschen Sie zunächst die Konfiguration der beteiligten Schnittstellen:
config_eth0="null"
config_eth1="null"
config_eth2="null"
Als nächstes definieren Sie die Verbindung zwischen den Schnittstellen:
slaves_bond0="eth0 eth1 eth2"
config_bond0="192.168.100.4/24"
# Wählen Sie den richtigen Modus und zusätzliche Konfigurationsoptionen, die Ihren Bedürfnissen entsprechen
mode_bond0="balance-alb"
Entfernen Sie die net.eth*-Dienste aus den Runlevels, erstellen Sie einen net.bond0-Dienst und fügen Sie diesen dem richtigen Runlevel hinzu.
Bridging (802.1d Unterstützung)
Bridging wird verwendet, um Netzwerke miteinander zu verbinden. Ein System kann zum Beispiel einen Server haben, der über ein ADSL-Modem mit dem Internet verbunden ist, und eine drahtlose Zugangskarte, die es anderen Computern ermöglicht, über das ADSL-Modem eine Verbindung zum Internet herzustellen. Es ist möglich, eine Brücke zu erstellen, um die beiden Schnittstellen miteinander zu verbinden.
# Konfigurieren der Brücke - "man brctl" für weitere Details
bridge_forward_delay_br0=0
bridge_hello_time_br0=200
bridge_stp_state_br0=1
# So fügen Sie Ports zur Brücke br0 hinzu
bridge_br0="eth0 eth1"
# Sie müssen die Ports auf Nullwerte konfigurieren, damit dhcp nicht gestartet wird
config_eth0="null"
config_eth1="null"
# Schließlich geben Sie der Brücke eine Adresse - Sie können auch DHCP verwenden
config_br0="192.168.0.1/24"
# Abhängig von eth0 und eth1, da diese möglicherweise eine zusätzliche Konfiguration erfordern
rc_net_br0_need="net.eth0 net.eth1"
Für die Verwendung einiger Brückenkonfigurationen konsultieren Sie die Dokumentation der Variablennamen.
Bei der Überbrückung mit IPv6 muss bei SLAAC STP auf
1
gesetzt werden, wie im obigen Beispiel zu sehen ist.MAC-Adresse
Es ist auch möglich, die MAC-Adresse der Schnittstellen über die Netzwerkkonfigurationsdatei zu ändern.
# Festlegen der MAC-Adresse der Schnittstelle
mac_eth0="00:11:22:33:44:55"
# Um nur die letzten 3 Bytes zu randomisieren
mac_eth0="random-ending"
# Um zwischen den gleichen physikalischen Verbindungstypen (z.B. Glasfaser, Kupfer, drahtlos) alle Anbieter
mac_eth0="random-samekind"
# Zur Zufallsauswahl zwischen beliebigen physikalischen Verbindungstypen (z.B. Glasfaser, Kupfer, drahtlos), alle Anbieter
mac_eth0="random-anykind"
# Vollständige Zufallsgenerierung - WARNUNG: einige der dadurch erzeugten MAC-Adressen können NICHT wie erwartet funktionieren
mac_eth0="random-full"
Tunneln
Für das Tunneln muss keine zusätzliche Software installiert werden, da der Interface Handler dies übernehmen kann.
# Für GRE-Tunneln
iptunnel_vpn0="mode gre remote 207.170.82.1 key 0xffffffff ttl 255"
# Für IPIP-Tunnel
iptunnel_vpn0="mode ipip remote 207.170.82.2 ttl 255"
# Konfigurieren der Schnittstellen
config_vpn0="192.168.0.2 peer 192.168.1.1"
VLAN (802.1q Unterstützung)
Für die VLAN-Unterstützung stellen Sie sicher, dass sys-apps/iproute2 installiert ist und dass iproute2 als Konfigurationsmodul und nicht ifconfig verwendet wird.
Ein virtuelles LAN ist eine Gruppe von Netzwerkgeräten, die sich so verhalten, als ob sie an ein einziges Netzwerksegment angeschlossen wären - auch wenn sie es nicht sind. VLAN-Mitglieder können nur Mitglieder desselben VLANs sehen, auch wenn sie dasselbe physische Netzwerk nutzen.
Um VLANs zu konfigurieren, geben Sie zunächst die VLAN-Nummern in /etc/conf.d/net wie folgt an:
vlans_eth0="1 2"
Als nächstes konfigurieren Sie die Schnittstelle für jedes VLAN:
config_eth0_1="172.16.3.1 netmask 255.255.254.0"
routes_eth0_1="default via 172.16.3.254"
config_eth0_2="172.16.2.1 netmask 255.255.254.0"
routes_eth0_2="default via 172.16.2.254"
VLAN-spezifische Konfigurationen werden von vconfig wie folgt gehandhabt:
vlan1_name="vlan1"
vlan1_ingress="2:6 3:5"
eth0_vlan1_egress="1:2"
Für die Verwendung einer VLAN-Konfigurationen konsultieren Sie die Dokumentation der Variablennamen.
Einleitung
Drahtlose Netzwerke unter Linux sind in der Regel recht einfach. Es gibt drei Möglichkeiten, WLAN zu konfigurieren: grafische Clients, Textmodus-Schnittstellen und Befehlszeilen-Schnittstellen.
Der einfachste Weg ist die Verwendung eines grafischen Clients, sobald eine Desktop-Umgebung installiert ist. Die meisten grafischen Clients, wie z.B. NetworkManager, sind ziemlich selbsterklärend. Sie bieten eine praktische Zeigen-und-Klicken-Oberfläche, mit der Benutzer in wenigen Sekunden in ein Netzwerk eingebunden werden können.
NetworkManager bietet neben der grafischen Oberfläche auch Textmodus- oder Befehlszeilenprogramme. Emergen Sie das Paket net-misc/networkmanager mit ncurses. Das Dienstprogramm nmtui ist besonders nützlich für Leute, die keine X- oder Wayland-basierte Desktop-Umgebung verwenden, aber dennoch ein einfach zu bedienendes Werkzeug wünschen, das keine manuelle Bearbeitung von Konfigurationsdateien erfordert.
Wireless kann auch über die Befehlszeile konfiguriert werden, indem einige Konfigurationsdateien bearbeitet werden. Dies nimmt etwas mehr Zeit in Anspruch, erfordert aber auch die wenigsten Pakete, die heruntergeladen und installiert werden müssen. Da die grafischen Clients größtenteils selbsterklärend sind (mit hilfreichen Bildschirmfotos auf ihren Homepages), konzentrieren wir uns auf die Befehlszeilenalternativen.
Es gibt drei Tools, die befehlszeilengesteuerte Wireless-Konfigurationen unterstützten: net-wireless/iw, net-wireless/wireless-tools, und net-wireless/wpa_supplicant. Von diesen drei ist net-wireless/wpa_supplicant das bevorzugte Paket. Wichtig ist, dass drahtlose Netzwerke auf globaler Basis und nicht auf Schnittstellenbasis konfiguriert werden.
Die Software net-wireless/iw, der Nachfolger von net-wireless/wireless-tools, unterstützt fast alle Karten und Treiber, kann aber keine Verbindung zu reinen WPA Access Points herstellen. Wenn die Netze nur WEP-Verschlüsselung bieten oder völlig offen sind, dann ist net-wireless/iw dem anderen Paket in Sachen Einfachheit überlegen.
Einige WLAN-Karten sind standardmäßig deaktiviert. Um sie zu aktivieren, konsultieren Sie bitte die Dokumentation der Hardware. Einige dieser Karten können mit der Anwendung rfkill entsperrt werden. Wenn dies der Fall ist, verwenden Sie rfkill list, um die verfügbaren Karten anzuzeigen, und rfkill unblock INDEX, um die drahtlose Funktionalität zu aktiveren. Ist dies nicht der Fall, muss die WLAN-Karte möglicherweise über eine Taste, einen Schalter oder eine spezielle Tastenkombination am Laptop entsperrt werden.
WPA supplicant
Das WPA supplicant Projekt stellt ein Paket zur Verfügung, mit dem sich Benutzer mit WPA-fähigen Zugangspunkten verbinden können.
root #
emerge --ask net-wireless/wpa_supplicant
Es ist notwendig, dass CONFIG_PACKET im Kernel aktiviert ist, damit wpa_supplicant funktioniert. Um zu sehen, ob es im aktuellen Kernel aktiviert ist, versuchen Sie:
root #
zgrep CONFIG_PACKET /proc/config.gz
root #
grep CONFIG_PACKET /usr/src/linux/.config
Abhängig von den USE-Flags kann wpa_supplicant eine in Qt5 geschriebene grafische Oberfläche installieren, die sich gut in KDE integrieren lässt. Um sie zu erhalten, verwenden Sie qt5 für das Paket net-wireless/wpa_supplicant.
Als nächstes konfigurieren Sie /etc/conf.d/net so, dass das Modul wpa_supplicant gegenüber wireless-tools bevorzugt wird (wenn beide installiert sind, ist wireless-tolls der Standard).
# Bevorzugen von wpa_supplicant gegenüber wireless-tools
modules="wpa_supplicant"
Bei der Verwendung des host-ap-Treibers ist es notwendig, die Karte in den Managed Mode zu versetzen, bevor sie mit wpa_supplicant korrekt verwendet werden kann. Dies kann durch Setzen von
iwconfig_eth0="mode managed"
in /etc/conf.d/net erreicht werden.Als nächstes konfigurieren Sie wpa_supplicant selbst (was je nach Sicherheit der Access Points etwas komplizierter ist). Das folgende Beispiel wurde vereinfacht aus /usr/share/doc/wpa_supplicant-<Version>/wpa_supplicant.conf.gz übernommen, das mit wpa_supplicant ausgeliefert wird.
# Die untere Zeile darf nicht geändert werden, sonst funktioniert wpa_supplicant nicht
ctrl_interface=/var/run/wpa_supplicant
# Sicherstellen, dass nur root die WPA-Konfiguration lesen kann
ctrl_interface_group=0
# Überlassen Sie wpa_supplicant das Scannen und die AP-Auswahl
ap_scan=1
# Einfacher Fall: WPA-PSK, PSK als ASCII-Passphrase, alle gültigen Chiffren erlauben
network={
ssid="simple"
psk="very secret passphrase"
# Je höher die Priorität, desto eher werden wir gematcht
priority=5
}
# Wir zuvor, aber SSID-spezifisches Scannen anfordern (für APs, die die Broadcast SSID ablehnen)
network={
ssid="second ssid"
scan_ssid=1
psk="very secret passphrase"
priority=2
}
# Es wird nur WPA-PSK verwendet. Jede gültige Verschlüsselungskombination wird akzeptiert
network={
ssid="example"
proto=WPA
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP WEP104 WEP40
psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb
priority=2
}
# Klartextverbindung (kein WPA, kein IEEE 802.1X)
network={
ssid="plaintext-test"
key_mgmt=NONE
}
# Verbindung mit gemeinsamen WEP-Schlüssel (kein WPA, kein IEEE 802.1X)
network={
ssid="static-wep-test"
key_mgmt=NONE
# Schlüssel in Anführungszeichen sind ASCII-Schlüssel
wep_key0="abcde"
# Ohne Anführungszeichen angegebene Schlüssel sind Hex-Schlüssel
wep_key1=0102030405
wep_key2="1234567890123"
wep_tx_keyidx=0
priority=5
}
# Schlüssel in Anführunszeichen sind ASCII-Schlüssel
# Gemeinsame WEP-Schlüsselverbindung (kein WPA, kein IEEE 802.1X) unter Verwendung von Shared Key IEEE 702.11-Authentifizierung
network={
ssid="static-wep-test2"
key_mgmt=NONE
wep_key0="abcde"
wep_key1=0102030405
wep_key2="1234567890123"
wep_tx_keyidx=0
priority=5
auth_alg=SHARED
}
# IBSS/Ad-hoc-Netzwerk mit WPA-None/TKIP
network={
ssid="test adhoc"
mode=1
proto=WPA
key_mgmt=WPA-NONE
pairwise=NONE
group=TKIP
psk="secret passphrase"
}
Wireless-Tools
Ersteinrichtung und verwalteter Modus
Das Wireless-Tools Projekt bietet eine allgemeine Möglichkeit zur Konfiguration grundlegender drahtloser Schnittstellen bis hin zur WEP-Sicherheitsstufe. Obwohl WEP eine schwache Sicherheitsmethode ist, ist sie immer noch weit verbreitet in der Welt.
Die Konfiguration der Wireless-Tools wird durch einige wenige Hautpvariablen gesteuert. Die unten stehende Beispielkonfigurationsdatei sollte alles beschreiben, was benötigt wird. Eine Sache, die Sie beachten sollten, ist, dass keine Konfiguration "mit dem stärksten unverschlüsselten Zugangspunkt verbinden" bedeutet - Wireless-Tolls wird immer versuchen, das System mit etwas zu verbinden.
root #
emerge --ask net-wireless/wireless-tools
Obwohl net-wireless/iw das aktuelle Tool für den Wireless-Stack ist, funktioniert net-misc/netifrc vor Version 0.6.0 nicht mit den neuen Befehlen. net-wireless/wireless-tools muss mit netifrc mit früheren Version verwendet werden. Weitere Informationen finden Sie in der Dokumentation der Variablennamen.
# iwconfig gegenüber wpa_supplicant bevorzugen
modules="iwconfig"
# Konfigurieren des WEP-Schlüssels für Access Points namens ESSID1 und ESSID2
# Sie können bis zu 4 WEP-Schlüssel konfigurieren, aber nur 1 kann gleichzeitig aktiv sein.
# Wir geben also einen Standardindex von [1] an, um den Schlüssel [1] zu setzen und dann
# um den aktiven Schlüssel wieder auf [1] zu ändern.
# Wir tun dies für den Fall, dass Sie andere ESSIDs definieren, um andere WEP-Schlüssel als 1 zu verwenden
#
# Wird dem Schlüssel ein s vorangestellt, handelt es sich um einen ASCII-Schlüssel, ansonsten um eine Hex-Schlüssel
#
# enc open specified open security (am sichersten)
# enc restricted specified restricted security (am wenigsten sicher)
key_ESSID1="[1] s:yourkeyhere key [1] enc open"
key_ESSID2="[1] aaaa-bbbb-cccc-dd key [1] enc restricted"
# Die folgenden Angaben funktionieren nur, wenn wir nach verfügbaren Access Points suchen
# Manchmal ist mehr als ein Access Point sichtbar, daher müssen wir eine bevorzugte Reihenfolge für die Verbindung festlegen
preferred_aps="'ESSID1' 'ESSID2'"
Feinabstimmung der AP-Auswahl
Es ist möglich, einige zusätzliche Optionen zur Feinabstimmung der AP-Auswahl hinzuzufügen, aber diese sind nicht erforderlich.
Eine Möglichkeit besteht darin, das System so zu konfigurieren, dass es sich nur mit bevorzugten APs verbindet. Wenn alles Konfigurierte fehlgeschlagen ist und wireless-tools eine Verbindung zu einen unverschlüsselten Access Point herstellen kann, wird es dies standardmäßig tun. Dies kann über eine Variable associate_order gesteuert werden. Hier ist eine Tabelle der Werte und wie sie dies steuern.
Wert | Beschreibung |
---|---|
any | Standardverhalten |
preferredonly | Verbindung nur mit sichtbaren APs in der bevorzugten Listel |
forcepreferred | Erzwigen der Verbindung zu APs in der bevorzugten Reihenfolge, wenn sie bei einem Scan nicht gefunden werden. |
forcepreferredonly | Nicht nach APs scannen, sondern versuchen einfach, sich nacheinander mit jedem einzelnen zu verbinden. |
forceany | Wie forcepreffered + Verbindung zu jedem anderen verfügbaren AP. |
Es gibt auch die Auswahl blacklist_aps und unique_ap. blacklist_aps funktioniert ähnlich wie preferred_aps. unique_ap ist ein yes- oder no-Wert, der angibt, ob eine zweite drahtlose Schnittstelle eine Verbindung mit demselben Access Point wie die erste Schnittstelle herstellen kann.
# Manchmal möchten Sie nie eine Verbindung zu bestimmten Zugangspunkten herstellen
blacklist_aps="'ESSID3' 'ESSID4'"
# Wenn Sie mehr als eine WLAN-Karte haben, können Sie angeben, ob Sie
# erlauben wollen, sich mit demselben Access Point zu verbinden oder nicht
# Werte sind "yes" und "no"
# Standard ist "yes"
unique_ap="yes"
Ad-hoc- und Master-Modi
Um das System als Ad-hoc-Knoten einzurichten, wenn es keine Verbindung zu einem Access Point im verwalteten Modus herstellen kann, verwenden Sie dies als Fallback:
adhoc_essid_eth0="Dieser Adhoc-Knoten"
Es ist auch möglich, eine Verbindung zu Ad-hoc-Netzen herzustellen oder das System im Master-Modus zu betreiben, so dass es selbst zum Zugangspunkt wird.
# Einstellen des Modus - kann managed (Standard), ad-hoc oder master sein
# Nicht alle Treiber unterstützen alle Modi
mode_eth0="ad-hoc"
# Setzen der ESSID der Schnittstelle
# Im managed-Modus erzwingt dies, dass die Schnittstelle versucht, eine Verbindung mit der angegebenen ESSID herzustellen und nichts anderes
essid_eth0="Dieser Adhoc-Knoten"
# Wir verwenden Kanal 3, wenn Sie keinen angeben
channel_eth0="9"
Eine wichtige Quelle zur Kanalauswahl ist die BSD wavelan-Dokumentation, die man in der NetBSD-Dokumentation findet. Es sind 14 Kanäle möglich; uns wurde gesagt, dass die Kanäle 1-11 für Nordamerika, die Kanäle 1-13 für den größten Teil Europas, die Kanäle 10-13 für Frankreich und nur der Kanal 14 für Japan zulässig sind. Im Zweifelsfall sehen Sie bitte in der Dokumentation nach, die mit der Karte oder dem Zugangspunkt geliefert wurde. Vergewissern Sie sich, dass der gewählte Kanal derselbe ist, auf dem sich der Zugangspunkt (oder die andere Karte in einem Ad-hoc-Netzwerk) befindet. Die Standardeinstellung für in Nordamerika und den meisten europäischen Ländern verkauften Karten ist 3; die Standardeinstellung für in Frankreich verkaufte Karten ist 11, und die Standardeinstellung für in Japan verkaufte Karten ist 14.
Fehlersuche bei drahtlosen Tools
Es gibt noch einige weiter Variablen, die helfen können, das WLAN aufgrund von Treiber- oder Umgebungsproblemen zum Laufen zu bringen. Hier ist eine Tabelle mit anderen Dingen, die ausprobiert werden können.
Variablennamen | Standardwert | Beschreibung |
---|---|---|
iwconfig_eth0 | In der Manpage von iwconfig finden Sie Einzelheiten darüber, was Sie iwconfig senden müssen. | |
iwpriv_eth0 | In der Manpage von iwpriv finden Sie Einzelheiten darüber, was Sie an iwpriv senden müssen. | |
sleep_scan_eth0 | 0 | Die Anzahl an Sekunden, die vor dem Scanversuch gewartet wird. Dies ist erforderlich, wenn der Treiber/die Firmware mehr Zeit benötigt, um aktiv zu werden, bevor er/sie verwendet werden kann. |
sleep_associate_eth0 | 5 | Die Anzahl an Sekunden, die gewartet wird, bis sich die Schnittstelle mit dem Access Point verbunden hat, bevor die nächste Schnittstelle aufgerufen wird. |
associate_test_eth0 | MAC | Einige Treiber setzen die MAC-Adresse, die mit einer ungültigen MAC-Adresse verbunden ist, nicht zurück, wenn sie die Verbindung verlieren oder versuchen, sie herzustellen. Einige Treiber Qualitätsstufe nicht zurück, wenn sie die Verbindung verlieren oder versuchen, sie herzustellen. Gültige Einstellungen sind MAC, quality und all. |
scan_mode_eth0 | Einige Treiber müssen im Ad-hoc-Modus scannen. Wenn das Scannen fehlschlägt, versuchen Sie hier, Ad-hoc einzustellen. | |
iwpriv_scan_pre_eth0 | Sendet vor dem Scannen einige iwpriv-Befehle an die Schnittstelle. Weitere Einzelheiten finden Sie in der Manpage von iwpriv. | |
iwpriv_scan_post_eth0 | Sendet nach dem Scannen einige iwpriv-Befehle an die Schnittstelle. Weitere Einzelheiten finden Sie in der Manpage von iwpriv. |
Netzwerkkonfiguration pro ESSID festlegen
In diesem Abschnitt wird gezeigt, wie Sie die Netzwerkeinstellungen auf der Grundlage der ESSID konfigurieren. Konfigurieren Sie z.B. für das drahtlose Netzwerk mit der ESSID ESSID1 eine statische IP-Adresse, während die ESSID ESSID2 DHCP verwendet.
Dies funktioniert sowohl mit wpa_supplicant als auch mit wireless-tools
Bitte konsultieren Sie die Dokumentation der Variablennamen.
config_ESSID1="192.168.0.3/24 brd 192.168.0.255"
routes_ESSID1="default via 192.168.0.1"
config_ESSID2="dhcp"
fallback_ESSID2="192.168.3.4/24"
fallback_route_ESSID2="default via 192.168.3.1"
# Wir können auch Nameserver und andere Dinge definieren
# HINWEIS: DHCP überschreibt diese Einstellungen, es sei denn, es wird ihm gesagt, dass es das nicht tun soll
dns_servers_ESSID1="192.168.0.1 192.168.0.2"
dns_domain_ESSID1="some.domain"
dns_search_domains_ESSID1="search.this.domain search.that.domain"
# Sie überschreiben durch die MAC-Adresse des Access Points
# Dies ist praktisch, wenn Sie verschiedene Standorte mit der gleichen ESSID ansteuern
config_001122334455="dhcp"
dhcpcd_001122334455="-t 10"
dns_servers_001122334455="192.168.0.1 192.168.0.2"
Standard Funktionshooks
Four functions can be defined in /etc/conf.d/net:
preup()
, called before an interface is brought up;predown()
, called before an interface is brought down;postup()
, called after an interface is brought up; andpostdown()
, called after an interface is brought down.
Each of these these functions is called with the interface name, available within each function via the IFACE variable, so that one function can control multiple interfaces.
The return values for the preup()
and predown()
functions should be:
- 0 to indicate success, and that configuration or de-configuration of the interface can continue.
- A non-zero value otherwise.
If preup()
returns a non-zero value, interface configuration will be aborted. If predown()
returns a non-zero value, the interface will not be allowed to continue de-configuration.
Return values for the postup()
and postdown()
functions are ignored since there's nothing to do if they indicate failure.
${IFACE} ist auf das Interface gesetzt, das gestartet/ gestoppt wird. ${IFVAR} ist ${IFACE} in einen Variablennamen umgesetzt, den bash gestattet.
preup() {
# Überprüft die Existenz eines Links auf die Schnittstelle vor
# der Aktivierung. Dies funktioniert nur mit einigen
# Netzwerk-Adaptern und benötigt ein installiertes ethtool Paket.
if ethtool ${IFACE} | grep -q 'Link detected: no'; then
ewarn "No link on ${IFACE}, aborting configuration"
return 1
fi
# Denken Sie daran 0 bei Erfolg zurückzugeben
return 0
}
predown() {
# Der Standard im Script ist auf NFS root zu prüfen und in diesem
# Fall das Stoppen der Schnittstelle zu unterbinden. Beachten Sie,
# dass Sie diese Logik überschreiben, wenn Sie eine predown()
# Funktion angeben. Hier ist sie für den Fall, dass Sie sie dennoch
# wollen ...
if is_net_fs /; then
eerror "root filesystem is network mounted -- can't stop ${IFACE}"
return 1
fi
# Denken Sie daran 0 bei Erfolg zurückzugeben
return 0
}
postup() {
# Diese Funktion könnte beispielsweise genutzt werden, um sich bei
# einem DNS Service zu registrieren. Eine weitere Möglichkeit würde
# das Senden/Empfangen von Mails nach dem Start einer Schnittstelle
# sein.
return 0
}
postdown() {
# Diese Funktion ist hauptsächlich der Vollständigkeit halber
# hier... Ich habe bisher noch nicht darüber nachgedacht etwas
# Raffiniertes damit anzustellen ;-D
return 0
}
Für weitere Informationen zum Schreiben von Funktionen lesen Sie bitte /usr/share/doc/netifrc-*/net.example.bz2.
Wireless Tools Funktionshook
Dies wird mit WPA Supplicant nicht funktionieren - aber die Variablen ${ESSID} und ${ESSIDVAR} sind in der Funktion
postup()
verfügbar.Two functions can be defined in /etc/conf.d/net:
preassociate()
, called before association.postassociate()
, called after association.
Each of these these functions is called with the interface name, available within each function via the IFACE variable, so that one function can control multiple interfaces.
The return values for the preassociate() function should be:
- 0 to indicate success, and to continue configuration.
- A non-zero value otherwise.
If preassociate()
returns a non-zero value, interface configuration will be aborted.
Der Rückgabewert der Funktion postassociate()
wird ignoriert, weil es nicht zu tun gibt wenn er Fehler anzeigt.
${ESSID} wir auf die exakte ESSID des Access Points (AP) gesetzt zu dem sich das System verbindet. ${ESSIDVAR} ist ${ESSID} in einen Variablennamen umgewandelt, den bash erlaubt.
preassociate() {
# Das Untere fügt zwei Konfigurations-Variablen leap_user_ESSID und
# leap_pass_ESSID hinzu. Wenn beide für die ESSID konfiguriert sind
# zu der sie verbunden sind, führen wir das CISCO LEAP Script aus.
local user pass
eval user=\"\$\{leap_user_${ESSIDVAR}\}\"
eval pass=\"\$\{leap_pass_${ESSIDVAR}\}\"
if [[ -n ${user} && -n ${pass} ]]; then
if [[ ! -x /opt/cisco/bin/leapscript ]]; then
eend "For LEAP support, please emerge net-misc/cisco-aironet-client-utils"
return 1
fi
einfo "Waiting for LEAP Authentication on \"${ESSID//\\\\//}\""
if /opt/cisco/bin/leapscript ${user} ${pass} | grep -q 'Login incorrect'; then
ewarn "Login Failed for ${user}"
return 1
fi
fi
return 0
}
postassociate() {
# Diese Funktion ist hauptsächlich der Vollständigkeit halber
# hier... Ich habe bisher noch nicht darüber nachgedacht etwas
# Raffiniertes damit anzustellen ;-D
return 0
}
${ESSID} und ${ESSIDVAR} sind in den Funktionen
predown()
und postdown()
nicht verfügbar.Schauen Sie sich bitte /usr/share/doc/netifrc-*/net.example.bz2 an, um weitere Informationen zum Schreiben von angepassten Funktionen zu erhalten.
Netzwerkverwaltung
Mit Laptops können Systeme immer in Bewegung sein. Daraus resultiert, dass am System nicht immer ein Ethernet Kabel angeschlossen sein kann oder ein Access Point verfügbar ist. Außerdem möchte der Benutzer möglicherweise, dass das Netzwerk automatisch funktioniert, wenn ein Ethernet Kabel eingesteckt wird oder ein Access Point gefunden wird.
In diesem Kapitel behandeln wir, wie dies erreicht werden kann.
Dieses Dokument spricht nur über ifplugd, aber es gibt Alternativen wie netplug. netplug ist eine leichtgewichtige Alternative zu ifplugd, aber es verlässt sich darauf, dass die Kernel Netzwerktreiber korrekt arbeiten und viele Treiber tun dies nicht.
ifplugd
ifplugd ist ein Dienst der Schnittstellen startet und stoppt, wenn ein Netzwerkkabel eingesteckt oder abgezogen wird. Es kann ebenfalls die Zuordnung von Access Points handhaben oder wenn neue in Reichweite kommen.
root #
emerge --ask sys-apps/ifplugd
Die Konfiguration von ifplugd ist außerdem ziemlich geradlinig. Sie befindet sich in /etc/conf.d/net. Führen Sie man ifplugd aus, um Details zu den verfügbaren Variablen zu erhalten. Sehen Sie sich außerdem /usr/share/doc/netifrc-*/net.example.bz2 für weitere Beispiele an.
# Ersetzen Sie eth0 mit der zu überwachenden Schnittstelle
ifplugd_eth0="..."
# Um eine drahtlose Schnittstelle zu überwachen
ifplugd_eth0="--api-mode=wlan"
Zusätzlich zur Verwaltung mehrerer Netzwerkverbindungen möchten die Nutzer vielleicht ein Tool hinzufügen, das den Umgang mit mehreren DNS Servern und Konfigurationen vereinfacht. Das ist sehr praktisch, wenn das System seine IP-Adresse über DHCP empfängt.
root #
emerge --ask net-dns/openresolv
Werfen Sie einen Blick auf man resolvconf, um mehr über seine Funktionen zu lernen.
Warning: Display title "Gentoo Linux alpha Handbuch: Netzwerk-Konfiguration" overrides earlier display title "Handbuch:Alpha/Komplett/Netzwerk".