[ zurück ] [ Inhalt ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ weiter ]
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.
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:
Loopback: lo
Ethernet: eth0, eth1, ...
Wi-Fi: wlan0, wlan1, wifi0, ... [6]
Token Ring: tr0, tr1, ...
PPP: ppp0, ppp1, ...
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 erste Zeile nach der Kopfzeile bestimmt, dass Daten für das Netzwerk 127.x.x.x durch das Loopback-Device lo geroutet werden.
Die zweite Zeile bestimmt, dass Daten für Hosts im LAN über die eth0-Schnittstelle versendet werden.
Die dritte Zeile bestimmt, dass Daten für das Firmennetzwerk ebenfalls über eth0 an das Gateway 192.168.50.1 versendet werden.
Die vierte Zeile bestimmt, dass Daten für das Internet ebenfalls über eth0 an das Gateway 192.168.50.254 gesendet werden.
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.
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.
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.
ip
Das Programm ip
erledigt folgendermaßen das gleiche wie die obigen
Aufrufe von ifconfig
und route
ip link show
ip route list
ip link set eth0 down
ip addr del dev eth0 local 192.168.0.3
ip addr add dev eth0 local 192.168.0.111/24 broadcast 192.168.0.255
ip link set eth0 up
ip route add dev eth0 to 10.0.0.0/8 src 192.168.0.111 via 192.168.0.1
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)
.
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)
.
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.
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.
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.
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.
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.
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:
Von: foo@meinrechner.dom" Falls der MUA keine Von: Kopfzeile gesetzt hat;
Von: bar@meinrechner.dom" Falls der MUA "Von: bar" setzt;
"From: bar@bogus.dom" Falls der MUA "Von: bar@bogus.dom" setzt.
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.
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.
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.
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.
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.
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.
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:
dhcp3-client
(version 3, Internet Software Consortium)
dhcpcd
(Yoichi Hariguchi and Sergei Viznyuk)
pump
(Red Hat)
pump
ist einfach und weit verbreitet. dhcp3-client
ist komplexer, aber dafür umfassender konfigurierbar. [10]
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)
.
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.
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).
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.
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.
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.
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.
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.
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.
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:
Wenn kein logisches Laufwerk auf der ifup
-Kommandozeile übergeben
wurde, dann wird der Name der physikalischen Schnittstelle auch für die erste
logische Schnittstelle verwendet.
Wenn der Name der logischen Schnittstelle einem glob-Muster in einer mapping-Zeile entspricht, dann wird diese map verwendet, um einen neuen logischen Schnittstellennamen zu erzeugen. Dies gilt für jede einzelne Umbelegung.
Wenn der Name der letzten logischen Schnittstelle als Bezeichnung in
/etc/network/interfaces
auftritt, dann wird die physikalische
Schnittstelle als diese logische Schnittstelle aufgeschaltet. Ansonsten wird
ifup
folgende Nachricht ausgeben und enden: "Ignoring unknown
interface" (unbekannte Schnittstelle wird ignoriert)
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.
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.
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
.
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.
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.
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.
Zuerst muss foo der Kontrolle des Init-Systems entzogen werden.
Wenn das Paket sysv-rc
-Init-System installiert wurde, geschieht
dies folgendermaßen: [16]
rm /etc/rc[2345].d/S??foo
Dann wird foo dem ifupdown
-Paket unterstellt, indem
up- und down-Optionen zu der eth0-Zeile
in /etc/network/interfaces
zugefügt werden, die das
foo-Init-Skript aufruft.
iface eth0 inet dhcp up /etc/init.d/foo start down /etc/init.d/foo stop
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/S40networking
XXX.
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.
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.
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
.
Es gibt verschiedene Möglichkeiten zur Konfiguration von PCMCIA-Netzwerkkarten (in 2.4 und 2.6 Kernels).
Für 32-bit-PCI (CardBus) PCMCIA-Netzwerkkarten:
ifupdown
gesteuert von hotplug
In Woody and Sarge muss hotplug
s Kontrolle über
ifupdown
lokal aktiviert werden, indem eine mapping-Zeile zu
/etc/network/interfaces
hinzugefügt wird, siehe Schalten der Netzwerkkonfiguraion -
hotplug
, Abschnitt 10.8.2.
Für 16-Bit ISA-PCMCIA-Netzwerkkarten:
ifupdown
gesteuert von hotplug
mit
pcmcia-cs
, um die Module zu laden.
Empfohlen
In Woody and Sarge muss pcmcia-cs
's Standard-Verhalten
abgeschaltet zur Kontrolle von ifupdown
abgeschaltet werden, indem
die Zeile exit 0 an den Anfang von
/etc/pcmcia/network
gestellt wird. Zudem muss
hotplug
s KOntrolle über ifupdown
hergestellt werden,
indem eine mapping-Zeile zu /etc/network/interfaces
hinzugefügt
wird, so wie in Schalten der Netzwerkkonfiguraion
- hotplug
, Abschnitt 10.8.2
beschrieben.
ifupdown
gesteuert von pcmcia-cs
mit den
Voreinstellungen in /etc/pcmcia/network
Veraltet, aber immer noch die Voreinstellung in Woody und Sarge
Low-Level-Werkzeuge, die vom pcmcia-cs
mittels spezieller Kodes in
/etc/pcmicia/network
gesteuert werden.
Veraltet
In Woody und Sarge wird der spezielle Code in der Datei
/etc/pcmcia/network.opts
aktiviert.
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:
In /etc/default/pcmcia
soll
CARDMGR_OPTS="-f" gesetzt werden, damit
cardmgr
im Vordergrund läuft.
Dann sollte /etc/rc?.d/S20pcmcia
in
/etc/rc?.d/S12pcmcia
(oder ähnlich) umbenannt 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.
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 ...
Zur Konfiguration der Netzwerk-Dienste dienen unter anderem:
Der Internet-Super-Server und TCP/IP-Dämon-Wrapper, siehe Zugriffskontrolle auf Daemonen, Abschnitt 9.2.5.
/etc/inetd.conf
ssh
: Für die sichere Shell OpenSSH, siehe SSH, Abschnitt 9.5.
/etc/ssh/ssh_config
/etc/ssh/sshd_config
exim
: Ein Mail-Transport-Agent, siehe Mailname, Abschnitt 10.3.2.
/etc/exim/exim.conf
/etc/mailname
/etc/aliases
/etc/email-addresses
fetchmail
: Ein Dämon, um Email von einem POP3-Account abzuholen,.
/etc/fetchmailrc
procmail
: ein Programm zur lokalen Zustellung von Email und
Filter.
~/.procmailrc
Hostname und DNS (Proxy, Cache, ...), siehe Hostname, Abschnitt 10.3.1 und Domain Name Service (DNS), Abschnitt 10.4.
/etc/host.conf
/etc/hostname
/etc/hosts
/etc/hosts.allow
/etc/hosts.deny
/etc/resolv.conf
/etc/bind/named.conf
(edit)
/etc/bind/db.lan
(muss für LAN-Hosts hinzugefügt werden)
/etc/bind/db.192.168.0
(muss für LAN reverse
hinzugefügt werden)
DHCP, siehe Konfiguration der Netzwerkschnittstelle mit DHCP, Abschnitt 10.5.
/etc/dhcp3/dhclient.conf
(DHCP-Client)
/etc/default/dhcp3-server
(DHCP- Server)
/etc/dhcp3/dhcpd.conf
(DHCP-Server)
cvs
: Concurrent Version System, siehe Concurrent Versions System (CVS) – System für
simultane Versionen, Abschnitt 12.1.
/etc/cvs-cron.conf
/etc/cvs-pserver.conf
nfs-kernel-server
: Ein Dateisystem für das Netzwerk, siehe NFS-Konfiguration, Abschnitt 3.4 (für
unix-artige Systeme).
/etc/exports
samba
: Freigabe von Dateien und Druckern über das Netzwerk für
Windows, siehe Samba-Konfiguration,
Abschnitt 3.5 und Samba, Abschnitt
8.6.38.
/etc/samba/smb.conf
Drucker-Dämon-System, siehe Drucker-Konfiguration, Abschnitt 3.6.
/etc/printcap
(für lpr)
apache
und apache2
: Ein Web-Server.
/etc/apache/*
/etc/apache2/*
squid
: Ein Web-Proxy-Cache-Server.
/etc/squid/*
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.
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.
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.
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
Pakete der einzelnen eingebauten Ketten werden anhand folgender Tabellen weiterverarbeitet.
filter (packet filter, default)
INPUT (für Pakete, die ankommen)
FORWARD (für Pakete, die hier weitergeleitet werden)
OUTPUT (für lokal erzeugte Pakete).
nat (network address translation )
PREROUTING (um Pakete zu verändern, sobald sie ankommen)
OUTPUT (um Pakete zu ändern, bevor sie weitergeleitet werden)
POSTROUTING (um Pakete zu verändern, bevor sie abgeschickt werden)
Adressen-Umsetzung (Mangling) (Netzwerk-Adressen-Mangling ist erst ab Kernel 2.4.18 zu gebrauchen)
Alle fünf eingebauten Ketten.
Firewall-Regeln haben verschiedene Ziele:
Vier elementare Ziele:
ACCEPT bedeutet, dass das Paket durchgelassen wird.
DROP bedeutet, dass das Paket verworfen wird.
QUEUE bedeutet, dass das Paket an den Benutzer-Adressraum (Userspace) weitergeleitet wird (falls der Kernel dies unterstützt).
RETURN verläßt diese Kette und setzt die Bearbeitung an der vorherigen (aufrufenden) Kette fort.
erweiterte Ziele:
LOG schaltet das Loggen im Kernel an.
REJECT verwirft das Paket und schickt ein Fehlerpaket zurück.
SNAT verändert die Quelladresse des Pakets und wird nur in der POSTROUTING-Kette verwendet. (nur für die NAT-Tabelle)
--to-source ipaddr[-ipaddr][:port-port]
MASQUERADE ist das gleiche wie SNAT, nur für dynamisch zugewiesene IP (Einwahl)-Verbindungen. (nur für die NAT-Tabelle)
--to-ports port[-port]
DNAT verändert die Ziel-Adresse des Pakets und wird in den PREROUTING und OUTPUT-Ketten verwendet, oder in in Benutzer-definierten Ketten, die von diesen Ketten aufgerufen werden. (nur für die NAT-Tabelle)
--to-destination ipaddr[-ipaddr][:port-port]
REDIRECT verändert die IP-Zieladresse, um das Paket an die Maschine zu senden.
--to-ports port[-port]
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
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.
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
in das Verzeichnis
M30redirect.def
/etc/ipmasq/rules
kopiert wird.
[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 UTCosamu#at#debian.org
tux-master#at#web.de