[ zurück ] [ Inhalt ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ weiter ]


Debian-Referenz
Kapitel 10 - Netzwerk-Konfiguration


Dieses Kapitel konzentriert sich auf die Netzwerk-Administration in Debian. Eine allgemeinere Einführung in GNU/Linux findet sich in Net-HOWTO.

Um sich mit einem Debian-Rechner mit dem Internet zu verbinden, muss seine Netzwerk-Schnittstelle korrekt konfiguriert sein.

Die erste Voraussetzung ist Kernel-Unterstützung für die vorhandenen Geräte. Beispiele solcher Geräte sind: Ethernet-Karten, Wi-Fi-Karten und weitere. Um diese Unterstützung des Kernels zu erhalten, kann es nötig sein, den Kernel neu zu kompilieren oder Module hinzuzufügen, so wie es in Der Linux-Kernel unter Debian, Kapitel 7 beschrieben ist.

Die Konfiguration der Netzwerk-Geräte wird weiter unten beschrieben. Die Angaben in diesem Kapitel sind für Sarge aktualisiert worden. Vieles vom hier gesagten gilt nicht mehr für vorherige Versionen von Debian.


10.1 Netzwerk-Grundlagen mit IP

Ein Debian-Rechner kann mehrere Schnittstellen besitzen, die jeweils unterschiedliche IP (Internet Protokoll)-Adressen haben können. Diese Schnittstellen können auch unterschiedlichen Typs sein, darunter:

Es gibt eine Vielzahl anderer Netzwerkgeräte, darunter SLIP, PLIP (IP über serielle und parallele Verbindungen), "shaper"-Geräte, die das Datenaufkommen auf bestimmten Geräten steuern, Frame-Relay, AX.25, X.25, ARCnet und LocalTalk.

Jede Netzwerkschnittstelle, die direkt mit dem Internet (oder IP-basierten Netzwerk) verbunden ist, wird durch eine eindeutige 32-Bit IP-Adresse identifiziert.[7] Die IP-Adresse können in einen Teil für Netzwerkadressierung und einen Teil zur Adressierung des Rechners geteilt werden. Wenn in einer IP-Adresse alle Bits, die Teil der Netzwerkadresse sind, auf Eins gesetzt werden und alle Bits, die Teil der Host-Adresse sind, auf Null gesetzt werden, dann erhält man die so genannte Netzmaske (netmask) des Netzwerks.

IP-Netzwerke sind traditionell in Klassen eingeteilt, deren Netzwerkadressen 8, 16 oder 24 Bit lang sind. Dieses System war nicht flexibel und verschwendete viele IP-Adressen, so dass IPv4-Netzwerke heute unterschiedlich lange Netzwerkadressen zugewiesen bekommen.

      
             IP-Adressen                     Netzmasken      Länge
     Class A 1.0.0.0 - 126.255.255.255       255.0.0.0       = /8 
     Class B 128.0.0.0 - 191.255.255.255     255.255.0.0     = /16 
     Class C 192.0.0.0 - 223.255.255.255     255.255.255.0   = /24

IP-Adressen, die nicht darin liegen, sind für besondere Zwecke reserviert.

Einige Adressbereiche innerhalb jeder Klasse sind für lokale Netzwerke (LANs) reserviert. Diese Adressen kollidieren garantiert nicht mit irgendwelchen Adressen des Internet. (Aus diesem Grund können die Rechner, die eine solche Adresse zugewiesen bekommen, nicht direkt mit dem Internet verbunden sein, sondern müssen einen Gateway-Rechner als Zwischenschritt verwenden, der entweder die einzelnen Services anbietet oder Network-Adress-Translation (NAT) durchführt.) Diese Adressbereiche und die Anzahl der Bereiche in jeder Klasse sind in der folgenden Tabelle dargestellt.

      
             Netzwerkadressen             Länge   Anzahl
     Class A 10.x.x.x                     /8      1
     Class B 172.16.x.x - 172.31.x.x      /16     16
     Class C 192.168.0.x - 192.168.255.x  /24     256

Die erste Adresse in einem IP-Netzwerk ist die Adresse des Netzwerks selbst. Die letzte Adresse ist die Broadcast-Adresse des Netzwerks.[8] Alle anderen Adressen können einzelnen Rechnern des Netzwerks zugewiesen werden. Üblicherweise wird die erste oder letzte Adresse eines Netzwerks für den Gateway-Rechner verwendet.

Die Routing-Tabelle enthält vom Kernel bereitgestellte Informationen darüber, wie IP-Pakete an ihre Ziele verschickt werden. Hier eine Beispieltabelle eines Debian-Rechners in einem lokalen Netzwerk mit der IP-Adresse 192.168.50.x/24. Der Rechner 192.168.50.1 (ebenfalls im LAN) ist ein Router für das Firmennetzwerk, 172.20.x.x/16 und 192.168.50.254 (ebenfalls im LAN) sind Router für das Internet.

      
     # route 
     Kernel IP routing table 
     Destination   Gateway        Genmask        Flags Metric Ref Use Iface 
     127.0.0.0     *              255.0.0.0      U     0      0     2 lo 
     192.168.50.0  *              255.255.255.0  U     0      0   137 eth0 
     172.20.0.0    192.168.50.1   255.255.0.0    UG    1      0     7 eth0
     default       192.168.50.254 0.0.0.0        UG    1      0    36 eth0

Die IP-Adressen in dieser Tabelle können auch also Namen dargestellt werden, so wie sie in der Datei /etc/networks hinterlegt sind oder wie sie von der C-Bibliothek aufgelöst werden.

Der Kernel ist neben seiner Aufgabe als Router auch in der Lage, Network Address Translation (NAT), Traffic Shaping und Filtering durchzuführen.

Siehe Net-HOWTO und other networking HOWTOs für weitere Informationen zu diesem Thema.


10.2 Netzwerk-Konfiguration auf niederer Ebene

Die traditionellen Werkzeuge, um unter GNU/Linux die Netzwerkkonfiguration auf niederer Ebene vorzunehmen, sind ifconfig und route, welche im Paket net-tools enthalten sind. Diese Werkzeuge wurden offiziel von ip abgelöst, welches sich im Paket iproute befindet. Das Programm ip funktioniert ab Linux 2.2 und leistet mehr als die alten Werkzeuge. Die alten Werkzeuge funktionieren jedoch noch immer und sind mehr Benutzern bekannt.


10.2.1 Netzwerkkonfiguration auf niederer Ebene – ifconfig und route

An einem Beispiel soll gezeigt werden, wie die IP-Adresse der Schnittstelle eth0 von der Adresse 192.168.0.3 auf 192.168.0.111 zu ändern und eth0 als Route für das Netzwerk 10.0.0.0 via 192.168.0.1 einzurichten ist. Wir starten ifconfig und route ohne Argumente, um den derzeitigen Status aller Netzwerkschnittstellen und des Routing darzustellen.

      
     # ifconfig 
     eth0    Link encap:Ethernet HWaddr 08:00:46:7A:02:B0 
             inet addr:192.168.0.3 Bcast:192.168.255.255 Mask:255.255.0.0
             UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
             RX packets:23363 errors:0 dropped:0 overruns:0 frame:0 
             TX packets:21798 errors:0 dropped:0 overruns:0 carrier:0 
             collisions:0 txqueuelen:100 
             RX bytes:13479541 (12.8 MiB) TX bytes:20262643 (19.3 MiB) 
             Interrupt:9 
             
     lo      Link encap:Local Loopback 
             inet addr:127.0.0.1 Mask:255.0.0.0 
             UP LOOPBACK RUNNING MTU:16436 Metric:1 
             RX packets:230172 errors:0 dropped:0 overruns:0 frame:0 
             TX packets:230172 errors:0 dropped:0 overruns:0 carrier:0 
             collisions:0 txqueuelen:0 
             RX bytes:22685256 (21.6 MiB) TX bytes:22685256 (21.6 MiB) 
             
     # route 
     Kernel IP routing table 
     Destination     Gateway         Genmask         Flags   Metric  Ref     Use     Iface 
     192.168.0.0     *               255.255.0.0     U       0       0       0       eth0 
     default         192.168.0.1     255.255.255.255 UG      0       0       0       eth0

