Das Protokollpaar TCP/IP hat sich in den vergangenen Jahren, auch unterstützt durch das schnelle Wachstum des Internet, durchgesetzt. Physikalisch besteht das Internet aus allen möglichen Verbindungen, sei es eine Modemstrecke oder ein Ethernet, bis hin zu schnellen ATM-basierten Strecken. Gemeinsam ist allen, dass dort TCP/IP zur Kommunikation eingesetzt wird. Auf allen diesen Verbindungen lassen sich Dienste wie WWW, Mail, News oder IRC benutzen.
Im Folgenden werden die Grundlagen beschrieben; Sie benötigen diese nicht unbedingt für die in diesem Buch vorgestellten einfachen Beispiele. Wenn Sie aber Ihr Netz erweitern wollen oder tiefer in die Materie einsteigen möchten, sollten Sie jetzt weiterlesen.
Jeder an das Internet (oder an jedes andere IP-basierte Netzwerk) angeschlossene Computer wird über eine einmalige IP-Adresse identifiziert. IP-Adressen haben eine Länge von vier Byte, die normalerweise als vier dezimale Zahlen, getrennt durch Punkte, dargestellt werden. Im Folgenden sehen Sie einige gültige Beispiele:
127.0.0.1 192.168.0.5 240.250.240.250
Anhand einer IP-Adresse lassen sich zwei Dinge feststellen: erstens das Netzwerk, in dem sich ein bestimmter Rechner befindet, und zweitens der Rechner selbst - dies entspricht dem so genannten Netzwerk- und dem Host-Teil der Adresse.
Für den Host-Teil der Adresse gibt es zwei besondere Werte: Wenn alle Bits auf 0 gesetzt sind, nennt man dies die Netzwerkadresse (network address, 0), wenn alle auf 1 gesetzt sind, beschreibt dies alle Rechner in diesem Netz - die so genannte Broadcast-Adresse (255).
Oder: „Wie kommt die Netzwerkkarte zu Ihrer Adresse?“ In den meisten Fällen werden Sie die Konfiguration Ihrer Netzwerkkarte bereits bei der Installation von Debian GNU/Linux vorgenommen haben. Wenn Sie eine solche Karte später einbauen oder das System mit einer zweiten Karte erweitern, müssen Sie diese von Hand einbinden.
Das Kommando ifconfig
wird benutzt, um einem Netzwerkinterface
(dies kann eine Netzwerkkarte, ein Modem, eine ISDN-Verbindung oder Ähnliches sein...) die benötigten
Einstellungen zuzuweisen.
Loopback - Ein „virtuelles“ Netzwerkinterface.
Dieses bezieht sich immer auf den Rechner selbst und hat die IP-Adresse:
127.0.0.1. Interface: lo
.
Ethernet - Um zwei oder mehrere Rechner miteinander zu
vernetzen, verwendet man eine Netzwerkkarte. Standard ist dabei der
Einsatz von Ethernet-Karten. Interface:
eth0
,
eth1
,
eth2
usw.
Tokenring - Ebenfalls zur Vernetzung über relativ kurze
Strecken. Interface:
tr0
,
tr1
, tr2
usw.
PPP -
„Point-to-Point Protocol“ (Punkt-zu-Punkt-Protokoll). Zur
Verwendung über serielle Verbindungen, wie zum Beispiel Modemstrecken, ISDN
usw. Interface:
ppp0
, ppp1
, ppp2
usw.
Dummy - Für Systeme, die ansonsten keine Netzwerkverbindungen haben.
Interface:
dummy
, dummy0
, dummy1
usw.
Es gibt noch einige weitere Beispiele. Wir werden uns hier mit dem am meisten verbreiteten, dem Ethernet, beschäftigen.
Wenn Ihr Kernel die installierte Netzwerkkarte nicht erkennt, müssen Sie das
passende Modul laden. Sie können dies temporär mit dem Kommando
insmod
oder
modprobe
durchführen. Wenn Sie das richtige Modul
gefunden haben, tragen Sie die nötigen Werte in die Datei
/etc/modutils
ein. Danach ist das Kommando update-modules
aufzurufen. Für eine NE2000-kompatible Karte wäre dies beispielsweise die Zeile alias eth0 ne
(in der Datei /etc/conf.modules
).
Mit dem Kommando
ifconfig
weisen Sie nun der Karte eine IP-Adresse zu.
Im einfachsten Fall, also ohne weitere Optionen, gibt ifconfig
die bisher konfigurierten Interfaces
aus:
# /sbin/ifconfig lo Protokoll:Lokale Schleife inet Adresse:127.0.0.1 Maske:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:114099 errors:0 dropped:0 overruns:0 frame:0 TX packets:114099 errors:0 dropped:0 overruns:0 carrier:0 Kollisionen:0 Sendewarteschlangenlänge:0 RX bytes:26702410 (25.4 MiB) TX bytes:26702410 (25.4 MiB)
Bisher sollte auf Ihrem Rechner lediglich das Loopback-Interface (
lo
) konfiguriert sein.
Rufen Sie nun ifconfig
mit dem Namen des Interfaces (
eth0
für die erste, eth1
für die zweite Karte usw.) sowie der gewünschten
IP-Nummer auf, und sehen Sie sich die Veränderung an:
# /sbin/ifconfig eth0 192.109.42.23 # /sbin/ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Bcast:127.255.255.255 Mask:255.0.0.0 UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1 RX packets:18584 errors:0 dropped:0 overruns:0 frame:0 TX packets:18584 errors:0 dropped:0 overruns:0 carrier:0 Collisions:0 eth0 Link encap:Ethernet HWaddr 00:00:F7:C3:45:1B inet addr:192.109.42.23 Bcast:192.109.42.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:55 errors:0 dropped:0 overruns:0 frame:0 TX packets:5 errors:0 dropped:0 overruns:0 carrier:0 Collisions:7 Interrupt:10 Base address:0x300
ifconfig
gibt Ihnen nun auch die Informationen zur
Ethernet-Karte aus. Die Werte für die Netzmaske, Broadcast-Adresse usw. wurden automatisch gesetzt. Wenn Sie bei diesen
Werten andere Einstellungen benötigen, so müssen Sie diese ebenfalls mit
ifconfig
setzen:
# /sbin/ifconfig eth0 192.109.42.23 netmask 255.255.255.240
Dies verändert die zuvor angegebenen Werte. Wenn Sie ein Interface komplett
deaktivieren wollen, benutzen Sie die Option down
:
# /sbin/ifconfig eth0 down
Wenn Sie Ihre Netzwerkkarte bereits bei der Installation von Debian GNU/Linux
eingerichtet haben, so werden Sie feststellen, dass einfach schon alles
funktioniert... Hierzu wurden die notwendigen Werte in die Datei
/etc/network/interfaces
geschrieben.
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8) # The loopback interface iface lo inet loopback # The first network card - this entry was created during the Debian # installation (network, broadcast and gateway are optional) iface eth0 inet static address 192.109.42.18 netmask 255.255.255.240 network 192.109.42.16 broadcast 192.109.42.31 gateway 192.109.42.17
In dieser Datei sind einige Variablen definiert, die beim Aufruf des Programms
ifup
ausgelesen werden.
Wenn Sie Ihre Netzwerkkarte erst später eingerichtet haben, müssen Sie diese Datei erstellen und sie an Ihre Bedürfnisse anpassen.
Aus wenigen Angaben eines Netzwerks die fehlenden Informationen zu generieren
ist oft auch für den erfahrenen Admnistrator nicht ganz einfach und zudem
fehleranfällig, wenn diese Berechnungen von Hand gemacht werden. Abhilfe schafft
hier das Programm sipcalc
(http://www.routemeister.net/projects/sipcalc/).
wasabi:~# sipcalc 192.168.1.1/24 -[ipv4 : 192.168.1.1/24] - 0 [CIDR] Host address - 192.168.1.1 Host address (decimal) - 3232235777 Host address (hex) - C0A80101 Network address - 192.168.1.0 Network mask - 255.255.255.0 Network mask (bits) - 24 Network mask (hex) - FFFFFF00 Broadcast address - 192.168.1.255 Cisco wildcard - 0.0.0.255 Addresses in network - 256 Network range - 192.168.1.0 - 192.168.1.255 Usable range - 192.168.1.1 - 192.168.1.254
Mit dem Kommando dhclient
lässt sich eine Anfrage an einen DHCP-
(Dynamic Host Configuration Protocol) Server stellen. Von diesem können dann
alle notwendigen Information für die Netzwerkkonfiguration bezogen werden.
Als wichtigste Option kann auf der Kommandozeile das gewünschte Netzwerkinterface angegeben werden, welches konfiguriert werden soll.
Mit einer Anfrage an einen DHCP-Server wird auch meistens neben der IP-Nummer für den anfragenden Client, eine IP-Nummer für einen geeigneten Nameserver mitgeliefert. Dies ist nicht in jedem Falls gewünscht oder sinnvoll. Durch den Eintrag
prepend domain-name-servers 192.168.15.4;
in der Datei /etc/dhclient.conf
wird der angegebene
Nameserver als erster in die Datei /etc/resolv.conf
eingetragen und verwendet.
Wenn Sie der Netzwerkkarte die eigenen Einstellungen mitgeteilt haben, müssen Sie dem Linux-Kernel noch beibringen, die IP-Pakete auch an die richtige Stelle zu schicken. Dies kann bei mehreren Netzwerkkarten durchaus richtige Arbeit werden...
Der Kernel hält die Informationen, welcher Rechner oder welches Netzwerk über
welchen Weg zu erreichen ist, in der so genannten Routing-Tabelle („routing table“). Das Kommando, um sich
diese Tabelle anzusehen, lautet:
route
. Wenn Sie bisher nur das Loopback-Device konfiguriert haben, wird das Ergebnis Folgendes
sein:
# /sbin/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
Dies bedeutet, dass alle IP-Pakete (auch „traffic“ genannt) für das Netzwerk 127
über das Loopback-Device (lo
) geschickt werden sollen.
Wenn Sie nun eine Netzwerkkarte konfiguriert haben, müssen Sie diese auch in die Routing-Tabelle des Kernels eintragen:
# /sbin/route add -net 192.109.42.0 # /sbin/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.109.42.0 * 255.255.255.0 U 0 0 137 eth0
Dies führt dazu, dass alle IP-Pakete für das Class-C-Netz 192.109.42.xxx
über das Interface eth0
zu erreichen sind. Wenn Sie nur einen kleinen
Teil eines Netzes zur Verfügung haben, müssen Sie dies über die Netzmaske (netmask)
steuern:
# /sbin/route add -net 192.109.42.16 netmask 255.255.255.240
In diesem Beispiel stehen 16 IP-Nummern zur Verfügung (.16 bis .31).
Dies reicht schon aus, um ein kleines internes Netzwerk zu betreiben. Wenn Sie jedoch zwei Netzwerke miteinander verbinden wollen, müssen Sie dies über ein so genanntes „Gateway“ (oder auch „Router“ genannt) tun.
Wenn über das neue Interface nur ein bestimmtes Netzwerk zu erreichen ist und Sie
die Adresse des Gateways (Routers) für dieses Netz kennen, müssen Sie die Routing-Tabelle um genau diesen Eintrag ergänzen. Sie erreichen dies mit
der Option -net
:
# route add -net 193.174.1.0 gw 192.109.42.17
Dies bedeutet, dass das Netz 193.174.1.0 (Class C) über das Gateway 192.109.42.17 zu erreichen ist. Es setzt aber auch voraus, dass schon bekannt ist, wie das Netz 192.109.42.x zu ereichen ist.
Eine andere häufig anzutreffende Möglichkeit ist es, alle IP-Pakete, für die es keinen passenden Eintrag in der Routing-Tabelle gibt, an ein Gateway zu schicken, die so genannte „Default-Route“.
# route add default gw 192.109.42.17
Dies würde zu folgender Routing-Tabelle führen:
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.109.42.16 0.0.0.0 255.255.255.240 U 0 0 0 eth0 0.0.0.0 192.109.42.17 0.0.0.0 UG 1 0 0 eth0
Sehen wir uns die Einträge im Einzelnen einmal an: Die erste Zeile bezieht sich auf
das Loopback-Device (127.0.0.0
,
lo
). Wenn Sie einen neueren Kernel verwenden, wird
dies unter Umständen nicht angezeigt.
Werfen wir jedoch zunächst noch einmal einen genaueren Blick auf die Datei
/etc/network/interfaces
:
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8) # The loopback interface iface lo inet loopback # The first network card - this entry was created during the Debian # installation (network, broadcast and gateway are optional) iface eth0 inet static address 192.109.42.18 netmask 255.255.255.240 network 192.109.42.16 broadcast 192.109.42.16 gateway 192.109.42.17
Diese Datei definiert einige Variablen; wenn Sie eine Änderung an dieser Datei
vornehmen, können Sie diese einfach mit dem Kommando
ifup eth0
aktivieren. In den ersten Zeilen wird das
so genannte Loopback-Device konfiguriert.
Die folgenden Zeilen beinhalten die benötigten Variablen für Ihr Netz.
In dieser Datei werden IP-Nummern verwendet. Wenn Sie das Kommando route
aufrufen, um sich die Routing-Tabelle anzeigen
zu lassen, werden Sie bemerken, dass dort die Namen der Rechner und Netze verwendet
werden. Sie können die Ausgabe der IP-Nummern mit der Option -n
hinter dem Kommando
route
erzwingen.
In der Datei
/etc/hosts
finden Sie den Namen des lokalen Rechners
und in der Datei
/etc/networks
den Namen des Netzes. Systeme, deren
Name nicht in der Datei /etc/hosts
beschrieben sind, werden im Allgemeinen
über den Nameserver aufgelöst.
Jeder mit dem Internet verbundene Rechner oder jedes Netzwerk, das IP als Netzwerk-Protokoll benutzt, hat eine (oder mehrere) IP-Adressen, mit der das Routing von und zu diesem System sichergestellt wird. Da die Benutzer sich diese Zahlenkolonnen nur schwer merken können, kann jedem Rechner (eigentlich jeder IP-Nummer) ein Name zugewiesen werden. Sicher haben Sie dies schon bei der Installation von Debian GNU/Linux bemerkt: Sie werden nach einem Rechnernamen (Hostnamen) gefragt.
Dieser Name wird an verschiedenen Stellen gespeichert. Sie können mit dem Kommando
hostname
den Namen des Rechners herausfinden; es wird
der Wert aus der Datei /etc/hostname
ausgegeben. Wenn Sie dies an einem
(dauerhaft) ans Internet angeschlossenen Rechner probieren, besteht dieser Name aus
verschiedenen Teilen, die durch Punkte getrennt sind, zum Beispiel linux.openoffice.de
.
Nur der erste Teil ist der Name des Rechners (Hostname), der Rest wird als
„Domain Name“
bezeichnet (hier: openoffice.de
). Da es natürlich viele Menschen gibt,
die möchten, dass ihr Rechner den Namen linux
bekommt, wurde jeder dieser Namen dadurch
einmalig gemacht, dass man ihn einer bestimmten Domäne zuordnet.
Innerhalb einer Domäne (also einer Gruppe von Computern, einem Netzwerk) ist meist eine Person für die Vergabe von Computernamen zuständig und pflegt die Daten(-bank) mit den notwendigen Informationen. Dieses System ist als DNS (Domain Name Service) bekannt. Es ist mit einem Telefonverzeichnis vergleichbar. Sie können nach einem Computernamen suchen und erhalten dessen IP-Adresse.
Vor der Einführung von DNS musste man sich die IP-Adressen der Rechner merken, um
sich im Internet bewegen zu können. Namen wurden nur innerhalb kleinerer Netzwerke
benutzt und konnten in verschiedenen Netzen doppelt vergeben werden. Diese (lokalen)
Namen wurden in der Datei
/etc/hosts
gespeichert. Natürlich können Sie auch
heute noch diese Datei benutzen, sie wird auch bei der Installation von Debian
GNU/Linux angelegt. Die Datei enthält den Namen des eigenen Rechners und die
dazugehörige IP-Adresse.
DNS ist ein sehr umfangreiches Thema; wir werden uns an dieser Stelle nur aus der Sicht des Nutzers (Clients) damit befassen.
Wenn ein Debian GNU/Linux-System die IP-Adresse eines anderen Rechners benötigt
(zum Verschicken von Mail oder um eine Webseite aufzurufen), wird ein Teil der
C-Library benutzt, um die Informationen zu bekommen - der
„Resolver“. Zuerst wird ein Blick in die Datei
/etc/nsswitch.conf
geworfen (können Sie an dieser
Stelle auch tun...). In dieser ist aufgeführt, an welchen Stellen versucht werden
soll, die IP-Nummer zu finden. Hier sind drei verschiedene Einträge möglich. Wenn
mehrere vorhanden sind, werden sie der Reihenfolge nach durchsucht.
Ein üblicher Eintrag in der Datei /etc/nsswitch.conf
wäre:
hosts: files dns
Dieser Eintrag bringt den Resolver dazu, zuerst die Datei
/etc/hosts
und dann den (in
/etc/resolv.conf
definierten) Nameserver (DNS) nach dem Rechnernamen zu durchsuchen.
Die Datei /etc/resolv.conf
enthält, neben dem Eintrag für einen
oder mehrere Nameserver, zunächst den Namen der lokalen
Domain.
domain openoffice.de nameserver 194.25.2.129 nameserver 192.168.22.33
Die erste Zeile bewirkt, dass die lokale Domain an den Rechnernamen (Hostname) angehängt wird, wenn nur ein Rechnername ohne Angabe der Domain angegeben wird. Die folgenden Zeilen beschreiben die (IP-technisch gesehen möglichst gut erreichbaren) Nameserver. Sie sollten hier in jedem Fall IP-Nummern und nicht die Namen der Rechner verwenden.
Alle Programme, die Sie benutzen (zum Beispiel Webbrowser), erfragen automatisch
die IP-Nummer, wenn Sie einen Rechnernamen eingeben. Natürlich können Sie aber auch
selbst solche Abfragen starten. Das zu Debian GNU/Linux gehörende Paket
dnsutils
enthält das Programm
nslookup
. Sie können nslookup
interaktiv benutzen, um mehrere Abfragen
nacheinander zu starten. Die häufigste Anwendung ist aber, nslookup
für eine einzelne Abfrage zu benutzen.
Hierzu geben Sie nach dem Kommando einfach den Namen des gesuchten Rechners an:
# nslookup www.debian.org Server: 194.25.2.129 Address: 194.25.2.129#53 Non-authoritative answer: Name: www.debian.org Address: 198.186.203.20
Nach dem befragten Server wird weiter unten die IP-Adresse für den gewünschten Server angegeben.
Auf die Datei /etc/resolv.conf
wurde ja schon im vorherigen
Abschnitt eingegangen. Hier noch ein etwas erweitertes
Beispiel:
domain openoffice.de search openoffice.de debiananwenderhandbuch.de debian.org nameserver 194.25.2.129 nameserver 192.168.22.33
Hinzugekommen ist die zweite Zeile. Diese ist nicht zwingend notwendig, erleichtert aber die Arbeit. Mit dieser Zeile werden einfach (wenn Sie nur den Hostnamen angeben) die angegebenen Domains nach dem gewünschten Namen durchsucht, und der Hostname wird automatisch um den Domainnamen ergänzt.
Das Paket resolvconf
verwaltet Informationen über die aktuell
verfügbaren Nameserver.
Die Datei /etc/resolv.conf
war ursprünglich eine statische
Konfigurationsdatei in der nur sehr selten Anpassungen vom Administrator vorgenommen
wurden. Mit der Verbreitung von mobilen Computern wurde es
jedoch üblich, dass ein
Rechner sehr häufig in verschiedenen Netzwerken eingesetzt wurde. Um am jeweils
aktuellen Standort eine Auflösung von Rechnernamen in IP-Adressen zu erlauben, muss
die Datei /etc/resolv.conf
an den aktuellen Standort angepasst
werden. Eine ganze Reihe von Paketen erledigen dies durch direktes ändern der Datei /etc/resolv.conf
. Dies sind beispielsweise pcmcia-cs
, ppp
, pppconfig
, pppoeconf
, webmin
und dhcp-client
und noch viele andere. Alle diese Pakete
kooperieren aber nicht bei Änderungen an der Datei, jedes Paket überschreibt die
Anpassung eines anderen Paketes. resolvconf
soll zu einer Vereinheitlichung bei der
Verwaltung der Datei /etc/resolv.conf
beitragen.
Im Zusammenhang mit der Installation von resolvconf
ist darauf zu achten auch allen anderen
Pakete zu aktualisieren die Änderungen an der Datei /etc/resolv.conf
vornehmen. Diese Pakete werden
laufend aktualisiert und auch die Zusammenarbeit mit resolvconf
hin optimiert. Mit der Version
„Sarge“ von Debian ist ein Grossteil der Pakete bereits angepasst.
Nach der Installation von resolvconf
sind zunächst alle Programme die bisher in
die Datei /etc/resolv.conf
geschrieben haben zu stoppen und
hinsichtlich der Konfiguration anzupassen. Einige wenige müssen komplett entfernt
werden. Eine detaillierte Auflistung findet sich in der Datei /usr/share/doc/resolvconf/README.gz.
Für jedes logische Interface, welches in der Datei /etc/network/interfaces
aufgeführt ist, muss nun ein
Eintrag in der Form
dns-nameservers 11.22.33.44 55.66.77.88 dns-search bla.org blub.org
hinzugefügt werden. Weiterhin sind hier Einträge mit den Schlüsselwörtern dns-domain
und dns-sortlist
erlaubt. Die zu jedem Interface
aufgeführten Optionen werden beim aktivieren eines Interfaces in die Datei /etc/resolv.conf
geschrieben, jeweils ohne die
vorangestellte Zeichenkette dns-
.
© 1999-2007 Frank Ronneburg - Dieser Inhalt ist unter einem Creative Commons Namensnennung - Nicht-kommerziell - Keine Bearbeitung Lizenzvertrag lizenziert (creativecommons.org/licenses/by-nc-nd/2.0/de/legalcode).