Grundlage der Netzkommunikation ist der Transport von Daten zwischen Knoten im Internet. Verschiedene Transportprotokolle des TCP/IP-Stack sorgen für eine reibungslose Auslieferung. Dieser Teil der LPI-Reihe stellt dazu Anwendungen vor, die zum Handwerkszeug jedes Administrators gehören.
Für ein konfiguriertes Netz liefern die Kommandos »ifconfig«, »route«, »ping« und »traceroute« den Beweis, dass die IP-Konfiguration korrekt funktioniert [1]. Das ist zwar nett, doch der Netzwerkadministrator und seine Benutzer möchten Daten übertragen, E-Mails versenden oder im Web surfen. Daher stellt die heutige Folge die Transportprotokolle, ihre Konfiguration und deren Test mit passenden Werkzeugen vor.
|
LPI-Aufgabengruppen |
|---|
|
Das Linux Professional Institute gliedert die Prüfungsfragen in Aufgabengruppen. Dieser Artikel erklärt Themen aus den Abschnitten:
(Ein Objective 1.112.2 existiert nicht.) |
Transportebene
Der Überbegriff TCP/IP-Stack bezeichnet die komplette Protokollfamilie, die das Internet ausmacht, auch wenn diese deutlich mehr Protokolle als die beiden genannten umfasst. Der Transport von Daten findet auf OSI-Ebene 4 statt. Die Transportprotokolle bilden eine Infrastruktur für Anwendungsprogramme, die ihrerseits auf OSI-Schicht 7 agieren. So setzt beispielsweise SMTP für E-Mail auf dem Transportprotokoll TCP auf; Werkzeuge zur Netzüberwachung greifen mit SNMP auf UDP als Träger zurück.
Das Transmission Control Protocol (TCP) ist als verbindungsorientiertes Protokoll in der Lage, einen beliebig langen Datenstrom zu versenden. Dazu teilt TCP den Datenstrom in einzelne Pakete auf und versendet diese mittels IP ans Ziel. Dort angekommen setzt schließlich der TCP/IP-Stack die einzelnen Pakete wieder zu einem Datenstrom zusammen und übergibt sie einer Anwendung.
Da hierbei verschiedene Probleme auftreten könnten, ist TCP intern ein höchst komplexes Protokoll: Eine Verbindung kommt erst nach einem 3-Wege-Handshake zustande. Danach quittiert der Empfänger dem Absender eingegangene Pakete, fordert verlorene erneut an und sortiert die Pakete in der richtigen Reihenfolge, falls beim Transport etwas durcheinandergeraten ist. TCP passt dynamisch die Größe der zu versendenden Pakete an und kommt so mit höchst unterschiedlichen Übertragungsmedien vom Gigabit-Ethernet bis hin zu Satellitenleitungen zurecht.
Für manche Anwendungen sind die umfangreichen Segnungen von TCP gar nicht notwendig. Bei der Sprachübertragung per Voice over IP (VoIP) beispielsweise oder beim Datenzugriff über NFS spielt Geschwindigkeit eine größere Rolle als die Datenintegrität des kompletten Stroms. Das User Datagram Protocol (UDP) ist ein verbindungsloses Transportprotokoll, das keine dauerhafte Verbindung zwischen zwei Rechnern einrichtet. Anwendungsprogramme prüfen selbst, ob sie alle Pakete richtig empfangen haben, und fordern bei Bedarf verloren gegangene Pakete erneut an; eine Quittung erfolgt nicht. UDP ist so effizient, weil es praktisch direkt auf IP ohne großen Overhead aufsetzt.
Ports sprechen Dienste an
Da ein Zielsystem oft mehrere Dienste über TCP oder UDP anbietet, sind diese über Ports (Anschlüsse) erreichbar. Ein Port ist eine Zahl zwischen 1 und 65535 (die Null hat eine besondere Bedeutung). In übertragenem Sinn entspricht dies dem Behördengang in einem großen Amt: Die IP-Adresse nennt die Hausnummer der Behörde, der Port ist die Nummer der Dienststube, in der ein Beamter die gewünschte Dienstleistung anbietet (siehe Abbildung 1).