Zunächst schalten wir die Schnittstelle ab.

      
     # ifconfig eth0 inet down 
     # ifconfig 
     lo Link encap:Local Loopback 
             ... (keine weiteren eth0-Einträge) 
     # route
             ... (keine weiteren Routing-Einträge)

Dann schalten wir sie mit einer neuen IP-Adresse und neuem Routing wieder ein.

      
     # ifconfig eth0 inet up 192.168.0.111 \ 
             netmask 255.255.255.0 broadcast 192.168.0.255 
     # route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.0.1 dev eth0

Das Ergebnis:

      
     # ifconfig 
     eth0 Link encap:Ethernet HWaddr 08:00:46:7A:02:B0 
             inet addr:192.168.0.111 Bcast:192.168.0.255 Mask:255.255.255.0 
             UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
             ... 
     lo   Link encap:Local Loopback 
             inet addr:127.0.0.1 Mask:255.0.0.0 ... 
     
     # route 
     Kernel IP routing table 
     Destination     Gateway         Genmask         Flags   Metric  Ref     Use     Iface 
     192.168.0.0     *               255.255.255.0   U       0       0       0       eth0 
     10.0.0.0        192.168.0.1     255.0.0.0       UG      0       0       0       eth0

Weitere Informationen sind in ifconfig(8) und route(8) zu finden.


10.2.2 Netzwerkkonfiguration auf niederer Ebene – ip

Das Programm ip erledigt folgendermaßen das gleiche wie die obigen Aufrufe von ifconfig und route

Eine Befehlsübersicht des Programms ip kann mittels des Arguments help aufgerufen werden. Zum Beispiel druckt ip link help:

      
     Usage: ip link set DEVICE { up | down | arp { on | off } | 
                             dynamic { on | off } | 
                             multicast { on | off } | txqueuelen PACKETS | 
                             name NEWNAME | 
                             address LLADDR | broadcast LLADDR | 
                             mtu MTU} 
             ip link show [ DEVICE ]

Siehe auch ip(8).


10.2.3 Konfiguration der Wi-Fi-Schnittstelle

Die Wi-Fi-Schnittstelle wird - zusätzlich zu ifconfig oder ip - mit iwconfig program konfiguriert und befindet sich im Paket wireless-tools.

Siehe iwconfig(8).


10.2.4 Konfiguration der PPP-Schnittstelle

Wenn mit einem Modem über eine Telefonleitung auf das Internet zugegriffen werden soll, dann wird die Verbindung mit Hilfe des Point-to-Point-Protokolls (PPP) aufgebaut. Derartige Verbindungen werden als Netzwerkschnittstellen ppp0, ppp1, usw. dargestellt.

Die PPP-Schnittstelle wird vom PPP-Dämon pppd verwaltet, der sich im Paket ppp befindet. Möchte der Benutzer die PPP-Schnittstelle konfigurieren, so bedeutet dies pppd zu konfigurieren.


10.2.4.1 Manuelle pppd-Konfiguration

Um eine Netzwerkverbindung herzustellen, muss ein Kommunikationskanal geöffnet werden (üblicherweise eine serielle Schnittstelle), Befehle müssen an das Kommunikationsgerät (meist ein Modem) gesendet werden, eine Telefonnummer muss gewählt werden, die Identität des Benutzers muss dem fremden PPP-Dämon bestätigt werden, der Kernel muss eine PPP-Schnittstelle erzeugen, die Routing-Tabelle muss geändert werden, so dass der Datenverkehr über diese Schnittstelle abgewickelt wird. pppd kann all dieses leisten und hat daher eine sehr lange Liste von Optionen. Diese Optionen sind in pppd(8) beschrieben.

Auf einem Debian-System können globale Einstellungen in der Datei /etc/ppp/options abgelegt werden. Benutzerspezifische Optionen können in ~/.ppprc gespeichert werden. Optionen, die vom jeweiligen Port abhängen werden in /etc/ppp/options.portname gespeichert. Zum Beispiel seien zwei Modems vorhanden: Ein eingebautes Lucent MT-Modem, auf das via /dev/LT-modem zugegriffen wird, und ein externes Modem, auf das via /dev/ttyS0 zugegriffen wird. Zur Konfiguration dienen zwei Dateien:

      
     # cat > /etc/ppp/options.LT-modem <<EOF 
     115200 
     init "/usr/sbin/chat -f /etc/chatscripts/setup-LT-modem" 
     EOF
     # cat > /etc/ppp/options.ttyS0 <<EOF 
     115200 init "/usr/sbin/chat -f /etc/chatscripts/setup-ttyS0" 
     EOF

Diese verweisen auf die folgenden chat-Skripte. Erstens /etc/chatscripts/setup-LT-modem.

      
     ABORT ERROR 
     '' ATZ 
     OK 'ATW2X2 S7=70 S11=55' 
     OK AT

Zweitens: /etc/chatscripts/setup-ttyS0.

      
     ABORT ERROR 
     '' ATZ 
     OK 'ATL1M1Q0V1W2X4&C1&D2 S6=4 S7=70 S11=55 S95=63 S109=1 +FCLASS=0' 
     OK AT

Der Inhalt dieser Dateien muss selbstverständlich an die jeweilige Hardware angepasst werden.

Optionen können dem pppd-Dämon auch als Argumente übergeben werden.

In Debian wird pppd üblicherweise durch das Kommando pon gestartet. Das erste Argument von pon bezeichnet die Optionen-Datei in /etc/pppp/peers/, welche dann von pppd gelesen wird. [9] Hier werden Optionen gesetzt, die für einen bestimmten Verbindungspartner gedacht sind, zum Beispiel einen Internet-Service-Provider (ISP).

Nehmen wir an, man pendele zwischen Amsterdam und Den Haag. In jeder Stadt ist der Internetzugang über die beiden ISP-Anbieter Planet und KPN möglich. Zunächst wird ein eine Optionen-Datei für jeden ISP angelegt.

     
     # cat > /etc/ppp/peers/KPN <<EOF 
     remotename KPN 
     noauth 
     user kpn 
     noipdefault 
     ipparam KPN 
     EOF 
     # cat > /etc/ppp/peers/Planet <<EOF 
     remotename Planet 
     auth 
     user user3579@planet.nl 
     noipdefault 
     mru 1000 
     mtu 1000 
     ipparam Planet 
     EOF

Diese Dateien setzen die Optionen, die sich zwischen den beiden ISPs unterscheiden. Optionen, die für beide ISPs gleich sind, können in /etc/ppp/options oder in einer der Dateien für die Schnittstellenkonfiguration abgelegt werden.

Nun werden Dateien für jeden ISP angelegt. In unserem Beispiel liegt der einzige Unterschied zwischen den beiden Anbietern in den verschiedenen Chat-Skripten. (Das Chatscript unterscheiden sich, weil die lokale Telefonnummer für den Internet-Zugriff verschiedenist.)

      
     
     # cat > /etc/ppp/peers/KPN-Amsterdam <<EOF 
     connect "/usr/sbin/chat -v -f /etc/chatscripts/KPN-Amsterdam" 
     file /etc/ppp/peers/KPN 
     EOF 
     
     # cat > /etc/ppp/peers/KPN-DenHaag <<EOF 
     connect "/usr/sbin/chat -v -f /etc/chatscripts/KPN-DenHaag" 
     file /etc/ppp/peers/KPN 
     EOF 
     
     # cat > /etc/ppp/peers/Planet-Amsterdam <<EOF 
     connect "/usr/sbin/chat -v -f /etc/chatscripts/Planet-Amsterdam" 
     file /etc/ppp/peers/Planet 
     EOF 
     
     # cat > /etc/ppp/peers/Planet-DenHaag <<EOF 
     connect "/usr/sbin/chat -v -f /etc/chatscripts/Planet-DenHaag" 
     file /etc/ppp/peers/Planet 
     EOF

