![]() |
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' oder 'mutt' arbeiten interaktiv und stellen eine komfortablere Benutzer-Schnittstelle dar. Deshalb werden sie normalerweise auf der Shell-Ebene verwendet. Bei der grafischen Benutzeroberfläche kommen Programme wie 'Thunderbird' zum Einsatz. Manchmal leisten die Kommandozeilen-Mailer aber gute Dienste; so ist der 'mutt' vorzüglich geeignet, automatisch erzeugte E-Mails mit Attachment zu versenden. Eine detaillierte Beschreibung dieser Programme würde jedoch den Rahmen dieses Skripts sprengen.
Ray Tomlinson war Computertechniker bei Bolt Beranek and Newman (BBN), einem privaten Forschungsunternehmen, das ab 1968 das Arpanet, den Vorgänger des Internets, mit entwickelte. Unter anderem entwickelte er CPYNET zum Kopieren von Dateien zwischen miteinander verbundenen Computern. CPYNET sollte erweitert werden, sodass auch Nachrichten übertragen werden können. Tomlinson kombinierte CPYNET mit dem Programm SNDMSG, das auf einem Rechner lokale Nachrichten ('Mailboxes') verwalten konnte. Um den Adressaten (local part) und den Ziel-Computer (domain part) voneinander zu trennen, nahm Tomlinson als Trennzeichen den "Klammeraffen" (@-Zeichen). Damals wurde übrigens der heutige Nutzen des E-Mail-Systems von niemandem erkannt, seine Arbeit wurde eher als Spielerei gesehen.
Wie in RFC 2821 festgelegt, darf der local-part einer E-Mail-Adresse bis zu 64 Zeichen lang sein und der domain-part bis zu 253 Zeichen. Nach RFC 2822 darf der local-part einer E-Mail-Adresse folgende Zeichen enthalten:
Ein String in Anführungszeichen muss entweder ein durch Punkt abgesondertet Teil des local-part sein oder es muss der gesamte local-part in Anführungszeichen stehen. Zum Beispiel sind abc."defghi".xyz@example.com oder "abcdefghixyz"@example.com erlaubt, abc"defghi"xyz@example.com oder abc\"def\"ghi@example.com sind verboten. Strings in Anführungszeichen werden jedoch fast nie verwendet. RFC 5321 warnt sogar davor: "a host that expects to receive mail SHOULD avoid defining mailboxes where the Local-part requires (or uses) the Quoted-string form".
Der domain-part wird dagegen restriktiver behandelt. Er ist beschränkt auf Buchstaben, Ziffern, den Punkt(.) und das Minuszeichen (-). Hier werden auch Groß- und Kleinschreibung nicht unterschieden. Anstelle eines Domaninnames darf auch eine IP-Adresse in eckigen Klammern stehen z. B. jim.beam@[192.168.222.111], obwohl diese Form der Adressierung fast nur noch von Spammern verwendet wird. Auch im domain-part sind geklammerte Kommentare erlaubt. z. B. johnny.walker@(comment)example.com.
Beispiele für gültige E-Mail-Adressen:
Beispiele für ungültige E-Mail-Adressen:
Wenn Sie jetzt mit seltsamen Mailadressen spielen wollen, denken Sie daran, dass nicht jedes Mailsystem das auch akzeptiert - selbst wenn es im RFC steht. Immerhin bin ich auch unter ***@netzmafia.de erreichbar.
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:
Auf den (Hardware-)Treiber des Netzwerk-Interface wird aus diesem Grund nicht weiter eingegangen, es soll bei den folgenden Anmerkungen bleiben. Um festzustellen, ob überhaupt ein Treiber geladen wurde, genügt das Kommando
dmesg | moredas alle Boot-Meldungen auflistet. Darin findet man auch die Meldungen zur Netzwerkkarte, z.B.:
... 8139cp 10/100 PCI Ethernet driver v0.0.6 (Nov 19, 2001) 8139cp: pci dev 00:0f.0 (id 10ec:8139 rev 10) is not an 8139C+ compatible chip 8139cp: Try the "8139too" driver instead. 8139too Fast Ethernet driver 0.9.24 PCI: Found IRQ 9 for device 00:0f.0 eth0: RealTek RTL8139 Fast Ethernet at 0xe081af00, 00:00:e8:76:2f:ea, IRQ 9 eth0: Identified 8139 chip type 'RTL-8139A' ...Aus dieser Meldung ist auch die MAC-Adresse des Netzwerk-Interface ablesbar (im Beispiel: 00:00:e8:76:2f:ea).
Um die Parameter eines Netzwerk-Interfaces anzusehen oder um eine optimale Performance zu erzielen, braucht man ein Programm, das die Konfiguration des Interfaces gestattet. Unter Linux gibt es dafür "ethtool". Leider arbeiten nicht alle Treiber mit dem Programm zusammen.
In der Regel funktioniert eine Verbindung im Ethernet auch ohne weitere Konfiguration. Um die verfügbare Bandbreite optimal auszunutzen, gilt es einige Grundregeln: Die Duplexeinstellung muss bei beiden Linkpartnern gleich sein. Also entweder beide Seiten eines Link auf Autonegotiation oder beide Seiten fest auf die selben Parameter einstellen. Viele preiswerte Switches bieten keine Einstellmöglichkeiten und arbeiten immer mit Autonegotiation. Die Netzwerkkarten der angeschlossenen Clients müssen also auch auf "Auto" stehen.
Zur Anzeige der aktuellen Parameter wird "ethtool" mit dem entsprechenden Interface als Parameter aufgerufen. Hier die Ausgabe für das Interface eth0:
netzmafia:~# ethtool eth0 Settings for eth0: Supported ports: [ TP MII ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full Supports auto-negotiation: Yes Speed: 10Mb/s Duplex: Half Port: MII PHYAD: 0 Transceiver: internal Auto-negotiation: off Supports Wake-on: d Wake-on: d
Mit ethtool ist es auch möglich, Einstellungen der Netzwerkkarte zu verändern. Das folgende Kommando stellt das Interface eth0 auf 100 MBit/s und Halbduplex ein.
ethtool -s eth0 speed 100 duplex halfFür "speed" sind die Parameter 10, 100 und 1000 erlaubt. Der Duplexmode kann auf "half" oder "full" eingestellt werden. Autonegotiation wird mit dem Paramter "autoneg on" eingeschaltet und mit "autoneg off" abgeschaltet.
ethtool -s eth0 autoneg onFür Netzwerkinterfaces die WakeOnLAN (WOL) beherrschen (siehe oben), bietet ethtool auch einige Konfigurationsoptionen. Der Benutzer kann festlegen welche Art von Frame ein Aufwachen auslösen soll und ein Kennwort für Wake-on-LAN festlegen. Nicht alle Interfaces unterstützen diese Option.
ethtool -s eth0 wol <argument>Das Argument von "wol" ist eine Kombination aus folgenden Buchstaben:
p Wake on phy activity u Wake on unicast messages m Wake on multicast messages b Wake on broadcast messages a Wake on ARP g Wake on MagicPacket(tm) s Enable SecureOn(tm) password for MagicPacket(tm) d Disable (wake on nothing).Die Option "d" löscht auch alle anderen Optionen.
ethtool -s eth0 sopass xx:yy:zz:aa:bb:ccSetzt das Wake-on-LAN-Passwort. Das Passwort wird als Folge von 6 Hexzahlen angegeben, die durch Doppelpunkte getrennt sind.
Neuere Netzwerkkarten haben mitunter die Möglichkeit, eine LED manuell blinken zu lassen. Das ist zum Identifizieren einer Karte in komplexen Umgebungen sehr hilfreich. Dazu dient der Parameter "-p":
ethtool -p eth1In den folgenden Abschnitten werden die wichtigsten Konfigurationsdateien für das Netz besprochen, wobei viele der Dateien - eventuell leicht modifiziert oder mit ähnlichem Nanen - auch bei Windows zu finden sind. Bei Linux findet man diese Daten traditionsgemäß im Verzeichnis /etc.
hostname nameSie können jedoch auch die Datei /etc/hostname mit einem Editor bearbeiten. Es ist üblich, nur den Host-Namen ohne jede Domain-Angabe zu verwenden.
Um sicherzustellen, daß alle Programme ausschließlich /etc/hosts verwenden, um die Adresse eines Systems zu suchen, müssen Sie ggf. die Datei /etc/nsswitch.conf editieren. Interessant ist die Zeile, die mit "hosts:" beginnt. Dort sollte "files dns" stehen, was bedeutet, daß erst in der lokalen Datei /etc/hosts nachgesehen und dann erst ein Nameserver kontaktiert wird. Typischerweise sieht die Datei im Ausschnitt so aus:
# /etc/nsswitch.conf # ... hosts: files dns networks: files ...Auf diese Datei wird weiter unten noch genauer eingegangen.
Die Datei hosts enthält einen Eintrag pro Zeile, bestehend aus der IP-Adresse, dem Hostnamen und einer optionalen Liste von Aliasen für den Hostnamen. Die Felder sind durch Leerzeichen oder Tabulatoren voneinander getrennt, und das Adreßfeld muß in Spalte eins beginnen. Ein Doppelkreuz (#) leitet immer einen Kommentar ein.
Namen können entweder mit voller Domainangabe (Full Qualified Domain Name, FQDN) oder relativ zur lokalen Domain sein. So ist das System sowohl unter seinem offiziellen als auch unter dem kürzeren lokalen Namen bekannt. Man kann in der Datei auch die Namen und IP-Adressen beliebiger anderer Rechner eintragen. Immer notwendig ist der Eintrag für den Rechner selbst, "127.0.0.1 localhost", denn sonst funktionieren gewisse Dienste (z.B. lpd) nicht.
Für alle folgenden Beispiele werden für die Rechnernamen Schneewittchen und die sieben Zwerge (in der englischen Fassung von Walt Disney) verwendet. Damit keine Kollision mit real existierenden Internet-Domains auftreten, kann man als Domainnamen beispielsweise "zwerge.local" nehmen. Als Netz verwenden wir das private B-Netz 172.20.y.x - und davon sogar nur ein C-Subnetz, 172.20.20.x.
Das folgende Beispiel zeigt, wie die Datei /etc/hosts im Zwergenwald aussehen könnte.
# # Hostdatei fuer Snowwhite and Friends # # IP FQDN Aliase 127.0.0.1 localhost # die Zwerge 10.27.210.17 snowwhite.zwerge.local snowwhite 10.27.210.18 doc.zwerge.local doc 10.27.210.19 happy.zwerge.local happy 10.27.210.20 bashful.zwerge.local bashful 10.27.210.21 sneezy.zwerge.local sneezy 10.27.210.22 sleepy.zwerge.local sleepy 10.27.210.23 grumpy.zwerge.local grumpy 10.27.210.24 dopey.zwerge.local dopey ...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.
Jetzt wissen Sie auch, daß der Eintrag "127.0.0.1 www.microsoft.com" in der /etc/hosts beispielsweise zu komischen Effekten führen würde (welchen?).
# /etc/networks zwergenwald 172.20.20.0Beachten Sie, daß die Namen in networks nicht mit den Hostnamen in der Datei hosts übereinstimmen und kollidieren, da manche Programme ansonsten seltsame Resultate produzieren.
In der Datei /etc/nsswitch.conf kann der Systemadministrator eine Vielzahl verschiedener Datenbanken konfigurieren. Wir besprechen hier nur diejenigen Optionen, die sich auf die Auflösung von Host- und Netzwerk-IP-Adressen beziehen. Optionen in /etc/nsswitch.conf müssen in getrennten Zeilen erscheinen, wobei die Argumente durch Leerzeichen oder Tabulatorzeichen voneinander getrennt sein müssen. Ein Doppelkreuz (#) leitet einen Kommentar ein, der sich bis zum Zeilenende erstreckt. Jede Zeile beschreibt einen bestimmten Dienst, z.B. die Auflösung von Hostnamen. Das erste Feld jeder Zeile gibt den Namen der Datenbank an und endet mit einem Doppelpunkt. Der Rest jeder Zeile enthält Optionen, die die Art des Zugriffs auf die betreffende Datenbank regeln. Die folgenden Optionen sind verfügbar:
dns | Verwendet das Domain Name System (DNS) zur Auflösung der Adresse. Das macht allerdings nur Sinn bei der Auflösung von Hostadressen, nicht von Netzadressen. Der Mechanismus benutzt die Datei /etc/resolv.conf. |
files | Durchsucht eine lokale Datei nach den Host- oder Netznamen und ihren zugehörigen IP-Adressen. Diese Option verwendet die traditionellen Dateien /etc/hosts und /etc/networks. |
nis oder nisplus | Verwendet das Network Information System (NIS) zur Auflösung einer Host- oder Netzadresse. |
In der Reihenfolge, in der die Dienste angegeben sind, werden sie auch abgefragt, wenn ein Name aufgelöst werden soll. Anspruch genommen, in der sie aufgelistet sind. Diese Liste befindet sich in der Datei /etc/nsswitch.conf in dem Abschnitt, in dem die Beschreibung der Dienste erfolgt. Die Dienste werden von links nach rechts abgefragt, und die Suche wird standardmäßig beendet, wenn ein Wert (oder Name) erfolgreich aufgelöst wurde. Zum Beispiel:
# /etc/nsswitch.conf # hosts: dns files networks: filesDieses Beispiel veranlaßt das System, Hosts zuerst im DNS zu suchen und wenn dort nichts gefunden wird, die Suche in der Datei /etc/hosts fortzusetzen. Um Netzwerknamen aufzulösen, wird ausschließlich die Datei /etc/networks benutzt.
Sie können das Suchverhalten noch genauer kontrollieren, indem Sie zusätzlich Aktionen (action items) angeben, die festlegen, welche Aktion nach dem jeweils letzten Namensauflösungsversuch durchgeführt werden soll. Auf diese Erweiterungen wird an dieser Stelle nicht weiter eingegangen.
Die wichtigste Option in /etc/resolv.conf ist daher nameserver, welche die Adresse eines Name-Servers angibt. Wenn Sie die Option mehrmals angeben, werden die Server in der angegebenen Reihenfolge verwendet. Deshalb sollten Sie unbedingt den zuverlässigsten Server an erster Stelle eintragen. Wenn Sie keinen Name-Server eintragen, nimmt der Resolver an, daß einer auf der lokalen Maschine läuft. Gegenwärtig werden bis zu drei nameserver-Einträge in /etc/resolv.conf unterstützt.
Zwei weitere Befehle, domain und search, geben Domainnamen an, die der Resolver an einen Namen anhängt, wenn die zugehörige Adresse beim ersten Versuch nicht gefunden wird. Mit domain können Sie eine Default-Domain angeben, die immer dann angehängt werden soll, wenn ein Name nicht aufgelöst werden konnte. Wird dem Resolver z.B. der Name "sleepy" übergeben, findet dieser den Namen "sleepy." nicht im DNS, da es eine solche Top-Level-Domain nicht gibt. Wird "zwerge.local" als Standarddomäne angegeben, wiederholt der Resolver seine Anfrage und hängt diese Standarddomäne an den Hostnamen an. Die Abfrage nach "sleepy.zwerge.local" ist nun erfolgreich (natürlich nur, wenn es einen Nameserver gibt).
Mit der Option search kann eine Suchliste angegeben werden, gewissermaßen eine Verallgemeinerung der domain-Anweisung. Während bei domain nur eine einzelne Domain angeben werden darf, akzeptiert search eine ganze Liste davon, deren Einträge alle der Reihe nach durchprobiert werden, bis ein gültiger DNS-Eintrag gefunden wird. Die einzelnen Namen der Liste müssen durch Leerzeichen oder Tabulatoren voneinander getrennt werden.
Die Befehle search und domain schließen einander aus und dürfen höchstens einmal auftauchen. Wenn keiner der beiden Befehle angegeben ist, versucht der Resolver, die Default-Domain mit Hilfe der Systemfunktion getdomainname(2) aus dem lokalen Hostnamen zu raten. Hat der Hostname keinen Domain-Teil, wird als Default-Domain die Root-Domain (.) angenommen.
Werfen Sie einen Blick auf die Datei resolv.conf des Zwergenwaldes:
# /etc/resolv.conf # Unsere Domain domain zwerge.local # # Wir benutzen "doc" als zentralen Name-Server: nameserver 172.20.20.1Wenn Sie in dieser Konfiguration die Adresse von "dopey" suchen, wird der Resolver erst versuchen, "dopey." nachzuschlagen, und wenn das fehlschlägt, "dopey.zwerge.local".
Zur Konfiguration der Ethernet-Schnittstellen und Initialisierung der Routing-Tabelle sind zwei Befehle von besonderer Bedeutung, nämlich ifconfig (Interface-Konfiguration) und route und deren aktueller Nachfolger ip.
ifconfig dient dazu, eine Schnittstelle für die Netzwerkschicht des Kernels sichtbar zu machen. Das beinhaltet die Zuweisung einer IP-Adresse und verschiedener anderer Parameter sowie die Aktivierung des Interface, damit der Kernel die IP-Pakete über diese Schnittstelle senden und empfangen kann. Die einfachste Art, es aufzurufen, ist:
ifconfig <interface> <ip-addresse> netmask <maske>Der Befehl weist "interface" die Adresse "ip-adresse" zu und aktiviert es. Alle anderen Parameter werden auf Standardwerte gesetzt. Fehlt die Netzmaske (netmask <maske>), wird sie aus der Netzwerkklasse der Adresse abgeleitet; für ein Klasse-B-Netz wäre das 255.255.0.0. Oftmals besteht das Kommando aber zumindest auf der Netzmaske als Parameter. Später dazu mehr.
Initialisiert wird das Loopback-Interface durch das Kommando:
ifconfig lo 127.0.0.1Sogenannte "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ß.
ifconfig kennt eine ganze Reihe von Optionen. Der allgemeine Programmaufruf lautet:
ifconfig interface [address [parameters]]interface ist der Name der zu konfigurierenden Schnittstelle, und address ist die IP-Adresse, die ihr zugewiesen werden soll. Sie kann entweder als dotted quad angegeben werden oder als Name, den ifconfig in /etc/hosts nachschlägt.
Ein Aufruf nur mit dem Interface-Namen gibt die Konfiguration des Interface aus. Wird es ganz ohne Parameter aufgerufen, zeigt es alle bisher konfigurierten Schnittstellen an; die Option -a erzwingt zusätzlich die Anzeige der inaktiven. Beispiel:
# ifconfig eth0 eth0 Link encap 10Mbps Ethernet HWaddr 00:00:C0:90:B3:42 inet addr 172.20.20.2 Bcast 172.20.20.255 Mask 255.255.255.0 UP BROADCAST RUNNING MTU 1500 Metric 0 RX packets 3136 errors 217 dropped 7 overrun 26 TX packets 1752 errors 25 dropped 0 overrun 0MTU gibt die maximale Blockgröße an. Die Metrik wird von einigen Betriebssystemen verwendet, um die Kosten einer Route zu berechnen. Linux benutzt diesen Wert bisher nicht, definiert ihn aber trotzdem aus Gründen der Kompatibilität. Die Zeilen RX und TX zeigen an, wie viele Pakete empfangen (RX - receive) bzw. gesendet wurden (TX - transmit), wie viele Fehler dabei auftraten, wie viele Pakete verworfen wurden (dropped) und wie viele wegen eines überlaufs (overrun) verlorengingen. Ein überlauf beim Empfänger tritt dann auf, wenn Pakete schneller hereinkommen, als der Kernel die Interrupts bedienen kann.
Die folgende Liste zeigt die Parameter, die ifconfig versteht; die Namen der zugehörigen Flags stehen in Klammern. Optionen, die eine bestimmte Eigenschaft des Interface aktivieren, können mit vorangestelltem Minuszeichen (-) auch benutzt werden, um ihn wieder auszuschalten.
up | Aktiviert ein Interface für die IP-Schicht des Kernels. Sie wird impliziert, wenn auf der Kommandozeile eine Adresse angegeben ist. Sie kann auch dazu benutzt werden, ein Interface zu reaktivieren, wenn es mit der down-Option temporär deaktiviert wurde. Entspricht den Flags UP und RUNNING. |
down | Markiert eine Schnittstelle als inaktiv, d.h. unzugänglich für die Netzwerkschicht. Dadurch wird jeglicher IP-Transport durch die Schnittstelle unterbunden. Beachten Sie, daß dadurch automatisch alle Routing-Einträge gelöscht werden, die diese Schnittstelle verwenden. |
netmask Maske | Weist des Interface eine Subnetzmaske zu. Sie kann entweder als eine 32-Bit-Hexadezimalzahl (mit führender 0x) oder als dotted quad (Beispiel: 255.255.255.0) angegeben werden. |
pointopoint Adresse | Wird für Punkt-zu-Punkt-Verbindungen benutzt, die nur zwei Hosts miteinander verbinden. Sie wird beispielsweise für die Konfiguration von SLIP- und PLIP-Schnittstellen benötigt und teilt dem Kernel die IP-Adresse des anderen Systems mit. Falls eine Punkt-zu-Punkt-Adresse gesetzt wurde, zeigt ifconfig das POINTOPOINT-Flag an ("pointopoint" wird wirklich so geschrieben). |
broadcast Adresse | Die Broadcast-Adresse wird normalerweise aus der Netzwerknummer gebildet, indem alle Bits des Hostanteils auf eins gesetzt werden. Einige IP-Implementierungen verwenden dagegen eine Broadcast-Adresse, bei der die Bits des Hostteils auf null gesetzt sind. Die Option broadcast dient dazu, Ihre Konfiguration an eine derartige Umgebung anzupassen. Wenn dem Interface eine Broadcast-Adresse zugeordnet wurde, gibt ifconfig das Flag BROADCAST aus. |
metric Wert | Dem Routing-Tabellen-Eintrag des Interface einen Metrikwert zuordnen. Dieser Wert wird beispielsweise vom Routing Information Protocol (RIP) berücksichtigt, wenn es Routing-Tabellen für Ihr Netz erstellt. Die Default-Metrik, die ifconfig einem Interface zuweist, ist 0. Wenn Sie das Routing in Ihrem Netz nicht mit RIP regeln, benötigen Sie diese Option nicht; aber auch sonst wird die Option selten benutzt. |
mtu Bytes | Setzen der Maximum Transmission Unit (MTU), d.h. die maximale Anzahl von Bytes, die das Interface in einer Transaktion behandeln kann. Für Ethernets liegt der Defaultwert bei 1500; für SLIP beträgt er 296. |
arp | Kann nur für Broadcast-fähige Netz wie Ethernet verwendet werden. Ermöglicht die Benutzung von ARP zur Zuordnung von IP-Adressen zu physikalischen Adressen. Für Broadcast-Netze wird sie per Voreinstellung eingeschaltet. Ist ARP abgeschaltet, zeigt ifconfig das NOARP-Flag an. -arp schaltet ARP explizit aus. |
promisc | Versetzt die Schnittstelle in den promiscous mode. Auf Broadcast-Netzen hat das zur Folge, daß die Schnittstelle alle Pakete unabhängig davon empfängt, ob sie für einen anderen Host bestimmt sind oder nicht. Dadurch kann man den Netzwerkverkehr mit Paketfiltern wie tcpdump analysieren. -promisc schaltet den Modus ab. |
allmulti | Multicast-Adressen sind wie Ethernet-Broadcast-Adressen, mit der Einschränkung, daß sie nicht automatisch jeden möglichen Adressaten berücksichtigen, sondern nur solche, die ausdrücklich zum Empfang vorgesehen (programmiert) sind. Sie eignen sich besonders für Anwendungen wie Ethernet-basierte Videokonferenzen oder Audioübertragungen übers Netz, die nur an Interessierte gerichtet sind. -allmulti schaltet Multicast-Adressen ab. |
route [add|del] [-net|-host] <target> [dev <if>]Dabei bestimmen die Argumente add bzw. del, ob die Route zu target eingetragen bzw. aus target entfernt wird. Die Optionen -net und -host teilen dem route-Kommando mit, ob target ein Netzwerk oder ein Hostrechner ist (letzteres wird angenommen, wenn Sie hier nichts angeben). Das Argument dev if ist optional und erlaubt Ihnen die Angabe einer Netzwerkschnittstelle, an die die Route gerichtet werden soll. Wenn Sie dem Kernel keine Informationen darüber geben, versucht er selbst, ein sinnvolles Argument herauszufinden.
ifconfig lo 127.0.0.1
Manchmal wird anstelle der IP-Adresse auch der Name localhost verwendet. Der Befehl ifconfig sucht diesen Namen in der Datei /etc/hosts, wo er als Hostname für 127.0.0.1 definiert sein muß.
Zur Anzeige der Konfiguration eines Interface rufen Sie ifconfig mit dem Namen des Interface auf. Ganz ohne Parameter wird die Konfiguration aller Interfaces gezeigt:
ifconfig lo lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:3924 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 Collisions:0
Nun fehlt noch ein Eintrag in der Routing-Tabelle, der festlegt, daß dieses Interface als Route für das Zielsystem 127.0.0.1 dient. Dazu geben Sie folgendes ein:
route add 127.0.0.1Es kann auch hier wieder anstelle der IP-Adresse der Namen localhost verwendet werden (sofern er in /etc/hosts eingetragen ist).
Es wäre auch möglich, das Netz von localhost einzutragen:
route add -net 127.0.0.0Als nächstes wird mit dem Programm ping getestet, ob alles einwandfrei funktioniert:
ping localhost PING localhost (127.0.0.1): 56 data bytes 64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=0.4 ms 64 bytes from 127.0.0.1: icmp_seq=1 ttl=255 time=0.4 ms 64 bytes from 127.0.0.1: icmp_seq=2 ttl=255 time=0.4 ms ^C --- localhost ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 0.4/0.4/0.4 msPakete an 127.0.0.1 werden also korrekt ausgeliefert und es erfolgt sofort eine Antwort. Das beweist, daß die erste Netzwerkschnittstelle erfolgreich konfiguriert wurde.
Die bisher beschriebenen Schritte reichen aus, um Netzwerk-Programme auf einem alleinstehenden Rechner zu benutzen. Die oben angegebenen Zeilen müssen in das Netzwerk-Initialisierungsskript eingetragen werden, damit sie beim Systemstart ausgeführt werden. In der Regel wird zumindest die Konfiguration von "lo" beim Installieren des Systems bereits erledigt. Zur Einstimmung war das obige aber keine schlechte Übung. Nun sollte zum Beispiel telnet localhost eine telnet-Verbindung aufbauen und Ihnen den Login-Prompt Ihres Systems geben.
Die Konfiguration von Ethernet-Schnittstellen geht fast genauso vonstatten wie eben. Man braucht nur ein paar Parameter mehr, um auch Subnetze verwenden zu können.
Im Zwergenwald wird vom Klasse-B-Netz nur ein C-Subnetz verwendet. Um dies dem Interface mitzuteilen, sieht der ifconfig-Aufruf so aus:
ifconfig eth0 172.20.20.2 netmask 255.255.255.0oder unter Verwendung des Namens aus /etc/hosts:
ifconfig eth0 doc netmask 255.255.255.0Dies weist des Interface eth0 die IP-Adresse von doc (172.20.20.2) zu. Hätte man die Netzmaske weggelassen, wäre sie von ifconfig aus der Netzklasse der Adresse abgeleitet worden, was den inkorrekten Wert von 255.255.0.0 ergeben hätte. Ein schneller Test ergibt jetzt:
ifconfig eth0 eth0 Link encap 10Mps Ethernet HWaddr 00:00:C0:90:B3:42 inet addr 172.20.20.2 Bcast 172.20.20.255 Mask 255.255.255.0 UP BROADCAST RUNNING MTU 1500 Metric 1 RX packets 0 errors 0 dropped 0 overrun 0 TX packets 0 errors 0 dropped 0 overrun 0ifconfig hat die Broadcast-Adresse (im Bcast-Feld angezeigt) automatisch auf den passenden Wert gesetzt, nämlich die Netzwerknummer mit einem Hostteil, bei dem alle Bits auf eins gesetzt sind. Außerdem wurde die maximale übertragungseinheit (MTU = Maximum Transmission Unit, die maximale Größe der IP-Pakete) auf das Ethernet-spezifische Maximum von 1.500 Bytes eingestellt.
Wie bereits bei der Loopback-Schnittstelle muß noch eine Route eingetragen werden. Für den Zwergenwald gilt:
route add -net 172.20.20.0Damit ist eine Route definiert, die alle Pakete, die ans Netz 172.20.20.0 gerichtet sind an die Ethernetkarte schickt. Das weiß das System, weil die Ethernetkarte ja die Adresse 172.20.20.2 hat, also die gleiche Netzadresse. Dieser Befehl ist bei modernen Versionen von ifconfig unnötig geworden, weil diese Route eben automatisch bei der Konfiguration angelegt wird.
Vielleicht haben Sie bemerkt, daß die Angabe des Interface fehlt. Der Kernel prüft alle bisher konfigurierten Interfaces und vergleicht das Zielnetz (in unserem Fall 172.20.20.0) mit der Netznummer der Interface-Adresse, d.h. dem bitweisen UND der Interface-Adresse und der Netzmaske. Die einzige Schnittstelle, bei der diese beiden Werte übereinstimmen, ist eth0.
Die Option -net ist nötig, da route sowohl Routen zu Netzwerken als auch zu einzelnen Hosts einrichten kann. Wenn man route eine IP-Adresse übergibt, versucht das Kommando festzustellen, ob es sich dabei um eine Host- oder Netzadresse handelt, indem es den Hostteil betrachtet. Ist der Hostteil null, wird angenommen, daß es sich um eine Netz-Adresse handelt, andernfalls ist es eine Hostadresse. Deshalb würde route in unserem Beispiel davon ausgehen, daß 172.20.20.0 eine Hostadresse ist (Netz: 172.20.0.0, Host: ...20.0). Da ein Subnetz verwendet wird, braucht das route-Kommando den Parameter "-net".
Unter Verwendung des Eintrags in /etc/networks wird das Kommando einfacher:
route add zwergenwald
Nun sollte man überprüfen, ob das Ethernet tatsächlich arbeitet. Wählen Sie irgendeine bereits konfigurierte Maschine auf Ihrem lokalen Ethernet, z.B. grumpy, und geben Sie folgenden Befehl ein:
# ping grumpy PING grumpy: 64 byte packets 64 bytes from 172.20.20.1: icmp_seq=0. time=10. ms 64 bytes from 172.20.20.1: icmp_seq=1. time=7. ms 64 bytes from 172.20.20.1: icmp_seq=2. time=8. ms ^C ----doc.zwerge.local PING Statistics---- 4 packets transmitted, 4 packets received, 0 packets lostWenn ping keinerlei Antwort bekommt, sollten Sie die Schnittstellenkonfiguration mit netstat überprüfen. Die Paketstatistiken, die ifconfig ausgibt, geben an, ob überhaupt Pakete über das Interface übertragen wurden. Zusätzlich sollten Sie auf beiden Maschinen mit route die Routing-Informationen überprüfen. Wenn Sie route ohne weitere Parameter aufrufen, gibt es die Routing-Tabellen aus. Die Option -n sorgt dafür, daß es Adressen numerisch anstelle der symbolischen Hostnamen darstellt:
route -n Kernel routing table Destination Gateway Genmask Flags Metric Ref Use Iface 127.0.0.1 * 255.255.255.255 UH 1 0 112 lo 172.20.20.0 * 255.255.255.0 U 1 0 10 eth0
Die Spalte "Flags" enthält eine Liste von Flags für jedes Interface. U ist für aktive Schnittstellen immer gesetzt. Ein Flag H in dieser Spalte besagt, daß die Zieladresse einen einzelnen Host bezeichnet. Wenn eine eingetragene Route benutzt wird, ändert sich der Wert im Use-Feld ständig.
Bisher wurde eine Maschine auf einem isolierten Ethernet eingerichtet (z.B. in einem Heimnetz). Der Regelfall ist allerdings, daß mehrere Netze durch Gateways miteinander verbunden sind (man will ja auch "nach draußen"). Diese Gateways verbinden zwei oder mehrere Ethernets miteinander, oder sie stellen das Tor zum Internet bereit. Um einen Gateway zu nutzen, muß der Netzwerkschicht zusätzliche Routing-Informationen zur Verfügung stehen.
Zum Beispiel sind die Ethernets des Zwergenwaldes und des Feenreichs durch solch ein Gateway miteinander verbunden, nämlich doc, der bereits konfiguriert sei. Auf allen Maschinen des Zwergenwaldes muß nur noch eine weitere Route eingetragen werden, die angibt, daß alle Maschinen im Netzwerk der Feen über doc erreichbar sind. Der entsprechende Aufruf von route sieht so aus (sofern feenreich in /etc/networks eingetragen wurde):
route add feenreich gw docDabei gibt gw an, daß das folgende Argument ein Gateway bezeichnet. Natürlich muß jedes System im Feen-Netz, zu dem Sie Verbindung aufnehmen wollen, einen analogen Routing-Eintrag für das Zwergen-Netz haben. Sonst könnten Sie nur Daten vom Zwergen-Netz an das Feen-Netz senden, die Rechner im Feen-Netz wären aber zu keiner Antwort fähig.
Das war nun ein Gateway, das Pakete zwischen zwei isolierten Netzen befördert. Nehmen Sie nun an, daß doc außerdem eine Verbindung ins Internet hat. Dann wäre es wünschenswert, daß Pakete für beliebige Zieladressen, die nicht im Zwergen-Netz liegen, an doc weitergereicht werden. Das erreicht man, indem doc zum Default-Gateway wird:
route add default gw doc oder route add default gw 172.20.20.1 bei Angabe der IP-AdresseDie Netzwerkadresse default ist eine Abkürzung für 0.0.0.0, die Default-Route. Sie paßt zu jeder Zieladresse und wird immer dann benutzt, wenn keine andere eingetragene Route paßt.
Es ist ziemlich einfach, eine Maschine als Gateway einzurichten. Nehmen wir an, wir befänden uns wieder auf doc, der mit zwei Ethernet-Karten ausgestattet ist, die jeweils mit einem der beiden Netze verbunden sind. Man muß nur beide Schnittstellen getrennt konfigurieren und ihnen eine Adresse auf dem jeweiligen Subnetz zuzuweisen. Dabei ist es recht nützlich, zusätzlich zum offiziellen Hostnamen doc zwei Namen für die beiden Schnittstellen in /etc/hosts zu definieren:
172.20.20.1 doc.zwerge.local doc doc-if1 172.20.21.1 doc-if2
Mit diesen Einträgen lautet die Befehlsreihenfolge für die Einrichtung der beiden Interfaces:
ifconfig eth0 doc-if1 ... route add zwergenwald ifconfig eth1 doc-if2 ... route add feenreichDamit Pakete überhaupt zwischen den verschiedenen Netzwerkschnittstellen vermittelt werden, bedarf es in neueren Kerneln des Kommandos
echo '1' > /proc/sys/net/ipv4/ip_forwardWenn es dann nicht funktioniert, überprüfen Sie, ob Ihr Kernel mit Unterstützung für IP-Forwarding übersetzt wurde.
Sie brauchen nicht einmal eine zweite Netzwerkkarte, denn es gibt sogenannte "Device-Aliase". Dies sind virtuelle Geräte, die mit der gleichen physischen Hardware verbunden sind, jedoch gleichzeitig aktiviert werden können, um unterschiedliche IP-Adressen zu haben. Sie werden normalerweise mit dem Gerätennahmen gefolgt von einem Doppelpunkt und einer Zahl dargestellt (zum Beispiel eth0:1). Wenn Sie einen Alias verwenden, können weder das Interface noch der Alias zur Verwendung von DHCP konfiguriert werden. eth0:1 ist der erste Alias für eth0. Der zweite Alias hätte den Namen eth0:2, usw. Die Befehle um beide Netze über eine Netzwerkkarte zu routen, würden lauten:
ifconfig eth0 doc-if1 ... route add zwergenwald ifconfig eth0:1 doc-if2 ... route add feenreich
Die Fehlermeldungen des route-Kommandos sind relativ kryptisch. Bei Linux kann - im Gegensatz zu anderen Unixen - die Metrik-Angabe entfallen. Man kann mehrere Routen zu einem Ziel (mit identischer Netzmaske) eingeben, sofern jeweils ein anderer Gateway angegeben wird.
Anmerkung: Die Syntax des route-Kommandos variiert von System zu System.
Der ip-Aufruf zeigt wie ifconfig, route und arp den aktuellen Zustand an. Der Befehl horcht auf folgende Syntax:
ip [Optionen] Objekt [Kommando [Argumente]]Nicht umsonst ist die "IP Command Reference" mehr als 60 Seiten dick ( http://linux-ip.net/gl/ip-cref/). ip kann auch komplexe Vorgänge erledigen, weshalb man beispielsweise auch kein IP-Aliasing mehr verwenden muss, um einer Schnittstelle mehrere IP-Adressen zuzuweisen. Statt mit "eth0" eth0:1" zu hantieren weisen Sie zwei IP-Adressen an eth0 folgendermaßen zu:
ip address add 129.187.206.140/24 dev eth0 ip address add 129.187.206.148/24 dev eth0Man kann auch einen Alias zuweisen, um die Abwärtskompatibilität zu den alten Tools zu erhalten:
ip address add 129.187.206.140/24 dev eth0 ip address add 129.187.206.148/24 dev eth0 label eth0:1Es folgt ein Beispiel für die Ausgabe der IP-Adressen mit dem Befehl ip address show:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0e:0c:07:e7:72 brd ff:ff:ff:ff:ff:ff inet 129.187.206.140/24 brd 129.187.206.255 scope global eth0 inet 129.187.206.148/24 brd 129.187.206.255 scope global secondary eth0:1 inet 129.187.206.149/24 brd 129.187.206.255 scope global secondary eth0:2 inet 129.187.206.152/24 brd 129.187.206.255 scope global secondary eth0:3 inet 129.187.206.153/24 brd 129.187.206.255 scope global secondary eth0:4 inet 129.187.206.154/24 brd 129.187.206.255 scope global secondary eth0:5 inet 129.187.206.156/24 brd 129.187.206.255 scope global secondary eth0:6 inet 129.187.206.157/24 brd 129.187.206.255 scope global secondary eth0:7 inet 129.187.206.158/24 brd 129.187.206.255 scope global secondary eth0:8 inet6 fe80::20e:cff:fe07:e772/64 scope link valid_lft forever preferred_lft foreverzugewiesene Adressen lassen sich auch ganz einfach löschen:
ip address del 129.187.206.157/24 dev eth0 ip address del 129.187.206.158/24 dev eth0Zusätzlich erlaubt es ip, den Namen der Netzwerkkarte selbst zu ändern. Das sollte man aber nur bei deaktivierten Karten machen, da unerwartete Effekte auftreten, wenn der Name einer aktivierten und benutzten Karte geändert wird. Um »eth0« in »test0« umzubenennen, genügen die folgenden Zeilen:
ip link set dev eth0 down ip link set dev eth0 name test0 ip link set dev test0 up
Manchmal sind die Fehlermeldungen von ip etwas irreführend, zum Beispiel:
ip address add 129.187.206.159/24 dev eth0 label eth0:1 RTNETLINK answers: File existsDie Fehlermeldung bedeutet, dass eine Adresse oder Route zu einer bereits konfigurierten Schnittstelle hinzugefügt wurde - einen entsprechende Datei gibt es nicht.
Der Befehl ip erlaubt auch fortgeschrittenes Routing wie z. B. Policy-Routing. Die Routen können mit folgendem Kommando angezeigt werden:
ip route show 129.187.206.0/24 dev eth0 proto kernel scope link src 129.187.206.140 default via 129.187.206.254 dev eth0Die erste Zeile ist eine Regel, die aussagt, dass alles nach 129.187.206.0 über 129.187.206.140 versandt werden muss (das ist ja auch die "Basisadresse" für eth0 im obigen Beispiel). Die zweite Zeile ist die Regel für die Defaultroute. Der Host 129.187.206.254 stellt dabei den Gateway dar.
Angelegt werden die Routen mittels ip route add und dann der Angabe die praktisch der Ausgabe von ip route show entspricht:
ip route add 127.0.0.0/8 dev lo scope link ip route add 129.187.206.0/24 dev eth0 proto kernel scope link src 129.187.206.140 ip route add default via 129.187.206.254 dev eth0Oft reicht für die zweite Zeile auch schon ip route add 129.187.206.0/24 dev eth0 scope link. Nachfolgend weitere Beispiele, wie Routing mit ip route konfiguriert werden kann:
Um eth0 wieder zu bekommen, bearbeiten Sie die Datei /etc/default/grub mit Ihrem Lieblingseditor. Suchen Sie nach der Zeile "GRUB_CMDLINE_LINUX..." und fügen Sie die Parameter "net.ifnames=0 biosdevname=0" hinzu. Meist ist die Zeile ursprünglich mit leerem String versehen:
GRUB_CMDLINE_LINUX=""Das ändern Sie nun in
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"Danach die Datei speichern. Nun muss die Änderung noch dem Bootloader GRUB bekannt gemacht werden. Das geschieht mit dem Kommando
sudo update-gruboder
sudo grub-mkconfig -o /boot/grub/grub.cfgDenken Sie auch daran, andere Dateien anzupassen, welche noch die ursprüngliche Bezeichnung enthalten, z. B. /etc/network/interfaces. Nach dem nächsten Reboot heissen die Netzwerkinterfaces wieder "eth0", "eth1" usw..
Das Programm update-grub erstellt die Datei grub.cfg und damit die Konfiguration für das GRUB-2-Auswahlmenü unter Verwendung der im Verzeichnis /etc/grub.d als ausführbar gesetzten Skripte. grub-mkconfig arbeitet wie update-grub, gibt beim Aufruf ohne Optionen die Konfiguration zur Kontrolle aus und erlaubt es, die Konfiguration in eine andere Datei als die grub.cfg zu schreiben.
auto lo iface lo inet loopbackSoll sich das System seien IP-Adresse etc. über einen DHCP-Server holen, so sind folgende zusätzliche Einträge notwendig: auto eth0 iface eth0 inet dhcp Will man dem Rechner über beispielsweise eth0 eine statische IP-Adresse samt zusätzlicher Optionen zuweisen, fügt man stattdessen einige Zeilen nach folgendem Muster an:
auto eth0 iface eth0 inet static address 129.187.206.10 netmask 255.255.255.0 network 129.187.206.0 broadcast 129.187.206.255 gateway 129.187.206.254 dns-nameservers 129.187.206.129 dns-search ee.hm.eduErläuterung:
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 ... 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 ... www 80/tcp http # WorldWideWeb HTTP www 80/udp # HyperText Transfer Protocol ... pop3 110/tcp # POP version 3 pop3 110/udp ... 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.
$ 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").
Ein offener Port im Status "Listen" ist ein potientielles Einfallstor für Eindringlinge. Auch Trojaner installieren gerne "Backdoors" und öffnen dazu einen freien Port. Daher ist es sehr zu empfehlen, sich von Zeit zu Zeit die offenen Ports seiner Systeme anzusehen. Für eine Kontrolle der offenen Ports ruft man "netstat -nlp" auf.
netstat -npl Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 72.139.238.24:80 0.0.0.0:* LISTEN 25671/apache tcp 0 0 72.139.238.24:21 0.0.0.0:* LISTEN 16417/ftpd tcp 0 0 72.139.238.24:22 0.0.0.0:* LISTEN 1345/sshd tcp 0 0 72.139.238.24:25 0.0.0.0:* LISTEN 26007/exim4 tcp 0 0 72.139.238.24:443 0.0.0.0:* LISTEN 1022/apache-ssl
Das System zeigt mit diesen Parameter nur Ports im Status "Listen" an. Zusätzlich wird in der letzten Spalte die Prozessnummer und der Name des zuständigen Dämons angezeigt. Alternativ kann unter Linux auch das Kommando "lsof" benutzt werden. Mit dem Aufruf
lsof -i | grep -e LISTENwird ebenfalls eine Liste der Ports im Status "Listen" angezeigt.
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
nmap -sT 192.168.1.1 Starting nmap 3.20 ( www.insecure.org/nmap/ ) at 2004-10-16 23:17 CEST Interesting ports on Router (192.168.1.1): (The 1610 ports scanned but not shown below are in state: closed) Port State Service 80/tcp open http Nmap run completed -- 1 IP address (1 host up) scanned in 6.533 secondsDer hier untersuchte IP-Host bietet einen Dienst an: HTTP auf TCP-Port 80. Auf der Maschine läuft also höchstwarscheinlich ein Webserver. Um alle TCP-Ports von 1 bis 65535 zu untersuchen ruft man nmap mit den Optionen "-sT -p 1-65535" auf. Mit der Option "-sU" sucht nmap nach offenen UDP-Ports. UDP-Scanning ist allerdings oftmals sehr langsam. Ursache hierfür ist eine Begrenzung der Anzahl der ICMP-Meldungen die ein Host pro Zeiteinheit versendet. Viele Systeme begrenzen die ICMP-Meldungen nach RFC 1812. nmap erkennt dieses Verhalten und arbeitet entsprechen langsamer um keine Meldungen zu verlieren.
Jeder Rechner im Netz (= Host) bessass eine Datei /etc/hosts.equiv, in der "vertrauenswürdige" Rechner eingetragen sind. Wollten sich Benutzer von einem dieser Rechner auf dem lokalen Computer einloggen, brauchten sie kein Passwort für den Rechner-Rechner-Übergang. Enthielt die Datei nur eine Zeile mit einem '+'-Zeichen, wurden alle Rechner akzeptiert. Gibt es keine "vertrauenswürdigen" Rechner, war jeweils die Eingabe des Login-Passwortes nötig. Außerdem funktionierte das Ganze nur, wenn man auf Quell-und Zielrechner die gleiche Benutzerkennung hat.
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.
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 (siehe nauch Kapitel 3).
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.255Beim 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 . .
export LC_ALL=C for NR in $(seq 1 254) do # Hier das gewuenschte Netz eintragen IP='192.168.1.'$NR domain=$(dig -x "$IP" +short) if [ -n "$domain" ] then echo "$IP $domain" else echo "$IP" *unbekannt* fi done
Die Programme mii-tool und ethtool geben Aufschluss über den Linkstatus der Netztwerkinterfaces. Normalerweise stellen sich Netzwerkkarte und Switch automatisch richtig aufeinander ein; in seltenen Fällen muss man aber mit einer manuellen Konfiguration nachhelfen - etwa beim Einrichten der Wake-on-Lan-Funktion.
Wird das mii-tool ohne Parameter aufgerufen, erhält man einen Report über das Interfaces. Der Parameter "-v" macht das Programm noch gesprächiger. Zum Beispiel:
# mii-tool -v eth0: 100 Mbit, full duplex, link ok product info: Intel 82555 rev 4 basic mode: 100 Mbit, full duplex basic status: link ok capabilities: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD advertising: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control link partner: 100baseTx-HD
Das ethtool liefert noch mehr Informationen als das mii-tool:
# ethtool eth0 Settings for eth0: Supported ports: [ TP MII ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full Advertised auto-negotiation: No Speed: 100Mb/s Duplex: Full Port: MII PHYAD: 1 Transceiver: internal Auto-negotiation: off Supports Wake-on: g Wake-on: g Current message level: 0x00000007 (7) Link detected: yes
Wird das ethtool mit dem Parameter "-S" aufgerufen, erhalten Sie eine ausführliche Statistik des Interface. Wenn Ihnen das schon zuviel sein sollte, erhalten Sie mit netstat -i einen kompakteren Report (siehe oben).
Übrigens - die MAC-Adresse liefern ebenfalls das ifconfig- oder das ip-Kommando.
Das Tool wget eignet sich nicht nur vorzüglich zum Zugriff auf Webseiten per Kommandozeile (es lassen sich rekursiv sogar komplette Sites "absaugen"), sondern man erhät mit dem Parmeter "-N" auch Info über die Download-Zeit.
wget -N www.testlin.de --23:07:22-- http://www.testling.de/ => `index.html' Resolving www.testling.de... done. Connecting to www.testling.de[192.168.77.33]:80... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Last-modified header missing -- time-stamps turned off. --23:07:22-- http://www.testling.de/ => `index.html' Connecting to www.testling.de[192.168.77.33]:80... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] [ <=> ] 122,150 279.36K/s 23:07:22 (279.36 KB/s) - `index.html' saved [122150]
![]() |
![]() |