Abbildung 1: Die Daten einer E-Mail, die ein Mailreader wie Thunderbird bei einem Mailserver wie Postfix abliefert, durchlaufen viele Ebenen. IP-Adressen und Port sorgen für Zustellung an den richtigen Empfänger.
Einige Portnummern erhalten durch »/etc/services« eine feste Bedeutung (siehe Tabelle 1). Die Ports zwischen 1 und 1023 sind privilegiert und nur mit Superuser-Rechten benutzbar, jene zwischen 1024 und 65535 dürfen alle User verwenden.
Dass »/etc/services« einen Dienst verzeichnet, ist aber noch kein Beleg dafür, dass dieser auf dem System auch wirklich aktiv ist. Weiterhin verpflichtet der Eintrag nicht dazu, genau diesen Port zu nutzen. Ein SSH-Server läuft zum Beispiel auch auf Port 80, der normalerweise für einen Webserver vorgesehen ist. Die Datei dient also im Wesentlichen Informationszwecken.
|
Tabelle 1: |
|---|
Datentransfer
Die Zahl der Programme, die Netzfunktionen des TCP/IP-Stack nutzen, ist unüberschaubar. Einige Klassiker enthält jede Distribution und installiert sie automatisch. Sie gehören zum Handwerkszeug eines jeden Netzadmin. Das File Transfer Protocol (FTP) etwa überträgt Dateien zu entfernten Rechnern.
Dieses Programm ist eine der ältesten Internet-Anwendungen, Sicherheitsprobleme wie das Übertragen des Passworts im Klartext sollten den verantwortungsbewussten Administrator jedoch dazu bewegen, modernere Alternativen wie »scp« zu benutzen. Dennoch kommt FTP oft beim Hochladen der Dateien einer Homepage zum Internet-Provider zum Einsatz. Eine unterbrochene Übertragung kann der Anwender sogar zu einem späteren Zeitpunkt fortsetzen.
Aktives FTP benötigt die Ports 21 (Kommandokanal) und 20 (Datenkanal) auf dem Server, passives FTP nur Port 21. Aktives FTP ist heute kaum noch im Einsatz, vor allem weil es nicht mit allen Proxys zusammenarbeitet und außerdem etliche Probleme beim Gestalten einer Firewall aufwirft [2].
Das Kommandozeilen-Tool »ftp« zählt zum Unix-Urgestein, ist aber auch als grafisches Werkzeug verfügbar. Seine Befehle zeigt »ftp« nach Eingabe von »?« an und bietet mit »help Kommando« eine genauere Hilfe an. Der Befehl »open« baut eine Verbindung zu einem FTP-Server auf. Einige FTP-Server beherrschen einen anonymen Zugang, bei dem der Benutzername dann »ftp« oder »anonymous« lautet. Als Passwort ist der Anwender aufgefordert, seine E-Mail-Adresse anzugeben.
Der binäre Übertragunsmodus (Kommando »bin«) ist meist voreingestellt, denn die Alternative »ascii« ist nur dann geeignet, wenn FTP Daten in reiner Ascii-Kodierung übertragen soll, die nur aus 7 Bits pro Oktett besteht. Mit »get« und nachfolgendem Dateinamen oder mit »mget« (multiple get) und einer Wildcard-Angabe der gewünschten Dateinamen beginnt ein Download, mit »put« oder »mput« ein Upload. Ein »reget« setzt eine abgebrochene Übertragung fort und »bye« oder »quit« beenden die Verbindung.
|
Never ending Story: |
|---|
|
Die meisten Anwender benutzen heute das IP-Protokoll mit der Versionsnummer 4 (kurz IPv4, [3]). Seit Jahren sind Prognosen zu lesen, dass in absehbarer Zeit die Adressen mit IPv4 knapp würden. Bislang wollte dieser Fall jedoch noch nicht so recht eintreten. Um für die Zukunft gerüstet zu sein, in der auch Kühlschränke, Armbanduhren und Herzschrittmacher IP-Adressen bekommen sollen (man denke an Web-basierte Konfigurationsinterfaces), hat die IETF IPv6 mit Adressen einer Länge von 128 Bit für unvorstellbar viele Adressen entworfen [4]. NAT ist in diesem Kontext überflüssig und nicht mehr möglich. IPv6 hat in Asien bereits heute seine Bedeutung, da dort die Adressenknappheit wegen des rapiden Wachstums des Internets in den Schwellenländern problematischer als in Nordamerika und Europa ist. Doppelpunkt statt Dotted QuadsStatt der Schreibweise von IPv4 in Dotted Quads gibt es bei IPv6 32 Hexadezimalziffern in acht durch Doppelpunkte getrennten Blöcken, als Beispiel »0123:4567:89ab:defg:3456:789f:9876:fbca«. Führende Nullen in einem Block sind überflüssig und dürfen entfallen. Einen oder mehrere Blöcke mit vier Nullen direkt hintereinander kann das Auslassungszeichen »::« ersetzen, aber nur einmal pro Adresse. So lässt sich als Beispiel die IPv6-Adresse für »localhost« schlicht als »::1« notieren. Einige Präfixe verleihen der Adresse eine zusätzliche Bedeutung, zum Beispiel ergibt ein vorangestelltes »0:0:0:0:FFFF« eine Adresse, die der angehängten IPv4-Adresse entspricht. Also meinen »0:0:0:0:0:FFFF::10.20.30.40/96« und »10.20.30.40/32« dasselbe Gerät. Das früher für diesen Zweck verwendete Präfix »00« sollte niemand mehr verwenden, weil es seit 2006 veraltet ist. Das Präfix »fe80« bezeichnet nur im lokalen Netz gültige Adressen (link local), die kein Router weiterleiten soll. In IPv6 gibt es keine herkömmlichen Netzmasken mehr, nur noch Angaben wie bei der CIDR-Notation. Netz- und Hostadresse umfassen oft je 64 Bits. Das Beispiel »0123:4567:89ab:defg::/64« trägt eine solche 64-Bit-Netzadresse. |
Aus der Ferne
Das Kommando »telnet« baut eine Terminal-Sitzung zu einem anderen Rechner auf und ist damit praktisch der Urahn der Fernwartung. Eine mit »telnet 192.0.2.68« gestartete Sitzung lässt alle weiteren Programme auf dem entfernten statt dem lokalen Rechner ablaufen. Das Programm gilt als höchst unsicher, da es das Passwort und alle weiteren Daten unverschlüsselt überträgt. Zum Glück steht aber die Secure Shell »ssh« als geeigneter Ersatz bereit.
Auch andere Serverdienste lassen sich mit »telnet« über TCP ansprechen, wenn der Admin die Portnummer (oder den in »/etc/services« aufgeführten Servicenamen) dieses Dienstes als letzten Aufrufparameter angibt. So testet er beispielsweise einen Webserver, indem er nach einem solchen Aufruf die vereinfachte HTTP-Anfrage »HEAD /« eingibt. Um Abfragen zu automatisieren, ist der Einsatz von »telnet« in Skripten aufgrund seines interaktiven Charakters schwierig. Besser eignet sich dafür »netcat«:
echo HEAD / | nc www.kernel.org 80
Das zusätzlich zu installierende Tool fungiert dann als ein skriptfähiges Pendant zu »telnet«.
Domain-Namen auflösen
Anders als bei Telefonnummern hat sich das Merken von IP-Adressen im Dotted-Quad-Format nicht durchgesetzt. Stattdessen dürfen Benutzer dank des Domain Name System (DNS) sprechende Namen wie »www.linux-magazin.de« verwenden. Solche Angaben werden Fully Qualified Domain Names (FQDN) genannt, da neben dem Namen (»www«) auch die komplette Domain (»linux-magazin.de«) angegeben ist.
Einige Werkzeuge helfen beim Test von DNS. Ein wichtiger Grundsatz dabei sollte immer sein, zunächst zu überprüfen, ob die IP-Konfiguration korrekt ist, da DNS ein funktionstüchtiges Netz voraussetzt. Wenn dies einmal nicht der Fall ist, sollte der Admin besser mit »ping 141.1.1.1« (oder einer anderen aktiven IP-Adresse) statt mit »ping www.linux.org« die Fehlersuche beginnen.
Wer wissen will, was sich hinter einem IP-Namen verbirgt, benötigt eine bestehende Netzverbindung und ein passendes Werkzeug. Der Klassiker »nslookup« gilt als veraltet, »dig« und »host« bieten deutlich mehr Komfort. Die Programme fordern Daten aus dem DNS an und stellen sie dar. Dieser Vorgang heißt Namensauflösung (Resolving). Die Datei »/etc/resolv.conf« konfiguriert diesen Ablauf. In ihr steht als wichtigste Angabe der befragte Nameserver.
Alternativ erlauben es die Tools, auch einen Nameserver direkt anzugeben. Der Befehl »host alpha.demo.org« findet die IP-Adresse eines FQDN heraus:
alpha.demo.org has address 192.0.2.67
Diese Angabe bedeutet übrigens nicht, dass unter der Adresse 192.0.2.67 auch ein Gerät aktiv ist; es handelt sich allein um eine Angabe, die in einer Datenbank hinterlegt ist.
Mit dem Kommando »dig« (Domain Information Groper) erhält der Netzadmin umfangreiche Informationen zu einem DNS-Namen, einer Domain, zu bestimmten Records und weiteren Angaben. Es probiert alle in »/etc/resolv.conf« angegebenen Nameserver. Der Zusatz »@server« gibt einen eigenen Server an.
Mit »dig @localhost linux-magazin.de MX« fragt der Anwender den eigenen Rechner nach dem Namen »linux-magazin.de«. Der Record-Typ gibt an, welche Antwort er erwartet. Das Beispiel fahndet nach dem Mail-Exchanger, abgekürzt »MX«. Weitere Records umfassen »NS« (Nameserver) oder »CNAME« (Aliases); ohne Angabe gibt der Server die IP-Adresse (»A«-Record) zurück. Alle Angaben auf einmal fordert »ANY« an.
Das Werkzeug »dig« ist nützlich, da es seine Ergebnisse in einem Format ausgibt, die ein cleverer Administrator zur Konfiguration des eigenen DNS-Servers verwendet. Der umgekehrte Weg der Abfrage ist ebenfalls denkbar. Um den Namen zu einer IP-Adresse zu finden, hilft »dig« mit der Option »-x« aus:
dig -x 192.0.2.67
Solche Anfragen nennt man Reverse-Lookup; allerdings finden sich nicht für alle IP-Adressen entsprechende Einträge.
Registraturen
Wer verwaltet die vielen Adressen? Wen ansprechen bei technischen oder administrativen Problemen? Das Tool »whois« gibt die Antworten. Als Argument erwartet es eine IP-Adresse oder einen IP-Namen und fragt einen voreingestellten Whois-Server nach Angaben über Besitzer, den für die Technik Verantwortlichen und weiteren Informationen.
Lernziele
Erst mit den Transportprotokollen (TCP oder UDP) sind Dienste wie FTP oder Telnet überhaupt nutzbar. Dienste lassen sich über ihre Portnummern identifizieren. Dem Domain Name System kommt eine wichtige Bedeutung im Internet zu, weil es Namen mit Adressen verknüpft. Verschiedene Werkzeuge erlauben die Abfrage dieser Zuordnung. (mg)
|
Infos |
|---|
|
[1] Klaus Schmidt, “Verkehrsregelung”: Linux-Magazin 09/07, S. 92 [2] Frank Bernard, “Sicherheitsprobleme bei FTP”: Linux-Magazin 06/02, S. 54 [3] IPv4: [http://de.wikipedia.org/wiki/IPv4/] [4] IPv6: [http://de.wikipedia.org/wiki/IPv6/] [5] LPI-Seite mit den Prüfungsinhalten: [http://www1.lpi.org/de/obj_102.html] |
|
Der Autor |
|---|
|
Klaus Schmidt beschäftigt sich mit Netzwerk-Installationen und gibt seit sieben Jahren Linux-Kurse, vorwiegend zur LPI-Vorbereitung. |






