Handbuch:PPC/Netzwerk/Modular
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.