Der Aufruf von file fügt eine der oben angegebenen Optionen-Dateien ein. Die connect-Anweisung übergibt den Befehl, den pppd benutzt, um die Verbindung aufzubauen. Normalerweise wird hierfür chat verwendet, wobei das chat-Skript an den ISP angepaßt werden muss. Hier sind die chat-Skripte für Den Haag; das chat-Skript für Amsterdam ist bis auf die Telefonnummer gleich.

      
     # cat > /etc/chatscripts/KPN-DenHaag <<EOF 
     ABORT BUSY 
     ABORT 'NO CARRIER' 
     ABORT VOICE 
     ABORT 'NO DIALTONE' 
     ABORT 'NO DIAL TONE' 
     ABORT 'NO ANSWER' 
     ABORT ERROR 
     OK-AT-OK ATDT 0676012321 
     CONNECT \d\c 
     EOF 
     # cat > /etc/chatscripts/Planet-DenHaag <<EOF 
     ABORT BUSY 
     ABORT 'NO CARRIER'
     ABORT VOICE 
     ABORT 'NO DIALTONE' 
     ABORT 'NO DIAL TONE' 
     ABORT 'NO ANSWER' 
     ABORT ERROR 
     OK-AT-OK ATDT 0676002505 
     CONNECT \d\c 
     EOF

Um sich mit den ISPs verbinden zu können, benötigt man einen Benutzernamen und das zugehörige Password, die pppd der Gegenstelle auf Anfrage zuschickt. Diese Informationen werden entweder in /etc/ppp/pap-secrets (falls das PAP-Protokolk benutzt wird) oder in /etc/ppp/chap-secrets (falls das CHAP-Protokol benutzt wird) gespeichert. Obwohl CHAP sicherer ist, ist PAP noch weit verbreitet. Da diese Dateien geheime Daten enthalten, sollten die Gruppen und die Welt keine Schreib- und Leserechte besitzen. Das FOrmat dieser Dateien wird in pppd(8) erklärt. Das Geheimnis "secret" (drittes Feld) wird durch Suche nach dem Benutzernamen (erstes Feld) oder dem Servernamen (zweites Feld) gefunden. Wenn eine Verbindung zu einem ISP aufgenommen wird, ist der Servername in der Regel nciht bekannt, weswegen der Benutzername verwendet wird; dies geschieht in den userZeilen in peers/KPN und peers/Planet (siehe oben).

      
     # client name           server name     secret 
     kpn                     *               kpn 
     user3579@planet.nl      *               myfavoritepet

Siehe /usr/share/doc/ppp/README.Debian.gz für weitere Informationen.


10.2.4.2 Konfiguration von pppd mit pppconfig

pppd ist mit pppconfig einfach zu konfigurieren; es befindet sich im gleichnamigen Paket. pppconfig fragt den Benutzer menügesteuert nach den wichtigen Daten und richtet die nötigen Dateien ein.


10.2.4.3 Konfiguration der PPP-Schnittstelle mit wvdial

Ein anderer Ansatz zur Benutzung des pppd liegt in wvdial, das im sich im Paket wvdial findet. Statt pppd mit chat aufzurufen, um zu wählen und die Verbindung auszuhandeln, kann wvdial dies tun und daraufhin selbständig pppd starten. Allein mit der Telefonnummer, dem Benutzernamen und dem Passwort kann wvdial in den meisten Fällen erfolgreich die Verbindung aufbauen.


10.3 Namensgebung


10.3.1 Hostname

Der Kernel verwaltet einen Namen des Systems, den hostname. Das Initialisierungs-Skript /etc/init.d/hostname.sh setzt den System-Hostnamen, der sich in der Datei /etc/hostname befindet, während des Bootens mit dem Befehl hostname. Diese Datei solle nur den System-Hostnamen beinhalten, keinen voll qualifizierten Domänennamen (FQDN).

Um den derzeitigen Hostnamen auszugeben, wird das Kommando hostname ohne Argumente aufgerufen.


10.3.2 Mailname

Der mailname eines Rechners ist der Name, den er im Zusammenhang mit E-Mail-Zustellung verwendet. Die Datein /etc/mailname enthält diesen Namen, der von einem Zeilenwechsel (newline) gefolgt sein muss. Der Mailname ist normalerweise ein voll qualifizierter Domänenname, der sich auch zu einer der IP-Adressen des Rechners auflösen lässt. Siehe mailname(5).

Was der Empfänger von E-Mail in der Von:-Zeile der E-Mails von einem Debian-Rechner sieht, hängt von der Konfiguration der E-Mail-Programme (MUA) und dem Mail-Transfer-System (MTA) ab. Angenommen ein lokaler Benutzer namens foo senset eine E-Mail von einem Rechner mit dem Mailnamen meinrechner.dom. Die Von: Kopfzeile der ausgehenden E-Mail wird folgendermaßen aussehen:

Selbst wen der MUA eine Von:-Kopfzeile gesetzt hat, kann der MTA eine Zeile "Sender:foo@herman.dom" hinzufügen, um die wahre Herkunft anzuzeigen.

Da jeder beteiligte MTA die Adresse ändern kann, kann sie beim Empfänger völlig anders aussehen.


10.4 Domain Name Service (DNS)

Rechner werden durch ihren Domänennamen ebenso spezifiziert wie durch ihre IP-Adresse. DNS ist ein Client-Server-System, in dem Namensauflösung von Nameservern angeboten wird, die Domänennamen mit IP-Adressen verknüpft (neben weiteren Eigenschaften der Rechner). Die GNU C-Bibliothek resolver(3) kann ebenfalls IP-Adressen in Dateien nachschlagen oder den Network Information Service (NIS) konsultieren.

Manche Programme (z.B. GNOME) erwarten, dass der kanonische voll qualifizierte Domainname (FQDN) eines Hosts zu einer IP-Adresse aufgelöst werden kann. Dies ist unsauber, da der System-Hostname und der Domänenname zwei sehr verschiedene Dinge sind. Um diese Software zu unterstützen ist es nötig dafür zu sorgen, dass der System-Hostname aufgelöst werden kann. Meist geschieht dies, indem eine Zeile in der Datei hinzugefügt wird, die einige IP-Adressen und den System-Hostnamen enthält. Hat das System eine permanente IP-Adresse, dann wird diese dort eingetragen, in allen anderen Fällen wird kann Adresse 127.0.1.1 verwendet werden.

      
     127.0.0.1       localhost
     127.0.1.1       uranus

Ob der System-Hostname zu einer IP-Adresse mit einem vollen qualifizierten Domänennamen aufgelöst werden kann, wird der Befehl hostname --fqdn benutzt.


10.4.1 Resolver

Die Aufgabe des Resolvers (Auflösers) ist die Umsetzung von Domänennamen in IP-Adressen. Der meistgenutzte Resolver sind die Resolver-Funktionen (resolver(3)) in der GNU C-Bibliothek. Ein anderer Resolver ist FireDNS, der sich im Paket libfiredns befindet. Es gibt noch andere.

Die Konfigurationsdatei /etc/nsswitch.conf enthält eine hosts-Zeile, welche bestimmt auf welche Art und Weise der GNU-libC-Resolver Namen auflöst. Diese Zeile listet die Services auf, die zur Namensauflösung verwendet werden: z.B., dns, files, nis, nisplus. Siehe nsswitch.conf(5). Wenn dort der Service files genutzt wird, bestimmt die Konfigurationsdatei /etc/hosts das Verhalten des Resolvers. Siehe hosts(5).

Alle genannten Dateien sind statisch und können mit einem beliebigen Editor verändert werden.

