![]() |
Vorlesung "UNIX"von Prof. Jürgen Plate |
Es gibt daneben die Möglichkeit, Benutzer auch dann zu informieren, wenn sie nicht eingeloggt sind.
Das Mail-Kommando ergänzt den Brief um einen Briefkopf, in dem Absender und Absendezeitpunkt verzeichnet sind. Der Mailkopf enthält einzelne Zeilen, die sich anhand eines Schlüsselwortes identifizieren lassen ("From", "To", usw.). Zum Versand an ferne Rechner käme dann noch ein "Briefumschlag" hinzu. Normalerweise sorgt das Mail-Kommando nicht selbst für den Versand, sondern es übergibt den Brief an ein anderes, speziell für den Mailversand konzipiertes Programm.
Wir haben es hier also mit einem Frontend, dem 'Mail User Agent' (mail, mailx, elm, pine,...), und einem Backend, dem 'Mail Transport Agent' (sendmail, smail, ...), zu tun. Der MTA sorgt auch für die Weiterleitung ankommender Post an den richtigen Empfänger.
Kann der Brief nicht zugestellt werden (z. B. unbekannter Empfänger), gibt mail eine Fehlermeldung aus. Gleichzeitig erhält man den eigenen Brief, ergänzt um Zusatzinformationen per mail retour. Fehlerhafte Briefe werden auch (je nach Einstellung des MTA) an einen besonderen Pseudo-Empfänger namens 'postmaster' geschickt. Dieser Benutzer steht nicht in der Passwortdatei, sndern es ist ein sogenanntes 'Mail-Alias' für den Systemverwalter oder einen Beauftragten. An den 'postmaster' kann man sich auch wenden, wenn man Fragen im Zusammenhang mit Mail hat (z. B. wenn man einen Empfänger sucht). Beispiel für das Versenden einer Mail:
$ mail markus Lieber Markus, leider habe ich dich heute nicht getroffen. Ich brauche dringend das UNIX-Buch, das ich Dir neulich geliehen habe. Bitte leg es doch in mein Fach. Danke. Gruss, Hans .
Wenn der Benutzer markus mehrere Mails erhalten hat, wird er über diesen Brief nicht besonders glücklich sein, denn jeder Mailer (MUA) zeigt normalerweise erst einmal den Absender und eine Betreff-Zeile an. Letztere besitzt aber der obige Brief garnicht. Man sollte also eine "Subject:"-Zeile anbringen. Das geht recht gut mit dem verbesserten 'mail'-Kommando, 'mailx'. Hier kann man in der Kommandozeile ein "Subject" angeben:
mailx -s "UNIX-Buch" markus ....
'mail' und 'mailx' werden eigentlich nur noch verwendet, wenn nichts besseres da ist - oder wenn es darum geht in Kommandodateien (Shellskripts) Mail automatisch zu versenden, da man mit Ausgabeumleitung oder Pipe die Ausgabe eines Programms direkt an den MUA übergeben kann.
Eine Nachricht über eingegangene Post erhält der Benutzer beim Login mit der Meldung you have mail.
Er kann dann mit einem Mail-Kommando seine Post ansehen (und gleich antworten). Der Unterschied zum Senden besteht bei mail und mailx im Fehlen der Empfänger-Logins. mail arbeitet interaktiv - man kann so alle Briefe nacheinander bearbeiten. Die obige Ausgabe stützt sich auch auf das Mail-Kommando.
| -e | Keine Bearbeitung, nur anzeigen, ob Post vorliegt. mail antwortet mit 0 oder 1 (=keine Post/Post). |
| -h | Nur numerierte Liste der Briefköpfe anzeigen, danach in den interaktiven Modus gehen. |
| -p | Alle Briefe ohne interaktive Steuerung ausgeben. |
| -q | Abbruchtaste beendet mail (im Normalfall wird damit nur die Ausgabe des aktuellen Briefs abgebrochen). |
| -r | Anzeige der Briefe nach Alter, den ältesten zuerst (FIFO). |
| -f datei | mail bietet die Möglichkeit, Briefe in einer benutzereigenen Datei zu speichern. Statt des Standardnamens "mbox" wird der angegebene Name verwendet. |
Beim Lesen der Post im interaktiven Modus (der Aufruf von mail ohne Parameter ist die Regel) meldet sich mail mit dem Fragezeichen als Prompt. Danach können zahlreiche Kommandos gegeben werden. Die Ausgabe kann mit CTRL-S angehalten und mit CTRL-Q fortgesetzt werden. Für den Anfang reichen ein paar Tasten:
| CR,n,+ | zum nächste Brief gehen |
| d | löscht den angezeigten Brief (markiert als "gelöscht") |
| p | aktuellen Brief nochmals ausgeben. |
| - | vorherigen Brief nochmals ausgeben. |
| s | Brief in der Datei mbox speichern. Hinter s kann auch ein Dateiname angegeben werden. |
| w | wie s, jedoch ohne Briefkopf. m Brief weiterleiten. Hinter m muß ein Login-Name angegeben werden. |
| r | Antworten, der Empfänger wird von mail dem Brief entnommen. |
| ! | Ausführen des hinter dem ! angegebenen UNIX-Kommandos. |
| q | mail verlassen, als gelöscht markierte Briefe entfernen |
| x | mail abbrechen - alles bleibt, wie es war. |
Das Kommand 'mailx' zeigt beim Start zumindest eine Übersicht der eingegangenen Post (Subject und Absender) und bietet komfortablere Bearbeitung (z. B. Löschen aller Mails auf einmal oder die oben erwähnte Subject-Angabe).
Programme wie 'elm', 'pine' oder 'mutt' arbeiten interaktiv und stellen eine komfortablere Benutzer-Schnittstelle dar. Deshalb werden sie normalerweise verwendet. Eine detaillierte Beschreibung dieser Programme würde jedoch den Rahmen dieses Skripts sprengen.
Bei allen sendmail- oder smail-basierten Systemen ist die Umleitung einfacher. Der Benutzer muß lediglich in seinem Home-Directory eine Datei namens ".forward" anlegen und in dieser Datei eine (korrekte) Mailadresse eintragen. Sollen mehrere Empfänger angesprochen werden, sind die Namen durch Kommas zu trennen.
Der Mechanismus geht jedoch noch weiter. Wird eine Datei mit vollständigem Pfad angegeben (die Weiterleitungszeile beginnt also mit einem '/'), dann landet die Post in der angegebenen Datei. Ein weiterer Schritt ist die Angabe einer Pipe in ein Programm oder Skript, das die Mail weiterverarbeitet (z. B. "| tuwas"). Beim Erstellen des Skripts ist zu beachten, daß keinerlei Pfade oder Voreinstellungen vorausgesetzt werden dürfen und gewisse Sicherheitsmaßnahmen zu beachten sind. Ein recht bekanntes Programm, das eingehende Mail vorsortieren oder unerwünschte Mail gleich löschen kann ist beispielsweise 'procmail'.
Mailsysteme, die auf 'smail' oder 'sendmail' basieren, bieten noch einige weitere Features. Die Datei /etc/aliases ist hier von besonderem Interesse, da sich damit einige Mail-Dienste realisieren lassen:
plate: plate@fh-muenchen.de
postmaster: holzmann
webmaster: plate
admin: root
....
netmaster: plate,holzmann,root
Eine E-Mail an "netmaster" wird im Beispiel an drei verschiedene Accounts geschickt.
wichtel: :include:/home/plate/wichtel-mailingliste
Die Datei enthält einfach in jeder Zeile eine komplette Mailadresse. Durch Hinzufügen und Löschen von Zeilen kann die Liste aktualisiert werden.
In regelmäßigen Zeitabständen wird dann der eigentliche Datentransfer gestartet (Programm 'uucio' = Unix to Unix Copy I/O). Per Modem wird Kontakt zu einem entfernten Rechner aufgenommen und wechselseitig Daten ausgetauscht. Ist alles erledigt, wird die Verbindung wieder unterbrochen.
Heute wird vieles online im Netz erledigt, aber uucp hat immer noch seine Daseinsberechtigung, z. B. zum Austausch von Mail und Usenet-News. Wenn jemand beispielsweise sowieso nur einmal am Tag seine Mail bearbeitet dann kann dies offline, d. h. lokal geschehen und der Transfer irgendwann Nachts oder im Lauf des Tages erfolgen. Uucp-Software gibt es auch für andere Betriebssysteme (z. B. das Paket 'Waffle' für DOS) und so ist auch ein platformübergreifender Datenverkehr möglich. Außerdem kommt man so auch in Gegenden an seine Mail, in denen nur eine Telefonverbindung verfügbar ist. Das Thema wird im Kapitel über das Internet nochmals aufgegriffen. Um erreichbar und von anderen Rechnern unterscheidbar zu sein, braucht jedes System einen eindeutigen Knotennamen. Mit deren Hilfe gab es dann auch die erste Möglichkeit, Benutzer auf anderen Rechnern zu adressieren.
Das Versenden von Post an ein anderes System erfolgte anfangs durch Angabe von Knotennahmen und Loginnamen des Empfängers, getrennt durch ein Ausrufezeichen, z. B.:
mailx -s "Konferenz an 12.7." werk2!hans
Die übrige Bedienung von mail erfolgt dann wie schon beschrieben. Es ist auch möglich, die Post über mehrere Knoten zu leiten, wenn zwischen dem eigenen Rechner und den Zielrechner keine direkte Verbindung besteht. Angenommen alle Rechner eines Unternehmens sind pr uucp gekoppelt, dann könnte der mail-Aufruf so aussehen:
mailx -s "Konferenz am 12.7." werk1!werk2!werk4!klaus
Nachteil dieser Wegbeschreibung, die wegen der Ausrufezeichen als 'Bang-Path' bezeichnet wird, ist die Festlegung ebe gerade auf einen Weg. Ist der Rechner "werk2" gerade nicht betriebsbereit, bleibt die Post hängen. Deshalb ist man schon sehr bald zu einer wegeunabhängigen Adressierung übergegangen, der an anderer Stelle beschriebenen Domain-Adressierung, die heute verwendet wird. Manchmal findet man noch Mischformen, bei denen sozusagen die letzte Wegstrecke noch als Bangpath notiert ist. Es gibt eine ganze Reihe von uucp-Kommandos:
Von den Optionen werden nur einige vorgestellt:
| -j | gibt die Auftragskennung aus |
| -m | Sendet an der Aufrufer einen mail-Mitteilung über den Erfolg der Kopieraktion |
| -n | Empfänger-Loginname Der Empfänger wird per mail über den Kopiervorgang informiert. |
Knotenname[~Loginname]Kommando
Mit "uux Konotenname!login" kann man sich auf dem fremden Rechner anmelden, als ob man an einem seiner Terminals wäre. Dazu wird oft aber auch das folgende Kommando angeboten:
Die uu-Kommandogruppe kennt noch eine Reihe weiterer Kommandos für den Verkehr zwischen UNIX-Rechnern - siehe weiterführende Literatur. uucp-Verbindungen sind jedoch in jedem Fall für Mail, Netnews und gelegentliche Dateitransfers ausreichend. Sehr viel komfortabler wird es jedoch, wenn über Netzwerkkabel, Standleitung, Modemverbindung oder sogar Satellitenfunk die einzelnen Systeme direkt vernetzt sind.
Dieses Kapitel geht davon aus, dass Sie Ihren Linux-Rechner an ein schon bestehendes lokales Netzwerk anschließen möchten. Für die Verbindung zum Internet von zuhause aus empfehle ich generell die Anschaffung eines passenden Routers (ISDN, DSL etc.). Derartige Geräte sind inzwischen so preiswert geworden, dass die Kosten den Gewinn an Bequemlichkeit und vor allem Sicherheit bei weitem aufwiegen. Der Router wird gemäß der Hersteller- und Provideramgaben konfiguriert und ermöglicht dann jedem Rechner im Netz den Internetzugang. Gleichzeitig schützt er das Netz durch seine Firewall-Funktionen.
Die Installation und Initialisierung von TCP/IP komplett zu beschreiben, würde die Grenzen dieses Skripts sicherlich sprengen. Eine solche Beschreibung ist auch ziemlich überflüssig, da nahezu jeder Hersteller eigene Installationsroutinen zur Verfügung stellt. Leider sind diese unter Unix nicht einheitlich, jedoch läuft die Einrichtung von TCP/IP zumeist schon während der Installation des Betriebssystems ab. Aus diesem Grund beschränke ich mich hier auf eine kurze Zusammenfassung der wichtigsten Punkte und auf die allgemein wichtigen Kommandos und Konfigurationsdateien.
Für weitergehende Information zur Netzwerktechnik sei auf das Skript Praktische Einführung in Computernetze verwiesen. Mehr über das Internet finden Sie im Skript Internet-Einführung.
Was braucht man eigentlich alles, um einen Linux-Rechner ans Netz zu bringen? Eine Netzwerkkarte - klar! Diese wird in der Regel schon bei der Installation erkannt und das passende Kernel-Modul eingebunden. Feststellen lässt sich das mit dem Kommando dmesg | more. Dann brauchen Sie noch eine IP-Adresse, die Netzmaske, die Netzwerkadresse sowie Broadcast- und Gateway-Adresse.
Beim derzeit aktuellen IP-Protokoll V4 ist jede Netzwerk-Adresse eine 32-stellige Binärzahl. Weil aber nun 32 Nullen und Einsen etwas unübersichtlich sind, hat man daraus einfach vier Gruppen zu je acht Stellen gemacht und schreibt diese vier Gruppen als Dezimalzahlen auf. Nachdem bei jeder Zahl Werte zwischen 0 und 255 auftreten können, schrebt man noch einen Punkt zwischen die Zahlen. Heraus kommt dabei z. B. 105.22.234.1 (was besser lesbar ist als binär 01101001000101101110101000000001).
Rechner in lokalen Netzen sind für das Internet im Regelfall unsichtbar. Das bedeutet aber nicht, dass die Rechner keine Internetfunktionen nutzen können. Aber diese Rechner sind vor unkontrollierten Zugriffen aus dem Internet geschützt. Rechner, die weltweit kommunizieren sollen, bekommen vom jeweiligen Internet Service Provider eine IP-Adresse zugeteilt. Im LAN ohne direkte Internet-Verbindung braucht man aber nur IP-Adressen, die im jeweiligen Netz eindeutig sein müssen, nicht aber weltweit. Es wurden daher im IP-Zahlenraum drei Bereiche für lokale Netzwerke reserviert, die man jederzeit verwenden darf:
10.0.0.0 - 10.255.255.255 (A-Netz)
172.16.0.0 - 172.31.255.255 (B-Netze)
192.168.0.0 - 192.168.255.255 (C-Netze)
Der erste Bereich ermöglicht theoretisch ein Netz mit 16 Millionen Rechnern - das reicht auch für sehr große Firmen. Beim zweiten Bereich handelt es sich um 16 Teilnetze mit je ca. 65 000 Adressen (z. B. 172.23.0.0 bis 172.23.255.255). Der dritte Bereich besteht aus 256 kleinen Teilnetzen mit jeweils 254 Adressen. Ganz egal, in welchem Teilnetz Sie Ihr lokales Netz bilden - es ist sichergestellt, dass es zu keinen Adresskonflikten mit richtigen IP-Internetadressen kommt.
Meist wollen Sie freilich auch innerhalb des lokalen Netzes Internetfunktionen nutzen (beispielsweise im Web surfen). Um dies zu ermöglichen, muss innerhalb des lokalen Netzwerks ein Rechner bzw. der oben erwähnte Router als sogenanntes Gateway zum Internet konfiguriert werden. Dieser Rechner/Router stellt die Verbindung zum Internet her (über DSL, ISDN, Modem etc.) und leitet alle Internetanforderungen des lokalen Netzes weiter. Das Gateway hat außerdem die Aufgabe, die lokalen IP-Adressen durch eine weltweit gültige IP-Adresse zu ersetzen. Sie suchen sich also ein (Teil-)Netz aus dem oben angegebenen Nummernkreis und vergeben daraus die Rechner-IP-Adressen.
Nun kommen Netzmaske, Netzwerk- und Broadcast-Adresse ins Spiel. Die Ausdehnung eines lokalen Netzes wird durch die Netzmaske eingeschränkt. Dabei handelt es sich abermals um vierteilige Zifferngruppen, die intern als Bitmuster für IP-Adressen verwendet werden. Die Netzmaske legt fest, welcher Teil der IP-Adresse die Netzwerkadresse ist und welcher die Rechneradresse innerhalb des Netzes (das sorgt nicht nur dafür, dass mehrere lokale IP-Netze dasselbe Kabel verwenden können, ohne sich gegenseitig zu stören, sondern es macht auch den Routern das Leben leichter. Die Netzmaske hat bei allen Stellen, welche die Netzwerkadresse repräsentieren, eine 1 stehen und dahinter lauter Nullen (z. B.: 11111111111111110000000000000000 entspricht 255.255.0.0). Die Netzwerkadresse hat an den Stellen, welche den Rechner (Host) repräsentieren, Nullen stehen. Die Broadcast-Adresse (Broadcast = Rundruf, an alle) hat beim Rechneranteil lauter Einsen. Dazu ein Beispiel:
Wenn das lokale Netz alle Nummern 192.168.12.x umfasst, lautet die dazugehörige Netzmaske 255.255.255.0, die Netzwerkadresse 192.168.12.0 und die Broadcast-Adresse 192.168.12.255. (Bei manchen Konfigurationsprogrammen brauchen Sie keine Netzwerkadresse anzugeben, da sich diese aus den beiden anderen Adressen ergibt.) Das resultierende Netzwerk wird jetzt mit 192.168.12.0/255.255.255.0 oder kurz mit 192.168.12.0/24 bezeichnet. (Die Kurzschreibweise gibt die Anzahl der binären Einser der Netzmaske an.) Zwei Rechner mit den IP-Adressen 192.168.12.71 und 192.168.12.72 können sich in diesem Netzwerk also direkt miteinander verständigen (weil die IP-Adressen im Bereich der Netzmaske übereinstimmen). Die maximale Anzahl von Rechnern, die gleichzeitig in diesem Netz kommunizieren können, beträgt 254 (.1 bis .254) - die Nummern .0 und .255 sind ja reserviert.
Ein Gateway ist ein Router oder Rechner, der an der Schnittstelle zwischen zwei Netzen steht (oft zwischen dem lokalen Netz und dem Internet). Damit Ihr Unix/Linux-Rechner in einem lokalen Netz auf das Internet zugreifen kann, muss bei der Konfiguration die Gateway-Adresse angegeben werden. Die Gateway-Adresse bezeichnet also einen Rechner, der ebenfalls im lokalen Netz steht - z. B. mit der IP-Adresse 192.168.12.254. Dieser Rechner hat insofern eine Sonderstellung, als er mit dem Internet in Verbindung steht. Dort hat er eine (vom Provider zugeteilte) gültige IP-Adresse. Der Internetverkehr des gesamten lokalen Netzwerks erfolgt über den Gateway-Rechner, der jeweils die interne IP-Adresse eines jeden Datenpakets in die "offizielle" umsetzt und beim Antwortpaket umgekehrt verfährt (NAT, Network Address Translation).
Ein Nameserver ist ein Programm, das Rechnernamen bzw. Internetadressen (z. B. www.netzmafia.de) in IP-Adressen übersetzt. Bei kleinen Netzen erfolgt die Zuordnung zwischen Namen und Nummern oft über eine Tabelle (Datei /etc/hosts). Im Internet übernehmen Rechner mit entsprechenden Datenbanken diese Aufgabe. Statt des Begriffs Nameserver ist auch die Abkürzung DNS für Domain Name Server oder Domain Name Services üblich. Wenn Sie in einem Webbrowser die Site www.netzmafia.de ansehen möchten, wird daher als Erstes der Nameserver des Providers kontaktiert, um die IP-Adresse des Netzmafia-Webservers herauszufinden. Erst nachdem das gelungen ist, wird eine Verbindung mit dieser IP-Adresse hergestellt.
Die Abkürzung DHCP steht für Dynamic Host Configuration Protocol. DHCP wird oft in lokalen Netzwerken verwendet, um die Administration des Netzwerks zu zentralisieren. Anstatt bei jedem Rechner getrennt die IP-Adresse, das Gateway, den Nameserver etc. einzustellen, wird der Router oder ein Rechner als DHCP-Server konfiguriert. Alle anderen Rechner im lokalen Netzwerk nehmen beim Systemstart Kontakt mit dem DHCP-Server auf und fragen diesen, welche Adressen und Einstellungen sie verwenden sollen. Damit reduziert sich die Client-Konfiguration auf ein Minimum.
Eine besondere Rolle spielt noch das Loopback-Interface: Diese Schnittstelle ermöglicht die Verwendung des Netzwerkprotokolls für lokale Dienste, also zur Kommunikation innerhalb des Rechners. Das klingt vielleicht widersinnig, ist aber für viele elementare Linux-Kommandos erforderlich. Der Grund: Manche Kommandos bauen ihre Kommunikation auf dem Netzwerkprotokoll auf, ganz egal, ob die Daten lokal auf dem Rechner bleiben oder über ein Netz auf einem fremden Rechner weiterverarbeitet werden. Ein Beispiel dafür ist der Druckerdämon lpd, der das Spooling für den Drucker übernimmt und sowohl lokal als auch von fremden Rechnern genutzt werden kann. Auch das X-Protokoll für die grafische Bedineroberfläche arbeitet netzwerkbasiert.
Als IP-Adresse für das Loopback-Interface ist immer 127.0.0.1 vorgesehen. Alle Distributionen kümmern sich automatisch um die Konfiguration des Loopback-Interface, auch wenn ansonsten keine Netzwerkkonfiguration durchgeführt wird. Dieser Adresse ist in der Regel auch der Name localhost zugeordnet.
Für die Konfiguration des Netzwerks eines Unix/Linux-Rechers gibt es mehrere Möglichkeiten:
ifconfig lo0 127.0.0.1
Broadcast-Interfaces sind die üblichen Schnittstellen zu lokalen Netzwerken, über die mehrere Systeme erreichbar sind, und über die Broadcasts, also Nachrichten an alle, verschickt werden. Es handelt sich dabei um Schnittstellen zu Ethernet und TokenRing. Neben der Internet-Adresse werden bei der Initiatisierung des Broadcast-Interfaces auch die Netzmaske und die Broadcast-Adresse angegeben:
ifconfig eth0 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.255
Neben den Broadcast-Schnittstellen gibt es noch die sogenannten Point-to-Point-Schnittstellen. Sie sind dadurch gekennzeichnet, daß man nur über sie ein anderes System erreichen kann. Beispiele sind SLIP (Serial Line IP) und das Point-to-Point-Protokoll PPP, die Verbindungen über die serielle Schnittstelle oder per Modem/ISDN-Adapter WAN-Verbindungen zulassen. Die Initialisierung einer Point-to-Point-Schnittstelle hat z.B. die folgende Form:
ifconfig ppp0 192.168.1.1 192.168.1.2 netmask 255.255.255.240
So eine PPP-Verbindung bildet ein eigenständiges Netzwerk. Sollen mehrere Verbindungen kombiniert werden, so muß eine Unterteilung in Subnetze erfolgen. Das heißt, daß eine entsprechende Netzmaske gewählt werden muß. Wird als Argument für das ifconfig-Kommando nur der Name der Schnittstelle angegeben, so bezieht sich das auf die aktuelle Konfiguration der Schnittstelle, die dann ausgegeben wird:
eth0 Link encap:10Mbps Ethernet HWaddr 00:20:18:03:0B:F5
inet addr:10.10.10.4 Bcast:10.10.10.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0
TX packets:0 errors:0 dropped:0 overruns:0
Interrupt:11 Base address:0x340
Nun kann man mit dem route-Kommando überprüfen, ob auch die Routen korrekt gesetzt wurden (ggf. muss man das mit diesem Kommando nachholen), zum Beispiel:
# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 0.0.0.0 192.168.0.10 0.0.0.0 UG 0 0 0 eth0Die ersten beiden Zeilen beschreiben das Loopback-Interface und die Netzwerkkarte, die letzte Zeile die ROute ins INternet (Gateway).
Internet-Adresse Name Aliase ...
Dazu ein Beispiel:
127.0.0.1 localhost 192.168.0.1 sun1-lbs micky 192.168.0.2 sun2-lbs minnie 192.168.0.3 sun3-lbs goofy 192.168.0.4 sun4-lbs donald 192.168.0.5 sun5-lbs dagobert 192.168.0.6 sun6-lbs daisy 192.168.0.7 sun7-lbs tick 192.168.0.8 sun8-lbs trick 192.168.0.9 sun9-lbs track
Nach der Internet-Adresse wird der "offizielle" Name des Systems angegeben, gefolgt von Alias-Namen für dieses System. Wird als Argument für ein Netzwerk-Kommando ein Name angegeben, so wird in dieser Datei die zugehörige Internet-Adresse ermittelt. Erst über die Adresse wird eine Verbindung zum Zielsystem aufgebaut. Die Datei /etc/hosts wird jedoch auch für den umgekehrten Vorgang benutzt. Mit einem IP-Datagram wird nur die Internet-Adresse des sendenden Systems mitgeschickt. Soll nun der zugehörige Name ermittelt werden, so geschieht dies ebenfalls mittels dieser Datei. Das Resultat ist jedoch immer der "offizielle" Name des Systems. Deshalb ist darauf zu achten, daß stets dieser Name verwendet werden muß, wenn ein Rechnername in weiteren Konfigurationsdateien eingetragen wird.
Natürlich reicht das System mit /etc/hosts höchstens für ein lokales Kleinstnetz mit einer handvoll Rechner aus, denn auf jedem Rechner muß die /etc/hosts auf dem aktuellen Stand gehalten werden. Diesem Problem sahen sich auch bald die Väter des Internet gegenüber und so wurde die größte weltweit verteilte Datenbank, das Domain Name System (DNS) erfunden. Es gibt eine Software, welche die Namensdatenbank verwaltet und auf Anfrage zu einem Rechnernanen die IP-Adresse liefert oder umgekehrt. Das Programm ist unter UNIX in der Regel BIND (Berkely Internet Name Daemon). Es läuft als "Nameserver" auf normalerweise mindestens zwei Rechnern einer Domain. Mehr darüber finden Sie im DNS-Kapitel des Internet-Skripts. Für den Rechner, der DNS nutzen will gibt es zwei Dateien, /etc/hosts.conf und /etc/resolv.conf, die festlegen, wie der Nameserver genutzt wird. In /etc/hosts.conf wird festgelegt, wie die Namenssuche erfolgen soll:
order hosts bind multi onMit order hosts bind wird festgelegt, daß zuerst in der lokalten Datenbank /etc/hosts gesucht werden soll und erst dann eine Nameserveranfrage an einen fernen Rechner gestartet wird. Die Datei /etc/resolv.conf enthält Infos über den Nameserver:
search mydomain.net nameserver 10.10.10.4 nameserver 10.10.10.1
Wie die Datei /etc/hosts enthält auch die Datei /etc/networks Adressen und Namen. Diesmal sind es allerdings Namen für Netzwerke. Die Funktion dieser Datei ist durchaus mit der /etc/hosts vergleichbar: Netzwerk-Namen werden in Netzwerk-Adressen umgesetzt und umgekehrt. Die allgemeine Form eines Eintrags sieht dann so aus:
Netzwerk-Name Netzwerk-Adresse Netzwerk-Aliase ...
Zum Beispiel:
loopback 127 admin-net 192.168.1 dev-net 192.168.2
Eine weitere Datei ist für die Zuordnung der Portnummern zu den einzelnen Diensten wie Telnet, FTP, WWW, Mail, usw. zuständig. In dieser Datei, /etc/services, werden der Name des Dienstes, die Portnummer, das Transportprotokoll (UDP oder TCP) und Service-Aliase angegeben. Die allgemeine Form eines Eintrags in /etc/services hat die Form:
Service-Name Portnummer/Protokoll Service-Aliases
Wichtig: Hier sind nur Portnummern für Server spezifiziert. Client-Programme bekommen beim Verbindungsaufbau eine beliebige, freie Portnummer zugewiesen. So kann der Server wieder auf der Standard-Portnummer aus /etc/services auf einen weiteren Verbindungswunsch warten. Die spezifizierten Portnummern sind auf allen Rechnern im Netz gleich. Die Server-Programme entnehmen dieser Datei, auf welchen Port sie zugreifen müssen. Die Client-Programme finden hier die entsprechenden Portnummern ihrer Server. In /etc/services werden die Portnummern für TCP- und UDP-Dienste spezifiziert. Die Portnummern für diese beiden Transport-Protokolle sind völlig unabhängig voneinander. Trotzdem ist es im allgemeinen üblich, gleiche Portnummern für beide Protokolle zu benutzen, wenn ein Dienst über beide Transportprotokolle verfügbar ist.
Ein Ausschnitt aus /etc/services:
tcpmux 1/tcp # TCP port service multiplexer echo 7/tcp echo 7/udp discard 9/tcp sink null discard 9/udp sink null systat 11/tcp users daytime 13/tcp daytime 13/udp netstat 15/tcp qotd 17/tcp quote msp 18/tcp # message send protocol msp 18/udp # message send protocol chargen 19/tcp ttytst source chargen 19/udp ttytst source ftp 21/tcp # 22 - unassigned telnet 23/tcp # 24 - private smtp 25/tcp mail # 26 - unassigned time 37/tcp timserver time 37/udp timserver rlp 39/udp resource # resource location nameserver 42/tcp name # IEN 116 whois 43/tcp nicname domain 53/tcp nameserver # name-domain server domain 53/udp nameserver mtp 57/tcp # deprecated bootps 67/tcp # BOOTP server bootps 67/udp bootpc 68/tcp # BOOTP client bootpc 68/udp tftp 69/udp gopher 70/tcp # Internet Gopher gopher 70/udp rje 77/tcp netrjs finger 79/tcp www 80/tcp http # WorldWideWeb HTTP www 80/udp # HyperText Transfer Protocol link 87/tcp ttylink kerberos 88/tcp krb5 # Kerberos v5 kerberos 88/udp supdup 95/tcp # 100 - reserved hostnames 101/tcp hostname # usually from sri-nic iso-tsap 102/tcp tsap # part of ISODE. csnet-ns 105/tcp cso-ns # also used by CSO name server csnet-ns 105/udp cso-ns rtelnet 107/tcp # Remote Telnet rtelnet 107/udp pop2 109/tcp postoffice # POP version 2 pop2 109/udp pop3 110/tcp # POP version 3 pop3 110/udp sunrpc 111/tcp sunrpc 111/udp auth 113/tcp tap ident authentication sftp 115/tcp uucp-path 117/tcp nntp 119/tcp readnews untp # USENET News Transfer Protocol ntp 123/tcp ntp 123/udp # Network Time Protocol netbios-ns 137/tcp # NETBIOS Name Service netbios-ns 137/udp netbios-dgm 138/tcp # NETBIOS Datagram Service netbios-dgm 138/udp netbios-ssn 139/tcp # NETBIOS session service netbios-ssn 139/udp imap2 143/tcp # Interim Mail Access Proto v2 imap2 143/udp .....
Es gibt bei UNIX zwei Möglichkeiten, einen Netzdienst anzubieten:
# See "man 8 inetd" for more information. # # If you make changes to this file, either reboot your machine or send the # inetd a HUP signal. # ## # These are standard services. # ftp stream tcp nowait root /usr/sbin/wu.ftpd wu.ftpd -a # ftp stream tcp nowait root /usr/sbin/in.ftpd in.ftpd telnet stream tcp nowait root /usr/sbin/in.telnetd in.telnetd # nntp stream tcp nowait root tcpd in.nntpd smtp stream tcp nowait root /usr/sbin/sendmail sendmail -v printer stream tcp nowait root /usr/bin/lpd lpd -i # # Shell, login, exec and talk are BSD protocols. # shell stream tcp nowait root /usr/sbin/in.rshd in.rshd -L login stream tcp nowait root /usr/sbin/in.rlogind in.rlogind exec stream tcp nowait root /usr/sbin/in.rexecd in.rexecd # talk dgram udp wait root /usr/sbin/in.talkd in.talkd # ntalk dgram udp wait root /usr/sbin/in.talkd in.talkd # # Kerberos authenticated services # # klogin stream tcp nowait root /usr/sbin/tcpd rlogind -k # eklogin stream tcp nowait root /usr/sbin/tcpd rlogind -k -x # kshell stream tcp nowait root /usr/sbin/tcpd rshd -k # # Services run ONLY on the Kerberos server # # krbupdate stream tcp nowait root /usr/sbin/tcpd registerd # kpasswd stream tcp nowait root /usr/sbin/tcpd kpasswdd # # Pop et al # # pop2 stream tcp nowait root /usr/sbin/in.pop2d in.pop2d pop3 stream tcp nowait root /usr/sbin/popper popper -s # # Comsat - has to do with mail. # # comsat dgram udp wait root /usr/sbin/tcpd in.comsat # # The Internet UUCP service. # # uucp stream tcp nowait uucp /usr/sbin/tcpd /usr/lib/uucp/uucico -l # # Tftp service is provided primarily for booting. Most sites # run this only on machines acting as "boot servers." # # tftp dgram udp wait nobody /usr/sbin/tcpd in.tftpd # bootps dgram udp wait root /usr/sbin/bootpd bootpd # # Finger, systat and netstat give out user information which may be # valuable to potential "system crackers." Many sites choose to disable # some or all of these services to improve security. # Try "telnet localhost systat" and "telnet localhost netstat" to see that # information yourself! # finger stream tcp nowait nobody /usr/sbin/in.fingerd in.fingerd -w systat stream tcp nowait nobody /bin/ps /bin/ps -auwwx netstat stream tcp nowait root /bin/netstat /bin/netstat -a ident stream tcp nowait root /usr/sbin/in.identd in.identd # # These are to start Samba, an smb server that can export filesystems to # Pathworks, Lanmanager for DOS, Windows for Workgroups, Windows95, Lanmanager # for Windows, Lanmanager for OS/2, Windows NT, etc. Lanmanager for dos is # available via ftp from ftp.microsoft.com in bussys/MSclient/dos/. Please read # the licensing stuff before downloading. Use the TCP/IP option in the client. # Add your server to the \etc\lmhosts (or equivalent) file on the client. netbios-ssn stream tcp nowait root /usr/bin/smbd smbd netbios-ns dgram udp wait root /usr/bin/nmbd nmbd # End.
Als letzte der Konfigurations-Dateien soll die /etc/protocols behandelt werden. Hier werden die über IP arbeitenden Protokolle aufgelistet. Die allgemeine Form eines Eintrags hat die Form:
Protokoll-Name Protokoll-Nummer Protokoll-Aliase ...
Zum Beispiel:
ip 0 IP # internet protocol, pseudo protocol number icmp 1 ICMP # internet control message protocol igmp 2 IGMP # internet group multicast protocol ggp 3 GGP # gateway-gateway protocol tcp 6 TCP # transmission control protocol egp 8 EGP # Exterior-Gateway Protocol PUP 12 PUP # PARC universal packet protocol udp 17 UDP # user datagram protocol idp 22 IDP # WhatsThis? hello 63 HELLO # HELLO Routing Protocol raw 255 RAW # RAW IP interface
Die Protokoll-Nummer wird im Header des Internet-Protokolls angegeben.
Jeder Rechner im Netz (= Host) besitzt eine Datei /etc/hosts.equiv, in der "vertrauenswürdige" Rechner eingetragen sind. Wollen sich Benutzer von einem dieser Rechner auf dem lokalen Computer einloggen, brauchen sie kein Passwort für den Rechner-Rechner-Übergang (wobei "Benutzer" auch Dämonprozesse sein können → automatischer Datenaustausch möglich). Enthält die Datei nur eine Zeile mit einem '+'-Zeichen, werden alle angeschlossenen Rechner akzeptiert. Gibt es keine "vertrauenswürdigen" Rechner, ist jeweils die Eingabe des Login-Passwortes nötig. Außerdem funktioniert das Ganze nur, wenn man auf Quell-und Zielrechner die gleiche Benutzerkennung hat.
Inzwischen veraltet sind die sogenannten R-Kommandos von Unix:
telnet host
Telnet (Teletype Network) unterscheidet zwei Modi, den Kommando- und den Eingabemodus. Der Kommandomodus ist aktiv, wenn man Telnet ohne Argument aufruft. Am Bildschirm erscheint der Prompt "Telnet>". Wird Telnet mit Argument aufgerufen, so wird ein "open"-Kommando mit dem angegebenen Argument ausgeführt und man befindet sich im Eingabemodus, bei dem zwei Übertragungsmodi unterschieden werden:
Falls der localchars-Schalter auf EIN steht (das ist die Grundeinstellung im Zeilen-Modus), werden in beiden Modi die "quit"-, "intr"- und "flush"-Zeichen lokal abgefangen und als Telnet-Protokoll-Sequenzen an das entfernte System gesendet.
Während eine Verbindung zu einem entfernten System besteht, kann in den
Telnet-Kommandomodus mittels dem Telnet-Fluchtsymbol (Voreinstellung "^]")
umgeschaltet werden.
Nachfolgend werden die verfügbaren Kommandos beschrieben. Kommandos können
soweit verkürzt eingegeben werden, als sie noch eindeutig erkennbar sind. Gleiches
gilt auch für die Argumente der Kommandos mode, set,
toggle und display. Im Kommandomodus haben die üblichen
Terminal-Editier-Konventionen Gültigkeit (UNIX-Shell und "stty"-Einstellungen).
Beispiel: Verbindung zum Rechner lx-lbs
telnet lx-lbs
Telnet reagiert daraufhin mit:
Trying to ..... Connect to sun1-lbs Escape Character is '^]'Jetzt folgt die normale Loginsequenz auf dem Rechner sun1-lbs. Um weitere Kommandos an Telnet geben zu können, muß der Befehl mit dem angegeben Escape-Character eingeleitet werden (im Beispiel das ESC-Zeichen). Beenden der Verbindung erfolgt in diesem Fall mit "^] quit" oder einfach Ctrl-D.
telnet kann auch vorzüglich zum Testen von Verbindungen und Servern verwendet werden. Bei Kenntnis der Protokolle (nachlesbar in den entsprechenden RFCs) kann ein Protokoll wie SMTP, NNTP, HTTP, usw. auch von Hand nachgebildet werden. Man kann so durch eine telnet-Verbindung nachsehen, ob auf einem fernen System Mail-, News-, WWW- oder andere Dienste laufen.
FTP ist die Benutzerschnittstelle zum Dateiübertragungsprotokoll.
Dieses Programm ermöglicht den Dateitransfer zwischen zwei Rechenanlagen. Es besitzt
eine eigene Kommandooberfläche, die interaktiv bedient wird. Der Aufruf dieses
Filetransferprogrammes erfolgt durch ftp.
FTP funktioniert aber auch, wenn man auf dem fernen Rechner keine Benutzerberechtigung
hat, denn viele Rechner bieten große Dateibereiche über sogenannten
'anonymen' FTP. Man gibt in diesem Fall als Benutzernamen 'ftp' ein und als Passwort
die eigene Mailadresse. Danach kann man sich im öffentlichen Dateibereich tummeln.
Wird beim Programmaufruf der gewünschte Kommunikationspartner (host) mit
angegeben, so wird sofort versucht, eine Verbindung zu diesem Rechensystem aufzubauen.
Ist der Versuch erfolglos, so wird in den Kommandomodus umgeschaltet. Der Prompt
"ftp>" erscheint immer auf dem Bildschirm, wenn ftp-Kommandos eingegeben
werden können. ftp verfügt über einen help-Mechanismus,
über den sämtliche auf dem jeweiligen System verfügbare Kommandos mit
Kurzerklärungen abfragbar sind.
Nachfolgend werden wesentliche Kommandos nach Funktionalität gruppiert vorgestellt.
Kommandos können soweit verkürzt eingegeben werden, als sie noch eindeutig
erkennbar sind. Enthalten Kommandoargumente "Blanks", so sind die Argumente beidseitig mit
Hochkommas eingeschlossen einzugeben.
Die optionalen Parameter beim ftp-Kommando setzen logische Schalter für den ftp-Programmlauf. Im Kommandomodus sind die Einstellungen jederzeit wieder änderbar.
Die Datei-Übertragung wird durch die Terminal "interrupt"-Taste (üblicherweise Ctrl-C) abgebrochen, was einen sofortigen Abbruch zur Folge haben soll. Nicht alle Kommunikationspartner verstehen die Abbruchaufforderung und dann wird dennoch die gesamte Datei übertragen ausgeführt.
Dateinamen, die als Argumente von FTP-Kommandos Verwendung finden, werden wie folgt bearbeitet: Ist "file globbing" eingeschaltet, werden bei den Kommandos mget, mput und mdelete die Namen lokaler Dateien folgendermaß behandelt:
Nicht alle ftp-Installationen unterstützen alle ftp-Kommandos. Wenn sich eine Dateiübertragung nicht ordnungsgemäß abbrechen läßt, kann der lokale ftp-Prozess mit dem Terminal-intr-Zeichen (üblicherweise Ctrl-C) abgebrochen werden.
Die Kommandos telnet und ftp (und die r-Kommandos) stellen jedoch ein gravierendes Sicherheits-Problem dar, denn:
SSH speichert alle wichtigen Informationen im Unterverzeichnis ".ssh" des Heimatverzeichnisses des jeweiligen Benutzers. Das Directory sollte deshalb nur für den Besitzer der Kennung zugänglich sein (chmod 700 .ssh).
Mit SSH kann man:
ssh [SSH_OPTIONS] [-l USER] HOST ssh [SSH_OPTIONS] [USER@]HOST
ssh [SSH_OPTIONS] HOST COMMAND [COMMAND_ARGUMENTS]
scp [SCP_OPTIONS] [[USER@]HOST:]FILE [...]Für Windows gibt es als äquivalent das Programm "winscp".
ssh -X [SSH_OPTIONS] [USER@]HOSTSSH regelt automatisch die Verwendung von X-Window. Man muß also auf dem Remote-Rechner weder eine X-Window-Authorisierung noch die Environment-Variable DISPLAY setzen.
Bei jeder neuen Verbindung laufen am Anfang folgende Schritte ab:
Der Benutzer kann seine Identität nicht nur per Username und Passwort, sondern auch durch eine individuelle RSA-Authentifikation nachweisen (automatischer Login). Dazu ist jedoch auf dem Remote-Rechner ein entsprechender Eintrag in der Datei $HOME/.ssh/authorized_keys erforderlich.
Bei SSH kommen kryptographische Verfahren an mehreren Stellen zum Einsatz. Das asymmetrische RSA-Verfahren wird für die Authentifizierung der Kommunikations-Partner und für die sichere Übertragung eines zufällig erzeugten und nur einemal verwendeten Sitzungs-Schlüssel eingesetzt. Dabei werden Key-Längen zwischen 768 und 1024 Bit empfohlen. Zur Verschlüsselung der Daten während der Verbindung wird wegen des höheren Durchsatzes ein symmetrisches Verfahren verwendet. Je nach Installation der SW hat der Benutzer i.a. die Auswahl zwischen verschiedenen Algorithmen: DES (Data Encryption Standard) mit 56 Bit Schlüssellänge, 3DES (Tripple DES) mit 112 Bit Schlüssellänge, IDEA (International Data Encryption Algorithm) mit 128 Bit Schlüssellänge, Blowfisch mit 128 Bit Schlüssellänge und Arcfour mit 128 Bit Schlüssellänge.
Folgende Optionen werden bei ssh häufiger verwendet:
RSA-Schlüsselpaare
Die Authentifizierung des Clients kann, wie oben erwähnt, auch durch eine benutzerspezifische RSA-Authentifikation erfolgen. Dazu benötigt der Benutzer jedoch ein individuelles RSA-Key-Paar, das im Directory $HOME/.ssh abgelegt und mit dem Kommando ssh-keygen verwaltet wird:
ssh-keygen [-f KEY_FILE] [-C COMMENT] [-b KEY_LENGTH]Mit diesem Aufruf erzeugt man ein neues Key-Paar, wobei folgende Informationen interaktiv abgefragt werden:
ssh-keygen -p [-f KEY_FILE] ('Passwort') dient zum Ändern des Passworts für die Aktivierung des Secret-Keys und mit ssh-keygen -c [-f KEY_FILE] [-C COMMENT] ('Comment') kann der Kommantar geändert werden.
Neben den Kommandos für den "Normalbenutzer" gibt es noch Testkommandos, die recht hilfreich sind, wenn man einen fernen Rechner nicht erreicht oder, um mehr über das Netz zu erfahren.
$ ping donald
erhält man je nach System die Meldung "donald is alive." oder es wird pro Sekunde 1 Datenpaket gesendet. Die als Echo zurückkommenden Pakete werden angezeigt. Ab gebrochen wird das Ping-Pong-Spiel durch das Interrupt-Signal (Delete, Ctrl-C). Nach dem Abruch von ping wird noch eine kurze Statistik ausgegeben. (die Wortkarge Variante von ping muß man durch die Option "-s" zur Dauerarbeit bringen). Besonders interessant ist die Angabe "packet loss", also der Prozentsatz der nicht be antworteten Pakete. Bei einer einwand freien Verbindung, insbesondere in einem lokalen Netz, sollte hier eigentlich immer 0% stehen. Im Falle von 100% ist definitiv etwas nicht in Ordnung. Passiert dies bei allen Systemen, so ist das Netz defekt. Beispiel:
$ ping www.ee.hm.edu PING www.ee.hm.edu (129.187.206.140): 56 data bytes 64 bytes from 129.187.206.140: icmp_seq=0 ttl=242 time=48.9 ms 64 bytes from 129.187.206.140: icmp_seq=1 ttl=242 time=41.9 ms 64 bytes from 129.187.206.140: icmp_seq=2 ttl=242 time=41.3 ms 64 bytes from 129.187.206.140: icmp_seq=3 ttl=242 time=39.9 ms 64 bytes from 129.187.206.140: icmp_seq=4 ttl=242 time=44.9 ms 64 bytes from 129.187.206.140: icmp_seq=5 ttl=242 time=42.9 ms 64 bytes from 129.187.206.140: icmp_seq=6 ttl=242 time=45.4 ms 64 bytes from 129.187.206.140: icmp_seq=7 ttl=242 time=40.5 ms 64 bytes from 129.187.206.140: icmp_seq=8 ttl=242 time=41.4 ms 64 bytes from 129.187.206.140: icmp_seq=9 ttl=242 time=42.3 ms --- www.eee.hm.edu ping statistics --- 10 packets transmitted, 10 packets received, 0% packet loss round-trip min/avg/max = 39.9/42.9/48.9 ms
$ arp -a Net to Media Table Device IP Address ------- Mask Flags Phys Addr ------ --------------------------- --------------- ----- ----------------- le0 brokrz.lrz-muenchen.de 255.255.255.255 00:00:a2:0f:76:97 le0 infoserv.rz.fh-muenchen.de 255.255.255.255 00:e0:29:06:18:d3 le0 flynt.rz.fh-muenchen.de 255.255.255.255 00:e0:29:08:49:f1 le0 kobra.rz.fh-muenchen.de 255.255.255.255 00:08:c7:a9:6c:cc le0 netmon.rz.fh-muenchen.de 255.255.255.255 00:e0:29:0e:83:92 le0 linux4.rz.fh-muenchen.de 255.255.255.255 00:00:c0:93:19:d3 le0 linux5.rz.fh-muenchen.de 255.255.255.255 00:00:c0:37:19:d3 le0 door2.rz.fh-muenchen.de 255.255.255.255 00:00:c0:3f:fb:a7 le0 wapserv 255.255.255.255 SP 08:00:20:23:02:88 le0 sun10.rz.fh-muenchen.de 255.255.255.255 08:00:20:86:ce:5e le0 kiosk1.rz.fh-muenchen.de 255.255.255.255 00:00:c0:60:af:d7 le0 satellit.rz.fh-muenchen.de 255.255.255.255 08:00:20:71:77:b4 le0 kaputt.rz.fh-muenchen.de 255.255.255.255 00:50:56:82:f0:f0Mit Hilfe der Option "-d" können Einträge aus dieser Tabelle gelöscht werden. Die Einträge sind jedoch nicht nicht permanent, sondem nach einer gewissen Zeit verschwinden sie wieder. Daher ist es meistens nicht notwendig einen Eintrag manuell zu entfernen.
Kernel Interface table Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flags lo 3584 0 220 0 0 0 220 0 0 0 BLRU eth0 1500 0 0 0 0 0 0 0 0 0 BRUMöchte man die Angaben numerisch, so verwendet man netstat -in. Von besonderem Interesse sind die letzten fünf Spalten. Hier werden die Anzahl von empfangenen und gesendeten Paketen, die Anzahl der dabei auftretenden Fehler, sowie die Anzahl der Kollisionen ausgegeben, in die das System verwickelt waren. Sind die Zahlen lpkts und Opkts gleich Null oder ist Opkts gleich Oerrs, so liegt ein mehr oder weniger gravierendes Hardware-Problem vor. Die Anzahl der Kollisionen sollte bei jedem System im Netz unter 5% von Opkts liegen. In die sem Fall arbeiten die Netzwerkschnittstellen effizient. Eine weitere interessante Option des netstat-Kommandos ist die Möglichkeit, sich die aktuellen Verbindungen und aktiven Server mittels der Option "-a" anzeigen zu lassen. Bei diesem Aufruf werden zunächst die zur Zeit benutzten Verbindungen ausgegeben. Dies ist dadurch gekennzeichnet, daß in der Spalte (state) der Zustand ESTABLISHED anaeaeben wird. An .schließend werden alle aktiven Server Prozesse ance-eben, d.h. alle Server, die zur Zeit erreichbar sind. Ein Auszug aus der Ausgabe von netstat -a könnte beispielsweise so aussehen:
Active Internet connections (including servers) Proto Recv-Q Send-Q Local Address Foreign Address (State) User tcp 0 0 *:netbios-ssn *:* LISTEN root tcp 0 0 *:nntp *:* LISTEN root tcp 0 0 *:auth *:* LISTEN root tcp 0 0 *:sunrpc *:* LISTEN root tcp 0 0 *:pop3 *:* LISTEN root tcp 0 0 *:www *:* LISTEN root tcp 0 0 *:finger *:* LISTEN root tcp 0 0 *:midinet *:* LISTEN root tcp 0 0 *:http-rman *:* LISTEN root tcp 0 0 *:btx *:* LISTEN root tcp 0 0 *:smtp *:* LISTEN root tcp 0 0 *:telnet *:* LISTEN root tcp 0 0 *:ftp *:* LISTEN root tcp 0 0 *:netstat *:* LISTEN root tcp 0 0 *:systat *:* LISTEN root tcp 0 0 *:printer *:* LISTEN root tcp 0 0 *:shell *:* LISTEN root tcp 0 0 *:login *:* LISTEN root tcp 0 0 *:exec *:* LISTEN root udp 0 0 *:rplay *:* udp 0 0 *:netbios-ns *:* udp 0 0 *:sunrpc *:* udp 0 0 *:ntalk *:* udp 0 0 *:talk *:* udp 0 0 *:syslog *:* raw 0 0 *:1 *:* Active UNIX domain sockets Proto RefCnt Flags Type State Inode Path unix 1 [ ACC ] SOCK_STREAM LISTENING 417 /dev/log unix 2 [ ] SOCK_STREAM CONNECTED 440 unix 2 [ ] SOCK_STREAM UNCONNECTED 441 /dev/log unix 2 [ ] SOCK_STREAM CONNECTED 499 unix 2 [ ] SOCK_STREAM UNCONNECTED 500 /dev/log unix 2 [ ] SOCK_STREAM CONNECTED 517 unix 2 [ ] SOCK_STREAM UNCONNECTED 518 /dev/logDie erste Spalte enthält das Transportprotokoll. Die zweite und dritte Spalte sagen etwas über die Anzahl der Bytes in der Empfangs- bzw. Sende-Warteschlange aus. Die nächsten beiden Spalten geben lokale und ferne Adressen einer Verbindung an. Diese Adressen bestehen aus der Internet-Adresse und der Portnummer der Kommunikationspartner. Ist der Rechner in der /etc/hosts bzw. der Dienst in der /etc/services eingetragen, so werden statt der Adressen Rechnername bzw. der Name des Services aus gegeben. Dies läßt sich durch den Aufruf von netstat -in verhindern. Handelt es sich 4611 um einen Eintrag für einen aktiven Server, so wird die lokale Adresse in der Form "*.<portnummer>" und ferne Adressen in der Form "*.*" angegeben. Diese Art der Ausgabe zeigt an, daß der entsprechende Dienst bereit ist. Bei TCP-Diensten zeigt zusätzlich die letzte Spalte an, daß der Server auf LISTEN aesetzt ist. Kommt für einen speziellen Dienst keine Verbindung zustande, obwohl andere Programme (z.B. ping) funktionieren. so kann man mittels netstat -a auf dem Zielsystem überprüfen, ob der Server dort aktiv ist. Nur dann kann eine entsprechende Verbindung überhaupt aufgebaut werden. Der Aufruf von netstat mit der Option -r listet die Routing-Tabelle auf und netstat -s liefert eine detailierte Statistik der TCP/IP-Daten. netstat -p zeigt zusätzlich an, welche Programme zu welcher Netzverbindung gehören (nur als User "root").
Zähler Gateway-Name Gateway-IP-Nummer "round-trip"-Zeit (3 Werte)Traceroute sendet jeweils drei Datenpakete. Wenn auf ein Paket keine Antwort erfolgt, wird ein Sternchen (*) ausgegeben. Ist ein Gateway nicht erreichbar, wird statt einer Zeitangabe '!N' (network unreachable) oder '!H' (host unreachable) ausgegeben. Man kann so feststellen, wo eine Verbindung unterbrochen ist, und auch, welchen Weg die Daten nehmen - wo also der Zielrechner in etwa steht. Bei grafischen Benutzerschnittstellen erfolgt die Parameterangabe über Dialogfelder und nicht in der Kommandozeile.
$ traceroute www.linux.org traceroute to www.linux.org (198.182.196.56), 30 hops max, 40 byte packets 1 space-gw2m (194.97.64.8) 2.758 ms 3.637 ms 2.491 ms 2 Cisco-M-IV.Space.Net (195.30.0.123) 6.413 ms 4.118 ms 4.107 ms 3 Cisco-M-Fe0-0.Space.Net (195.30.0.126) 4.826 ms 4.508 ms 5.53 ms 4 Cisco-ECRC-H1-0.Space.Net (193.149.44.2) 5.977 ms 6.273 ms 20.832 ms 5 munich-ebs2-s0-0-0.ebone.net (192.121.158.189) 14.415 ms 17.018 ms 8.575 ms 6 newyork-ebs1-s5-0-0.ebone.net (195.158.224.21) 137.35 ms 139.103 ms 138.14 ms 7 serial0-0-1.br1.nyc4.ALTER.NET (137.39.23.81) 137.132 ms 141.742 ms 141.207 ms 8 134.ATM2-0.XR1.NYC4.ALTER.NET (146.188.177.178) 135.375 ms 128.12 ms 165.913 ms 9 189.ATM3-0.TR1.EWR1.ALTER.NET (146.188.179.54) 141.83 ms 144.798 ms 362.469 ms 10 105.ATM4-0.TR1.DCA1.ALTER.NET (146.188.136.185) 145.321 ms 147.889 ms 152.43 ms 11 299.ATM6-0.XR1.TCO1.ALTER.NET (146.188.161.169) 354.577 ms 133.535 ms 348.647 ms 12 193.ATM8-0-0.GW2.TCO1.ALTER.NET (146.188.160.49) 152.444 ms 369.313 ms 150.106 ms 13 uu-peer.oc12-core.ai.net (205.134.160.2) 365.008 ms 509.81 ms 144.898 ms 14 border-ai.invlogic.com (205.134.175.254) 270.065 ms 341.586 ms 153.441 ms 15 router.invlogic.com (198.182.196.1) 356.496 ms 506.371 ms 532.983 ms 16 www.linux.org (198.182.196.56) 584.957 ms 300.612 ms 380.004 ms
Da nach wie vor 7-Bit-ASCII als kleinster gemeinsamer Standard für News und Mail gilt, lassen sich Binärdateien nicht ohne weiteres posten. Abhilfe schaffen hier die Programme UUENCODE und UUDECODE, mit deren Hilfe binäre Daten auf den Bereich der druckbaren ASCII-Zeichen (Großbuchstaben, Ziffern und Sonderzeichen) abbilden lassen. Es werden also Bytes in 6-Bit-Worten codiert und in Zeilen umbrochen. Die mit UUENCODE erzeugte Datei ist nun zwar größer als die Ursprungsdatei, sie läßt sich aber problemlos per News oder Mail verbreiten. Die "uuencodete" Datei enthält am Anfang eine Zeile mit Zugriffsrechte und den Dateinamen:
begin 644 camera.wav
Danach folgen die codierten Daten und als Abschluß eine Zeile
end
Eine weitere Form der Codierung findet man bei der Verbreitung von Programmquellen und anderen zusammengehörenden Texten (Programmquellen bestehen in der Regel aus mehreren Quelldateien, Manualpages, Makefile, usw.). Diese Dateien kann man zu sogenannten 'Shell-Archiven' zusammenfassen. Hier wird ein komplettes Shell-Skript gepostet, das die Dateien in Form einzelner Here-Dokumente enthält. Man startet das Skript, wodurch die einzelnen Dateien ausgepackt und meist auch noch auf Korrektheit (Prüfsumme) geprüft werden. Hier als Beispiel der Anfang eines Shell-Archivs:
#! /bin/sh
# This is a shell archive. Remove anything before this line, then
# feed it into a shell via "sh file" or similar. To overwrite
# existing files, type "sh file -c".
# Contents: bells.sh hells-bells.au.uu
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
echo If this archive is complete, you will see the following message:
echo ' "shar: End of archive."'
if test -f 'bells.sh' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'bells.sh'\"
else
echo shar: Extracting \"'bells.sh'\" \(581 characters\)
sed "s/^X//" >'bells.sh' <<'END_OF_FILE'
X#!/bin/
X
XBELL=/usr/local/sounds/hells-bells.au
XPLAY=/usr/local/bin/play
XVOL=40 XDATE=`date +%H:%M`
XMINUTE=`echo $DATE
| sed -e 's/.*://'`
XHOUR=`echo $DATE | sed -e 's/:.*//'`
X
....
Um mehrere Dateien in einer einzigen zusammenzufassen verwendet man in der Regel das tar-Kommando (Tape ARchive), nur wird hier nicht auf das Band geschrieben, sondern alle Dateien und Verzeichnisse in eine einzige Datei geschrieben (Option "f"). Analog kann ein Archiv dann wieder "ausgepackt" werden.
| tar cvf datei(en) archiv | Archiv erzeugen (c = create) |
| tar xvf archiv | Archiv auspacken (x = extract) |
| tar tvf archiv | Archiv ansehen |
Um z. B. alle Dateien des Verzeichnisses 'bin' (und dessen Unterverzeichnisse) in einem Archiv zu sichern, geben das Kommando:
tar cvf bin binaeres.tar
tar kann aber auch verwendet werden, um ganze Dateibäume auf der Platte zu verschieben:
(cd Quelldir ; tar cvf - ) | (cd Zieldir ; tar xvfp - )
Damit Übertragungszeit beim ftp gespart wird, kann man nun das Archiv noch komprimieren, wozu bei fast allen Systemen die Kommandos pack/unpack bzw. compress/uncompress existieren:
pack datei
komprimiert die Datei und ersetzt sie durch die komprimierte Version, wobei an den Namen die Endung ".z" angehängt wird. Mit
unpack datei.z
wird die Datei wiederhergestellt.
compress datei
komprimiert die Datei und ersetzt sie durch die komprimierte Version, wobei an den Namen die Endung ".Z" angehängt wird. Mit
uncompress datei.Z
wird die Datei wiederhergestellt, wobei das Ergebnis von compress wesentlich kompakter als bei pack ist.
In letzter Zeit wurde der GNU-Zip zum Standard. Er liefert bessere Ergebnisse als compress und kann auch mit pack oder compress bearbeitete Dateien bearbeiten. Die Aufrufe lauten:
gzip datei
zum Komprimieren und
gunzip datei oder gzip -d datei
zum Dekomprimieren.
Die einzige Konfigurationsdatei für den NFS-Dämon des NFS-Servers ist die Datei /etc/exports mit folgendem Format:
Verzeichnis-Pfad Rechnernamen (Optionen)Links steht das Verzeichnis, das der NFS-Server exportieren soll, beispielsweise /home/public oder /cdrom. In der Mitte stehen die Rechner, die Zugriff auf das Verzeichnis haben sollen, und danach in Klammern die Optionen. ACHTUNG: Beachten Sie das Leerzeichen zwischen den Rechnernamen und den Optionen! Nach jeder Änderung der Datei müssen Sie den Portmapper neu starten und dann den NFS-Dämon neu einlesen lassen.
Die zugriffsberechtigten Client-Rechner können Sie auf drei Arten definieren:
Die gebräuchlichsten Optionen sind:
Im folgenden Beispiel sollen folgende Zugriffe möglich sein: Auf die erste CD-ROM bekommen die Clients nur Lesezugriff. Der Rechner boss.netzmafia.de benötigt root-Zugriff auf /install knecht.netzmafia.de darf ebenfalls auf /install zugreifen, allerdings ohne daß Dateien des Benutzers root als solche erscheinen. Die Home-Verzeichnisse aller Benutzer auf dem Server exportiert der Server an alle Rechner im Subnetz, damit die Benutzer auf allen Clients das gleiche Home-Verzeichnis bekommen:
# /etc/exports
#
/cdrom *.netzmafia.de (ro)
/install boss.netzmafia.de (rw,no-root-squash) \
knecht.netzmafia.de (ro,root-squash)
/home 192.168.253.255/255.255.255.255
Beim Client werden die Verzeichnisse unter Angabe des Servernamens (durch Doppelpunkt
getrennt) eingebunden.
Das kann entweder per mount-Kommando geschehen, z. B. durch:
mount nfs.netzmafia.de:/cdrom -t nfs /opt/cdromoder in der Datei /etc/fstab, z. B.:
.
.
nfs.netzmafia.de:/cdrom /opt/cdrom nfs ro 0 0
nfs.netzmafia.de:/home /home nfs defaults 0 0
.
.
Zum Inhaltsverzeichnis |
Zum nächsten Abschnitt |