Wird der Service dns verwendet, bestimmt die Konfigurationsdatei /etc/resolv.conf das Verhalten des Resolvers. Siehe resolv.conf(5)- Eine der wichtigen Funktionen von resolv.conf ist die Bereitstellung der Adressen der Nameserver, die zur Namensauflösung kontaktiert werden. Diese Liste hängt vom Netzwerk ab und kann sich zur Laufzeit ändern. Programme wie pppd oder dhclient können resolv.conf manipulieren und Zeilen hinzufügen oder entfernen, aber dies funktioniert nicht immer zuverlässig und konfliktfrei, Das Paket resolvconf löst dieses Problem durch Schaffung einer standardisierten Methode zur Aktualisierung dieser Datei. Siehe Verwaltung von Nameserver-Informationen – resolvconf, Abschnitt 10.4.2.


10.4.2 Verwaltung von Nameserver-Informationen – resolvconf

Das Paket resolvconf schafft einen Rahmen für die dynamische Verwaltung von Informationen über erreichbare Nameserver. Es löst das alte Problem der Organisation dynamischer Liste von Nameservern für den Resolver oder DNS-Caches. Resolvconf ist ein Vermittler zwischen den Programmen, die Netzwerkschnittstellen steuern oder Nameserver-Informationen bereitstellen und Programmen, die Nameserver-Dienste erfragen.

resolvconf funktioniert ohne manuelle Konfiguration. Das Paket ist jedoch relativ neu und benötigt vielleicht Anpassungen, bis es richtig läuft. Falls Pakete angepasst wurden, die ihrerseits /etc/resolv.conf verändern, so müssen diese Anpassungen allerdings rückgängig gemacht werden. Siehe /usr/share/doc/resolvconf/README.gz für weiter Details.


10.4.3 Zwischenspeicherung von Hostnamen – nscd, dnsmasq, pdnsd, bind9

Wenn der Nameserver langsam ist, kann nscd verwendet werden, um die Ergebnisse der Abfragen des libc6-Resolvers zwischenzuspeichern (Caching).

Wenn auch die Abfragen anderer Rechner im lokalen Netzwerk zwischengespeichert werden sollen, kann ein besonderer Nameserver (Caching Forwarding Nameserver) wie dnsmasq oder pdnsd genutzt werden.

Auch named aus dem Paket bind9 kann als Caching Forwarding Nameserver eingesetzt werden. Dies ist ein umfangreiches Programm, dass nur verwendet werden sollte, wenn dessen weitreichenden Möglichkeiten auch tatsächlich genutzt werden, ansonsten sind die vorher genannten Pakete völlig ausreichend.

Alle diese Pakete arbeiten gut mit resolvconf zusammen.


10.4.4 Bereitstellung eines Domain Name Service - bind

Falls offizieller Name Service in einer Domäne angeboten werden soll, sollte ein ausgewachsener Nameserver wie named aus dem bind9-Paket verwendet werden.

Zusammen mit bind9 sollte auch dnsutils installiert werden. Auch folgende Pakete enthalten nützliche Werkzeuge: bind9-host; dns-browse; dnscvsutil; nslint. Die Dokumentation befindet sich in einem eigenen Paket: bind9-doc. Die Entwicklerpakete befinden sich in diesen Paketen: libbind-dev; libnet-dns-perl. Falls Schnittstellen mit DHCP konfiguriert werden sollen, sind diese Pakete nützlich: dhcp-dns.

Die grundlegende Einrichtung geschieht bei Installation von bind9 oder dem Aufruf von dpkg-reconfigure mit dem Paketnamen als Argument. Die Konfiguration wird in named.conf vorgenommen. In Debian befindet sich diese Datei in /etc/bind/ und wird hauptsächlich genutzt, um die elementaren DSN-Zonen festzulegen; sie fügt mit include zwei weitere Dateien ein: named.conf.local definiert lokale Zonen, während named.conf.options Optionen festlegt. (Letztere wird von resolvconf verarbeitet, um daraus /var/run/bind/named.options zu erzeugen, welche sich vom Original darin unterscheidet, dass die forwarders-Spezifikation eine Liste der derzeit erreichbaren nicht-lokalen Nameserver beinhaltet. Um dieses dann zu nutzen, muss die include-Zeile in named.conf angepasst werden, so dass /var/run/bind/named.options eingebunden wird. Siehe Verwaltung von Nameserver-Informationen – resolvconf, Abschnitt 10.4.2

Datenbankdateien der Form named.conf* ohne vollen Pfadnamen werden in /var/cache/bind/ gespeichert. An dieser Stelle sollten die Dateien abgelegt werden, die named erzeugt. zum Beispiel Datenbakdateien für Zonen, für die der Dämon Sekundant istXXX. Statische Datenbankdateien in /etc/bind/ müssen in named.conf mit vollem Pfadnamen angegeben werden. Siehe /usr/share/doc/bind9/README.Debian.gz für Details.


10.5 Konfiguration der Netzwerkschnittstelle mit DHCP

Die Low-Level-Konfiguration der Netzwerkschnittstelle kann mit dem Dynamic Configuration Protocol (DHCP) automatisiert werden. Auf diese Weise können Firewalls und Router oder Breitband-ISP ihre IP-Adressen und andere Parameter verteilen.

Dazu müssen folgende Pakete installiert werden:

pump ist einfach und weit verbreitet. dhcp3-client ist komplexer, aber dafür umfassender konfigurierbar. [10]


10.6 High-Level-Netzworkkonfiguration in Debian


10.6.1 High-Level-Netzwerkkonfiguration mit ifupdown

Um die Netzwerkkonfiguration in Debian zu vereinfachen existieren die High-Level-Konfigurationswerkzeugeifup und ifdown, sowie die /etc/network/interfaces-Datei. [11] Falls das Paket ifupdown zur Netzwerkkonfiguration genutzt wird, dann sollten die Low-Level-Befehle nicht benutzt werden. Auch andere High-Level-Tools, wie whereami, divine, intuitively, etc., die wiederum Low-Level-Tools aufrufen, sollten gemieden werden. Das Paket ifupdown wurde entworfen, um allein für die Netzwerkschnittstellen zuständig zu sein.

Um dies zu unterstützen, muss Folgendes getan werden:

      
     # ifdown eth0 
     # editor /etc/network/interfaces # sollte angepasst werden 
     # ifup eth0

Weitere Informationen finden sich in interfaces(5), /usr/share/doc/ifupdown/examples/network-interfaces.gz und ifup(8).


10.6.1.1 Konfiguration einer Schnittstelle mit einer statischen IP-Adresse

Nehmen wir an eine Ethernet-Schnittstelle soll die feste IP-Adresse 192.168.0.111 zugewiesen bekommen. Diese Adresse beginnt mit 192.168.0, weswegen es sich in einem LAN befinden muss. Das Gateway dieses LANs habe die Adresse 192.168.0.1. Der Datei /etc/network/interfaces muss also diese Zeile hinzugefügt werden:

      
     iface eth0 inet static 
             address 192.168.0.111 
             netmask 255.255.255.0
             gateway 192.168.0.1

In "up"- und "down"-Zeilen können andere Aspekte dieser Schnittstelle eingestellt oder Aktionen definiert werden, die beim Auf- oder Abschalten der Schnittstelle durchgeführt werden.

      
     iface eth0 inet static 
             address 192.168.0.111 
             netmask 255.255.255.0
             gateway 192.168.0.1 
             up route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.0.2 dev $IFACE 
             down route del -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.0.2 dev $IFACE 
             up echo Interface $IFACE going up | /usr/bin/logger -t ifup 
             down echo Interface $IFACE Going down | /usr/bin/logger -t ifdown

Desweiteren können auszuführende Skripte in /etc/network/if-up.d und /etc/network/if-down.d plaziert werden. In diesen Skripten können auch weitergehende Optionen programmiert werden. Siehe interfaces(5) für Details. Zum Beispiel beinhaltet das Paket resolvconf Skripte, mit denen DNS-Informationen zu /etc/resolv.conf hinzugefügt werden können, während die Schnittstelle aktiv ist.

      
     iface eth0 inet static 
             address 192.168.0.111
             netmask 255.255.255.0 
             gateway 192.168.0.1 
             dns-search somedomain.org
             dns-nameservers 195.238.2.21 195.238.2.22

Der Parameter somedomain.org der dns-search-Option entspricht dem Parameterder search -Option in resolv.conf(5). Die Parameter 195.238.2.21 und 195.238.2.22 der dns-nameservers-Parameter entspricht den nameserver-Parametern. Andere Optionen sind dns-domain und dns-sortlist. Siehe Verwaltung von Nameserver-Informationen – resolvconf, Abschnitt 10.4.2.


10.6.1.2 Konfiguration einer Schnittstelle mit DHCP

Um eine Schnittstelle mit DHCP zu konfigurieren, muss in /etc/network/interfaces eine Zeile wie die folgende hinzugefügt werden:

      
     iface eth0 inet dhcp

Damit dies funktioniert, muss einer der DHCP-Clients installiert sein (siehe Konfiguration der Netzwerkschnittstelle mit DHCP, Abschnitt 10.5).


10.6.1.3 konfiguration einer Wi-Fi-Schnittstelle

Das wireless-tools-Paket beinhaltet ein Skript /etc/network/if-pre-up.d/wireless-tools welches Wi-Fi (802.11a/b/g) bevor die Schnittstelle aufgeschaltet wird. Die Konfiguration erledigt das Programm iwconfig; siehe iwconfig(8). Für jeden iwconfig-Parameter kann eine Option in /etc/network/interfaces wie jene schon dort vorhandenen hinzugefügt werden, wobei die drahtlosen Varianten durch "wireless-" eingeleitet werden. Um zum Beispiel die ESSID von eth0 auf myessid und den Schlüssel auf 123456789e zu setzen, bevor eth0 mit DHCP aufgeschaltet wird, muss /etc/network/interfaces folgendermaßen erweitert werden.

      
     iface eth0 inet dhcp 
             wireless-essid myessid 
             wireless-key 123456789e

Diese Methode zum Setzen der ESSID sollte nicht verwendet werden, wenn waproamd diese Schnittstelle überwacht. Wenn ifup gestartet wird, hat waproamd die ESSID und den Schlüssel schon gesetzt. Siehe Schalten der Netzwerkkonfiguration - waproamd, Abschnitt 10.8.4.


10.6.1.4 Konfiguration einer PPP-Schnittstelle

Die Programme ifup und ifdown verwenden pon und poff um PPP-Schnittstellen zu verwalten; siehe Konfiguration der PPP-Schnittstelle, Abschnitt 10.2.4.

Angenommen eine PPP-Verbindung zu myisp soll aufgebaut werden. Die Datei /etc/network/interfaces wird die folgende Zeile hinzugefügt:

      
     iface ppp0 inet ppp 
             provider myisp

Diese Zeile sorgt dafür, dass ifup ppp0 tatsächlich

      
     pon myisp

aufruft. Leider ist es derzeit nicht möglich weitere Optionen an pppd durch diese Zeile in /etc/network/interfaces weiterzureichen. [12]

Mit dem Paket ifupdown kann keine Hilfskonfiguration der PPP-Schnittstelle vorgenommen werden. Da pon beendet wird, bevor pppd die Verbindung etabliert hat, startet ifup die up-Skripte schon bevor die PPP-Schnittstelle bereit ist. Bis zu diesem Fehler[13] ist repariert, muss die Hilfskonfiguration in /etc/ppp/ip-up oder /etc/ppp/ip-up.d erledigt werden.


10.6.1.5 Konfiguration der PPPoE-Schnittstelle

Manche Breitband-Internet-Anbieter (ISP) verwenden PPP, um Verbindungen herzustellen, auch wenn die Rechner über Ethernet oder ATM an das Netzwerk angeschlossen sind. Dies wird durch PPP über Ethernet (PPPoE) erreicht, eine Technik, die den PPP-Datenstrom in Ethernet-Frames kapselt. Angenommen, der ISP heiße meinisp Zunächst werden PPP und PPPoE für den Zugang über meinisp konfiguriert. Das Einfachste ist es, das Paket pppoeconf zu installieren und dann auf der Konsole pppoeconf zu starten. Dann muss in /etc/network/interfaces folgende Zeile hinzugefügt werden:

     iface eth0 inet ppp 
             provider myisp

Manchmal gibt es Probleme mit der Maximum Transfer Unit (MTU), wenn PPPoE über Digital Subscriber Line (DSL) verwendet wird. Siehe DSL-HOWTO für Details.

Wenn ein Breitband-Modem einen Router beinhaltet, dann wird das Modem/der Router die PPPoE-Verbindung verhandeln und im LAN wie ein gewöhnliches Ethernet-Gateway zum Internet erscheinen.


10.6.1.6 Konfiguration verschiedener Ethernet-Schnittstellen für ein Gateway

Angenommen eth0 wird mit einer von DHCP vermittelten IP-Adresse an das Internet angeschlossen und eth1 ist mit der statischen IP-Adresse 192.168.1.1 mit einem LAN verbunden. Die Datei /etc/network/interfaces wird um folgende Zeilen erweitert:

      
     iface eth0 inet dhcp 
     
     iface eth1 inet static 
             address 192.168.1.1 
             netmask 255.255.255.0

Wenn an diesem Rechner NAT (siehe Aufbau eines Gateway-Routers, Abschnitt 10.12) aktiviert wird, kann dieser Rechner seine Internet-Verbundung mit allen anderen Rechnern des LAN teilen.


10.6.1.7 Konfiguration virtueller Schnittstellen

Mittels virtueller Schnittstellen kann eine einzelne Ethernet-Karte so eingestellt werden, dass sie den Zugang zu verschiedenen IP-Subnetzwerken bietet. Angenommen ein Rechner ist an das Netzwerk 192.168.0.x/24 angeschlossen. Dieser Rechner soll sich mit der installierten Ethernet-Karte und einer vorhandenen IP-Adresse, die per DHCP bezogen wurde, mit dem Internet verbinden. In diesem Fall muss /etc/network/interfaces folgende Zeilen beinhalten:

      
     iface eth0 inet static 
             address 192.168.0.1 
             netmask 255.255.255.0 
             network 192.168.0.0 
             broadcast 192.168.0.255 
             
     iface eth0:0 inet dhcp

Die eth0:0-Schnittstelle ist in diesem Fall die virtuelle Schnittstelle. Wenn sie angesprochen wird, so wird auch die übergeordnete Schnittstelle eth0 aufgeschaltet.


10.6.2 High-Level-Konfiguration mit logischen Schnittstellen von ifupdown

Im Folgenden ist es wichtig den Unterschied zwischen physikalischen Schnittstellen und logischen Schnittstellen zu treffen. [14] Eine physikalische Schnittstelle wird "die Schnittstelle" genannt und vom Kernel eth0, eth1, ppp0, usw. genannt. Eine logische Schnittstelle ist ein Satz von Werten der den variablen Parametern einer physikalischen Schnittstelle zugeordnet werden kann. Dies ist kann veranschaulicht werden, indem man statt zu sagen "dies ist die logische Schnittstelle X", klarer formuliert: "diese ist die Schnittstelle mit dem Schnittstellen-Profil X.

Die iface-Definitionen in /etc/network/interfaces sind tatsächlich Definitionen logischer und nicht physikalischer Schnittstellen. [15] Wenn die Schnittstellen nicht erneut konfiguriert werden sollen, dass kann diese Tatsache einfach ignoriert werden, da der physikalischen Schnittstelle foo per VOreinstellung die logische Schnittstelle foo zugeordnet wird.

Angenommen, der Computer sei ein Laptop, der unterwegs verwendet wird. Wenn er mit einem Firmennetzwerk oder am heimischen LAN angeschlossen wird, muss eth0 entsprechend angepasst konfiguriert werden.

Zunächst werden dazu zwei logische Schnittstellen heim und arbeit angelegt (statt wie vorher eth0), die die Schnittstellen-Konfigurationen für die beiden Arbeitsplätze beinhalten sollen.

      
     iface home inet static 
             address 192.168.0.123 
             netmask 255.255.255.0 
             gateway 192.168.0.1 
             
     iface work inet static
             address 81.201.3.123 
             netmask 255.255.0.0 
             gateway 81.201.1.1

Dann kann die physikalische Schnittstelle eth0 von zu Hause mit der folgenden Kommandozeile aufgeschaltet werden:

      
     # ifup eth0=home

Um eth0 auf das Firmennetzwerk umzuschalten, reicht:

      #ifdown eth0 
      # ifup eth0=work

Wenn die Datei interfaces wie oben geschildert aussieht, ist es nicht mehr möglich, die Schnittstelle eth0 durch ein einfaches ifup eth0 zu starten. Denn ifup verwendet den Namen der physikalische Schnittstelle als Namen für die logische Schnittstelle und für eth0 ist keine logische Schnittstelle definiert.


10.6.3 Automatische Netzwerkkonfiguration mit ifupdown

Schnittstellen-Namen können andere Namen abgebildet werden ("mapping"), sobald ifup läuft. Auf welche Art und Weise diese Abbildung geschieht hängt von den Umständen ab. ifup kann eine physikalische Schnittstelle als eine bestimmte logische Schnittstelle aus einer Anzahl vorgefertiger Alternativen auswählen.

Die Abbildung logischer Schnittstellen läuft folgendermaßen ab:

Die Syntax der mapping-Zeile ist:

      mapping glob-pattern
             script script-name 
             [map script input]

Das Skript, welches in der mapping-Zeile genannt wird, muss immer den Namen der physikalischen Schnittstelle als Argument bekommen und über die Standardeingabe die Inhalte aller folgenden "map"-Zeilen (ohne das Wort "map" selbst. Das Skript schreibt das Ergebnis der Umbelegung auf die Standardausgabe und wird dann beendet.

Zum Beispiel wird der folgende "mapping"-Absatz dafür sorgen, dass ifup die Schnittstelle eth0 als die logische Schnittstelle aufschalten wird.

      mapping eth0
             script /usr/local/sbin/echo-home

wobei /usr/local/sbin/echo-home so aussieht:

      #!/bin/sh 
      echo home

Da die Umbelegung mit einem Skript erledigt wird, kann die Wahl der logischen Schnittstelle auch anhand irgendeines Tests erfolgen. In Wahl logischer Schnittstellen mit guessnet, Abschnitt 10.6.3.1 finden sich Beispiele.


10.6.3.1 Wahl logischer Schnittstellen mit guessnet

Das Paket guessnet muss installiert werden und dann folgende Zeilen in /etc/network/interfaces eingefügt werden:

      mapping eth0
             script guessnet-ifupdown 
             map home 
             map work

Wenn nun ifup eth0 ausgeführt wird, wird guessnet prüfen, ob eth0 als home oder work aufgeschaltet werden soll. Um diese Entscheidung zu treffen, wird in der Definition der logischen Schnittstelle gespeicherte Information ausgewertet.


10.6.4 Automatische Netzwerkkonfiguration mit laptop-net

Das Paket laptop-net wählt einen anderen Ansatz zur automagischen Netzwerkkonfiguration. Laptop-net verwendet nicht die logischen Schnittstellen des Pakets ifupdown sondern hat sein eigenes System von Konfigurations "Schemata und Systemprofilen". Laptop-net verwendet aber dennoch ifup und ifdown zur Konfiguration der physikalischen Schnittstellen. Weitere Informationen finden sich in der guten Dokumentation im Paket laptop-net-doc.


10.6.5 Automatische Netzwerkkonfiguration mit network-manager

Das Programm network-manager wird derzeit von Fedora-Entwicklern gepflegt und ist auch für Ubuntu erhältlich. Es könnte auch irgendwann in Debian auftauchen und ifupdown und zugehörige Werkzeuge überflüssig machen.


10.7 Umgang mit inkonsistenten Schnittstellennamen seitens des Kernels

Die Namen eth0, eth1, etc. werden vom Kernel in der Reihenfolge der Erstellung vergeben. Während die Anschlüsse, die zur Boot-Zeit angeschlossen daher immer die gleichen Namen erhalten, gilt dies nicht für Geräte, die im Betrieb angeschlossen werden ("hot-plugging"). Diese können in jeder beliebigen Reihenfolge erkannt werden und erhalten so unterschiedliche Namen.

Daher funktioniert die Zuordnung mittels logischer Schnittstellen in /etc/network/interfaces mit den Namen eth0, eth1, etc. und der Standard-Umbelegung bei Systemen mit Netzwerk-hot-plugging nicht zuverlässig. Instead you must give distinct names to the logical interfaces and use one of the following two methods to restrict which logical interfaces can be assigned to which adapters.

Eine Möglichkeit ist das Werkzeug nameif (im Paket net-tools) oder auch das flexiblere ifrename (im Paket ifrename), das den Kernel veranlasst Namen anhand von Eigenschaften der Anschlüsse zu vergeben. Sobald das Namensschema aktiviert ist, kann aus dem Namen der physikalischen Schnittstelle gefolgert werden, welcher Anschluss tatsächlich verwendet wird.

Eine andere Möglichkeit ist der Umbelegungsmechanismus von ifup, der auf ähnliche Weise für eine physikalische Schnittstelle eine logische Schnittstelle wählt anhand der Eigenschaften der Netzwerkkarte.

Angenommen zwei Netzwerkkarten seien für die Netzwerke net1 und net2 zuständig. Das Verzeichnis /usr/share/doc/ifupdown/examples/ enthält ein Mapping-Skript, dass verwendet werden kann, um eine logische Schnittstelle basierend auf der Media Access Controller-Adresse (MAC-Adresse) der jeweiligen Netzwerkkarte auszuwählen. Zunächst wird das Skript in einem angemessenen Verzeichnis installiert.

      install -m770 /usr/share/doc/ifupdown/examples/get-mac-address.sh # \
             /usr/local/sbin/

Daraufhin werden /etc/network/interfaces folgende Zeilen hinzugefügt:

      mapping eth0 
             script /usr/local/sbin/get-mac-address.sh 
             map 02:23:45:3C:45:3C net1 
             map 00:A3:03:63:26:93 net2

Siehe Multi-stage mapping, Abschnitt 10.9 für komplexere Beispiele.

Meist wird bei diesen Methoden zur Identifikation der Netzwerkkarte die MAC-Adresse verwendet.


10.8 Umschalten der Netzwerkkonfiguration

Es wurde gezeigt, die Schnittstellen konfiguriert und re-konfiguriert werden. Dies muss dann und wann geschehen.

Normalerweise wird das Netzwerk während des Bootens konfiguriert, im Init-Skript /etc/rcS.d/S40networking, und dies wird selten geändert. Services, die vom Netzwerk abhängig sind, müssen nach dem genannten Init-Skript gestartet werden. Bei Neustart oder Abschalten des Systems müssen die Init-Skripte in umgekehrter Reihenfolge ausgeführt werden.

Es liegt allerdings im Trend Hardware dynamisch zu konfigurieren. Zuerst wurden in GNU/Linux hot-plug-fähige PCMCIA-Karten unterstützt; später wurde der hotplug-Mechanismus hinzugefügt, so dass viel mehr verschiedene Peripherie während des Betriebs ein- und ausgeklinkt werden kann. Dies gilt auch für Netzwerk-Hardware. Note that services that depend on hardware that is hot swapped must only be started after the hardware is inserted and must be stopped when the hardware is removed. Das bedeutet, dass solche Services der Kontrolle des System-V-Init-Systems entzogen werden müssen, damit sie von ifupdown gesteuert werden können.

Angenommen, der vom Init-Skript /etc/init.d/foo gesteuerte Service foo sei von einer dynamisch rekonfigurierten Netzwerkschnittstelle eth0 ab.


10.8.1 Umschalten der Netzwerkkonfiguration zur Boot-Zeit

Während des Bootens startet /etc/rcS.d/S40networking den Befehl ifup -a. Dieses schaltet alle physikalischen Schnittstellen auf, die in auto-Zeilen in /etc/network/interfaces aufgelistet sind.

Es wird empfohlen die Netzwerkkonfiguration mit dynamischen Methoden vorzunehmen. Sobald die Mechanismen zur Unterstützung sich dynamisch ändernder Hardware funktioniert, kann auch statische Hardware wie dynamische behandelt werden. Das Booten ist dann nichts anderes als ein weiteres Anschließen mit Hot-plug. (Siehe Schalten der Netzwerkkonfiguraion - hotplug, Abschnitt 10.8.2.)

Die loopback-Schnittstelle lo soll jedoch auf jeden Fall beim Booten aktiviert werden. Daher beinhaltet /etc/network/interfaces die folgenden Zeilen:

      auto lo 
      iface lo inet loopback

Es können die Namen weiterer physikalischer Schnittstellen in auto-Zeilen angelegt werden, die ebenfalls beim Booten aufgeschaltet werden. Es sollten niemals PCMCIA-Schnittstellen mit auto eingetragen werden. Der PCMCIA cardmgr wird später in der Bootsequenz gestartet, also später als /etc/rcS.d/S40networkingXXX.


10.8.2 Schalten der Netzwerkkonfiguraion - hotplug

Hot-Plug-Unterstützung bietet das Paket hotplug.

Netzwerk-Hardware kann zu folgenden Gelegenheiten eingebunden werden: zur Bootzeit; nachdem eine Netzwerkkarte (z.B. PCMCIA) eingesteckt wurde oder wenn ein Hilfswerkzeug wie discover gestartet wird und die nötigen Treiber geladen werden.

Wenn der Kernel neue Hardware erkennt, wird der Treiber für die Hardware geladen und dann startet hotplug um diese Hardware zu konfigurieren. Wenn die Hardware wieder entfernt wird, startet hotplug erneut, allerdings mit anderen Einstellungen der Umgebungsvariablen. In Debian werden die Skripte in /etc/hotplug/ und /etc/hotplug.d/ von hotplug aufgerufen. Siehe hotplug(8) für Details.

Neu eingesteckte Netzwerk-Hardware wird vom Skript /etc/hotplug/net.agent konfiguriert. [17] Angenommen eine PCMCIA-Netzwerkkarte wurde eingesteckt und die Schnittstelle eth0 bereits bereitgestellt. /etc/hotplug/net.agent tut Folgendes:[18] :

     ifup eth0=hotplug

Wenn keine logische Schnittstellen-Definition und kein Mapping mit dem Namen hotplug zu /etc/network/interfaces hinzugefügt wurde, dann tut dieser Befehl gar nichts. Damit dieses Kommando eth0 konfigurieren kann, muss folgende Zeile in /etc/network/interfaces hinzugefügt werden:

      mapping hotplug 
             script echo

Wie in High-Level-Konfiguration mit logischen Schnittstellen von ifupdown, Abschnitt 10.6.2 erklärt, wird dies das obige Kommando zu Folgendem ummünzen:

      ifup eth0=eth0

Eine solche mapping-Zeile sollte keinesfalls eingefügt werden, wenn ifplugd oder waproamd von Hotplug gestartet werden.

Wenn nur eth0 und sonst keine anderen Schnittstellen von Hotplug aufgeschaltet werden sollen, dann kann grep statt echo verwendet werden:

      mapping hotplug 
             script grep 
             map eth0

Siehe Automatische Netzwerkkonfiguration mit ifupdown, Abschnitt 10.6.3 und /usr/share/doc/hotplug/README.Debian für weitere Tipps.


10.8.3 Schalten der Netzwerkkonfiguration - ifplugd

Der ifplugd-Dämon schaltet eine Schnittstelle auf oder ab, wenn die zugehörige Hardware an- oder abgestöpselt wird. Das Programm kann ein aktives Netzwerkkabel an der Ethernet-Schnittstelle oder einen Access-Punkt erkennen, der zu einem Wi-Fi-Schnittstelle gehört (jedoch kann waproamd hier wahrscheinlich bessere Dienst leisten). Wenn ifplugs erkennt, dass sich der Zustand der Schnittstelle geändert hat, dann wird ein Skript gestartet, dass ifup oder ifdown aufruft.


10.8.4 Schalten der Netzwerkkonfiguration - waproamd

Der waproamd-Dämon ähnelt ifplugs, nur dass er für Wi-Fi-Karten gedacht ist. Er sucht aktiv nach Access-Punkten, mit denen sich die Wi-FI-Hardware verbinden kann. Wenn eine möglicher Verbindungsaufbau erkannt wird, startet waproamd dann ifup.

Falls waproamd verwendet wird, sollte die Wi-Fi-Karte nur mit waproamd konfiguriert werden und nicht mit den wireless-*-Optionen in /etc/network/interfaces.


10.8.5 Netzwerk-Konfiguration und PCMCIA

Es gibt verschiedene Möglichkeiten zur Konfiguration von PCMCIA-Netzwerkkarten (in 2.4 und 2.6 Kernels).

16-Bit-Karten sollten seit Kernel 2.4 die Hotplug-Unterstützung für PCMCIA-Karten nutzen. [19]

PCMCIA-Netzwerk-Karten können im Betrieb an- und abgestöpselt werden. Daher sollten alle Services, die auf ein Netzwerk via PCMCIA-Karte zugreifen, so eingerichtet sein, dass sie gestartet werden, wenn die Karte eingesteckt wird und beendet werden, wenn die Karte entfernt wird. Dies wird üblicherweise erreicht, indem der Service gemeinsam mit ifup gestartet und mit ifdown beendet wird. Manche Benutzer beschränken sich darauf, die Geräte nur bei ausgeschaltetem Rechner an- und abzustecken. Sie stecken die Karte vor dem Booten des Systems und starten die Netzwerk-Services in der Boot-Sequenz. Um zu gewährleisten, dass die Karte vollständig konfiguriert ist, bvor der Service startet, sollte Folgendes getan werden:

Dies funktioniert nur mit 16-Bit PCMCIA-Karten.

Das Paket pcmcia-cs wird benötigt, wenn 16 bit PCMCIA-Karten verwendet werden. Der in diesem Paket enthaltene cardmgr-Dämon ist für die Verwaltung der Sockets verantwortlich und für das Laden der Treiber. Der Dämon soll aber keine Netzwerk-Konfiguration via /etc/pcmcia/network durchführen.

Damit cardmgr richtig funktioniert, muss eventuell /etc/pcmcia/config.opts editiert werden, damit die 16-Bit PCMCIA-Karten die richtigen Ressourcen zugewiesen bekommen. Siehe PCMCIA, Abschnitt 7.2.1 und Linux PCMCIA HOWTO für weitere Informationen.


10.9 Multi-stage mapping

Angenommen die Netzwerkkarten können per Hotplug angeschlossen werden und die automatische Konfiguration ist aktiviert, so wie in Schalten der Netzwerkkonfiguraion - hotplug, Abschnitt 10.8.2 beschrieben. Weiterhin angenommen, die logischen Schnittstellen müssten auf "physikalische" Schnittstellen abgebildet werden, je nachdem welche Karte angeschlossen ist (wie beschrieben in Umgang mit inkonsistenten Schnittstellennamen seitens des Kernels, Abschnitt 10.7) und mit welchem Netzwerk Verbindung aufgenommen werden soll (wie beschrieben in Wahl logischer Schnittstellen mit guessnet, Abschnitt 10.6.3.1). Dies kann mit multi-stage mapping erreicht werden.

Die erste Mapping-Stufe nimmt den hotplug-Gruppennamen und gibt den vom Kernel zugewiesenen Schnittstellennamen aus, wenn die Schnittstelle "warm" angeschlossen wird. Die zweite mapping-Stufe erwartet einen vom Kernel zugewiesenen Schnittstellennamen und gibt einen Anschlussnamen aus. In der dritten mapping-Stufe werden Adapternamen auf logische Schnittstellen abgebildet unter Berücksichtigung der Netzwerkumgebung.

      # Allow hotplug to bring up interfaces 
      mapping hotplug 
             script echo 
      # Determine whether interface is wired or Wi-Fi 
      mapping eth? 
             script /usr/local/sbin/get-mac-address.sh 
             map 02:23:45:3C:45:3C wired 
             map 00:A3:03:63:26:93 wifi 
     # Detect which wired network is available 
      mapping wired 
             script guessnet-ifupdown 
             map work-wired 
             map home 
     # Detect which Wi-Fi network is available 
     mapping wifi 
             script ifscout 
             map starbucks 
             map work-wireless 
     
     iface work-wired inet static 
             ...

10.10 Konfiguration der Netzwerk-Dienste

Zur Konfiguration der Netzwerk-Dienste dienen unter anderem:


10.11 Netzwerk-Fehlersuche

Wenn im Netzwerk Probleme auftreten, sollten die Ausgaben der folgenden Programme geprüft werden:

      # ifconfig 
      # cat /proc/pci 
      # cat /proc/interrupts 
      # dmesg | more

Weitere Informationen folgen auf das Kapitel Grundlagen – Prüfung des Netzwerks, Abschnitt 8.6.29.

Bei Problemen mit einzelnen Websites, siehe Eigenartige Probleme beim Zugriff auf einige Webseiten, Abschnitt 3.8.5.


10.12 Aufbau eines Gateway-Routers

Ein Debian-Rechner kann als Gateway verwendet werden, der Network Addresss Translation (NAT, auch als Masquerading bekannt), Email-Transfer, DHCP, DNS-Caching, HTTP-Proxy-Caching, CVS-Service, NFS-Service und Samba-Services anbietet. Siehe Hosts und IP im LAN, Abschnitt 3.1.9 für Beispiele derlei Einrichtung.


10.12.1 Konfiguration von Netfilter

Das Netfilter/Iptables-Projekt erstellt ein Firewall-Subsystem für den Linux-Kernel 2.4 und später. Siehe Netfilter, dort werden viele Netzwerk-Konfiguraitonen erklärt.


10.12.1.1 Grundlagen von Netfilter

Netfilter-Prozess-Pakete verwenden fünf eingebaute Ketten. PREROUTING, INPUT, FORWARD, OUTPUT, and POSTROUTING.

                      routing 
                     decision 
     IN ------> PRE ---> ------> FORWARD -----> ----> POST -----> OUT 
     interface  ROUTING  \       filter       /       ROUTING     interface 
                DNAT     |       tracking     ^       SNAT
                REDIRECT |                    |       MASQUERADE 
                         v                    | 
                       INPUT                OUTPUT 
                         | filter             ^ filter,DNAT 
                         v                    | 
                         \-->Lokale Prozesse--/ 
                          User-Space Programme

10.12.1.2 Netfilter-Tabelle

Pakete der einzelnen eingebauten Ketten werden anhand folgender Tabellen weiterverarbeitet.


10.12.1.3 Netfilter Ziele

Firewall-Regeln haben verschiedene Ziele:


10.12.1.4 Netfilter-Befehle

Die elementaren Befehle von iptables sind:

      
     iptables        -N chain             # create a chain 
     
     iptables        -A chain \           # add rule to chain 
                     -t table \           # use table (filter, nat, mangle) 
                     -p protocol \        # tcp, udp, icmp, or all, 
                     -s source-address[/mask] \ 
                     --sport port[:port] \ # source port if -p is tcp or udp 
                     -d destination-address[/mask] \ 
                     --dport port[:port] \ # dest. port if -p is tcp or udp 
                     -j target \          # what to do if match 
                     -i in-interface-name \ # for INPUT, FORWARD, PREROUTING 
                     -o out-interface-name # for FORWARD, OUTPUT, POSTROUTING

10.12.1.5 Network Address Translation

Rechner un einem lokalen Netzwerk können Internet-Angebote über einen Gateway-Rechner aufrufen, der die IP-Adressen zwischen dem lokalen Netz und den im Internet verwendeten IP-Adressen umsetzt.

      # apt-get install ipmasq

Um den Schutz durch ipmasq zu verbessern, können die Beispielregeln verwendet werden. Siehe /usr/share/doc/ipmasq/examples/stronger/README. In Woody mit kernel-image-2.4 muss das richtige Kernelmodul geladen werden. Die Sarge-Version von ipmasq hat dieses Problem nicht. Siehe Netzwerk-Funktionalität, Abschnitt 7.2.3 für Konfigurationsanleitungen.

Wird Debian mit kernel-image-2.2 verwendet, muss Z92timeouts.rul in /etc/masq/rules wie folgt verändert werden, um sicher zu stellen, dass die Verbindung zu anderen Rechnern länger aufrecht erhalten wird (dies ist hilfreich beim Laden großer Emails, etc.):

     # tcp, tcp-fin, udp 
     # 2h, 10 Sek, 160 Sek. - Voreinstellung 
     # 1 Tag, 10 Min, 10 Min - laengeres Beispiel 
     $IPCHAINS -M -S 86400 600 600

Wenn das Netzwerk mit einer PCMCIA-Netzwerkkarte verwendet wird, muss ipmasq aus /etc/pcmcia/network.opts (d.h. /usr/share/doc/ipmasq/ipmasq.txt.gz) oder aus /etc/network/interfaces (siehe Netzwerk-Konfiguration und PCMCIA, Abschnitt 10.8.5 und Umschalten der Netzwerkkonfiguration, Abschnitt 10.8) gestartet werden.


10.12.1.6 Umlenkung von SMTP-Verbindungen (2.4)

Ein Email-Programm kann an verschiedenen Netzwerken betrieben werden, ohne es neu zu konfigurieren.

Folgende Regeln fügen mittels iptables Regeln hinzu, die dafür sorgen, dass die SMTP-Verbindung zum Gateway-Rechner aufgebaut wird.

     # iptables -t nat -A PREROUTING -s 192.168.1.0/24 -j REDIRECT \ 
     -p tcp --dport smtp --to-port 25 # smtp=25, INPUT is open

Einen Satz weitaus ausführlicherer Umlenkungsregeln ermöglicht das ipmasq-Paket, wenn die Datei M30redirect.def in das Verzeichnis /etc/ipmasq/rules kopiert wird.


10.12.2 Verschiedene Netzwerk-Verbindungen verwalten

[FIXME] Policy routing (by Phil Brutsche pbrutsch@tux.creighton.edu): Siehe iproute manual für Details. Traffic-Kontrolle (tc) ist ebenfalls interessant.

Umgebung:

      eth0: 192.168.1.2/24; gateway 192.168.1.1 
      eth1: 10.0.0.2/24; gateway 10.0.0.1 
      Kein Masquerading auf dieser Maschine.

Spezielle Magie:

  • ip rule add from 192.168.1.2 lookup 1

  • ip rule add from 10.0.0.2 lookup 2

  • ip route add to default via 10.0.0.1 metric 0

  • ip route add to default via 192.168.1.1 metric 1

  • ip route add table 1 to 192.168.1.0/24 via eth0

  • ip route add table 1 to 10.0.0.2/24 via eth1

  • ip route add table 1 to default via 192.168.1.1

  • ip route add table 2 to 192.168.1.0/24 via eth0

  • ip route add table 2 to 10.0.0.2/24 via eth1

  • ip route add table 2 to default via 10.0.0.2

  • [FIXME] nicht getestet. Wie man eine Einwahlverbindung als Ersatz für eine schnelle Verbindung mit Selbstwahl einrichtet. Hier wird noch ein Patch benötigt. :)


    [ zurück ] [ Inhalt ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ weiter ]


    Debian-Referenz

    CVS, Don 18. Jan 2007, 11:52:59 UTC

    Osamu Aoki osamu#at#debian.org
    Übersetzer: Jens Seidel tux-master#at#web.de
    Autoren, Abschnitt A.1