Inhalt

9. Nutzung typischer PC Hardware

In diesem Kapitel sollen die typischen für Netzwerke genutzten PC Hardwaretechnologien erläutert werden.

9.1 ISDN

Das Integrated Services Digital Network (ISDN) hat in Deutschland vor allem als Ersatz für das alte analoge Telefonnetz eine recht große Verbreitung gefunden. Im Gegensatz zum alten Telefonnetz ist dieses vollständig digital ausgelegt. Auch hat man von Anfang an ISDN nicht nur zur Übermittlung von Sprache ausgelegt sondern auch für andere Dienste wie z.B. BTX, Fax oder Datenübertragung. Wie beim herkömmlichen Telefonnetz wird jeweils eine Punkt zu Punkt Verbindung zwischen zwei Teilnehmern aufgebaut.

Für die Datenübertragung ist ISDN vor allem wegen der Datenübertragungsrate von 64 kBit/s und der geringeren Störanfälligkeit interessant. Inzwischen hat das herkömmliche Telefonnetz allerdings durch die Digitalisierung der Vermittlungsstelle nachgezogen und erlaubt jetzt auch mit Modems recht »hohe« Geschwindigkeiten.

Ein ISDN-Anschluß unterteilt sich in mehrere B-Kanäle und einen D-Kanal. Die B-Kanäle dienen der eigentlichen Datenübertragung. Pro Kanal werden 64 kBit/s übertragen. Der D-Kanal hat eine Geschwindigkeit von 16 kBit/s bzw. 64 kBit/s. über ihn werden Kontrollinformationen z.B. für den Verbindungsaufbau übermittelt. Der Kunde kann zwischen verschiedenen ISDN-Anschlüssen wählen. Neben dem für Privatkunden üblichen Anschluß mit zwei B-Kanälen, gibt es noch Multiplexer Anschlüsse, die 30 B-Kanäle anhalten und damit immerhin eine Bandbreite von 2 MBit/s bieten.

Zu jedem Zeitpunkt können beliebig viele dieser Kanäle in jeder Kombination benutzt werden. So können z.B. zwei Verbindungen mit jeweils 64 kBit/s zu zwei unterschiedlichen Teilnehmern aufgebaut werden. Es können aber auch beide Kanäle zusammengefaßt werden, so daß dann eine Verbindung mit 128 kBit/s zu einem anderen Teilnehmer aufgebaut werden kann. Natürlich können auch Kanäle unbenutzt bleiben, da ja für jeden Kanal jeweils Gebühren erhoben werden, wenn er benutzt wird.

Ein Kanal kann für eingehende oder ausgehende Verbindungen genutzt werden. Das ursprüngliche Ziel hinter ISDN war es, den Telekommunikationsgesellschaften die Möglichkeit zu geben, über eine einzelne Leitung sowohl Telefondienste als auch Datendienste anzubieten, ohne daß Änderungen in der Konfiguration notwendig werden.

Es gibt unterschiedliche Wege, einen Rechner an ISDN anzuschließen. Eine Möglichkeit stellt ein »Terminal Adapter« dar. Diese werden wie analoge Modems an die serielle Schnittstelle des Rechners angeschlossen. Die meisten dieser Geräte werden wie ein Modem per AT-Befehlssatz gesteuert und benötigen deshalb keinen speziellen Treiber. Eine andere Möglichkeit ist die Verwendung einer passiven oder aktiven ISA- oder PCI-Karte. Da hier der Rechner meistens einen Teil des ISDN-Protokolls generieren muß, benötigt Linux spezielle Treiber für jeden Kartentyp.

Optionen beim Kernel kompilieren:

ISDN subsystem  --->
        <*> ISDN support
        [ ] Support synchronous PPP
        [ ] Support audio via ISDN
        < > ICN 2B and 4B support
        < > PCBIT-D support
        < > Teles/NICCY1016PC/Creatix support

Linux unterstützt eine Reihe unterschiedlicher ISDN Karten:

Für einige dieser Karten ist zusätzliche Software nötig, um sie zu betreiben. Diese muß mit speziellen Programmen geladen werden.

Weitere Details zur Konfiguration von ISDN unter Linux befinden sich im Verzeichnis /usr/src/linux/Documentation/isdn, außerdem existiert das isdn4linux FAQ, zu beziehen bei:

http://www.mhessler.de/i4lfaq

Es gibt dort eine deutsche und eine englische Version. Außerdem gibt es noch eine deutsche ISDN HOWTO.

Ein Hinweis zu PPP: PPP ist generell für den Betrieb sowohl über synchrone wie auch über asynchrone serielle Verbindungen ausgelegt. Der normalerweise in Linux-Distributionen enthaltene Daemon pppd unterstützt jedoch nur den asynchronen Modus. Wenn sie PPP über ihre ISDN Verbindung benutzen wollen, benötigen sie eine speziell angepaßte Version. Nähere Details dazu finden sie in den oben erwähnten Quellen.

9.2 PLIP

Die Namen der PLIP Devices sind plip0, plip1 usw. Das erste Device erhält die Nummer 0, die weiteren werden fortlaufend durchnumeriert.

Kerneloptionen:

Networking options  --->
    <*> PLIP (parallel port) support

PLIP (Parallel Line IP) wird - wie SLIP - benutzt, um eine Point-to-Point Netzwerkverbindung zwischen zwei Rechnern herzustellen. Im Unterschied zu SLIP werden dazu jedoch die Parallelports der Rechner verwendet. Da bei PLIP mehr als ein Bit gleichzeitig übertragen werden kann, lassen sich höhere Datenübertragungsraten als bei SLIP erreichen. Außerdem lassen sich selbst die einfachsten parallelen Druckeranschlüsse verwenden (so braucht man nicht die relativ teuren 16550AFN UART für den serielle Ports verwenden). PLIP verbraucht sehr viel Rechenleistung, hat man also die Möglichkeit billige Ethernetkarten zu nutzen, sollte man diese tun. Wie auch immer bleibt keine andere Möglichkeit, kann man PLIP zuverlässig nutzen. Bei guten Verbindungen kann man Datenraten um 20 kByte pro Sekunde erwarten.

Der PLIP Gerätetreiber konkurriert mit dem Gerätetreiber für Parallelport-Hardware. Sollen beide Treiber benutzt werden, muß man sie als Module kompilieren. Das stellt sicher, daß jedem der Treiber den entsprechenden Parallelport zuweisen kann. Für weitere Information sollte die Modules mini-HOWTO (Englisch) lesen.

Aber Vorsicht, manche Laptops verwenden Chipsätze, mit denen PLIP nicht verwendet werden kann: Sie lassen bestimmte Kombinationen von Signalen, die PLIP zum Funktionieren benötigt, nicht zu, da sie von Druckern nicht verwendet werden.

Die PLIP Schnittstelle von Linux ist kompatibel zum Crynwyr Packet Driver PLIP, d.h. man kann damit eine vollwertige TCP/IP Verbindung zwischen seinem Linux Rechner und einem DOS-Rechner aufbauen.

Bein Kompilieren des Kernels sollte man einen Blick in die Datei /usr/src/linux/driver/net/CONFIG werfen. Sie enthält Definitionen für den PLIP Timer in ms. Die Standardwerte sind zwar meist einwandfrei, insbesondere bei langsamen Rechnern wird man sie aber unter Umständen erhöhen müssen und zwar auf dem schnelleren Rechner.

Der Treiber geht von folgenden Einstellungen aus:

device  i/o addr    IRQ
------  --------    -----
plip0   0x3BC           5
plip1   0x378           7
plip2   0x278           2 (9)

Entsprechen Ihre Parallelports keiner dieser Möglichkeiten, können die Werte mit dem Befehl ifconfig und der Option irq geändert werden. Achten Sie auch darauf, daß die IRQs für den Parallelport im BIOS aktiviert sind.

Zu Konfiguration des PLIP Interface müssen die folgenden Befehle in der für das Netzwerk zuständigen rc-Datei hinzugefügt werden:

#  Konfiguriere den ersten Parallelport als 
#  PLIP Device
/sbin/ifconfig plip0 lokaleIP pointopoint \
                     remoteIP up
#
# Ende PLIP
Der Parameter »pointopoint« hat dieselbe Bedeutung wie bei SLIP: Es wird die Adresse des Rechners am anderen Ende der Verbindung angegeben. »lokaleIP« und »remoteIP« müssen natürlich durch die jeweiligen IP Adressen ersetzt werden.

Ansonsten kann man ein PLIP Interface genau wie ein SLIP Interface behandelt, einzig dip oder slattach brauchen und können nicht verwendet werden.

Wie ein für PLIP passendes Kabel auszusehen hat, wird in Abschnitt Kabel für die parallele Schnittstelle beschrieben. Obwohl man PLIP Verbindungen teilweise auch über lange Distanzen verwenden kann, sollten Sie das nach Möglichkeit vermeiden. Die Spezifikationen erlauben eine Kabellänge von etwa einem Meter. Wenn Sie dennoch längere Kabel verwenden wollen, achten Sie besonders auf elektromagnetische Störeinstreuungen (Blitz, andere Stromkabel, Radiosender), da auch dadurch eine Beeinträchtigung der Verbindung bis hin zur Beschädigung des Controllers möglich ist. Wenn sie wirklich eine Verbindung über größere Distanzen herstellen wollen oder müssen, kaufen Sie lieber zwei billige Ethernet-Karten und ein Koaxial-Kabel

PLIP für Linux-2.2

Mit der Entwicklung des Kernel 2.1 wurde die Parallelportunterstützung neu überarbeitet.

Kerneloptionen:

General setup  --->
   [*] Parallel port support
Network device support  --->
    <*> PLIP (parallel port) support

Das Verhalten des PLIP Treibers ist gleich geblieben. Es können die gleichen ifconfig und route Aufrufe benutzt werden, die im letzten Abschnitt beschrieben wurden. Durch die erweiterte Parallelportunterstützung hat sich aber die Initialisierung des Treibers verändert.

Die »erste« PLIP Schnittstelle heißt immer plip0, dabei ist die erste Schnittstelle jeweils das Gerät, welches zuerst vom System erkannt wird; ähnlich der Erkennung von Ethernet Schnittstellen. Der erkannte Parallelport ist einer aus den in /proc/parport verfügbaren Parallelports. Besitzt das System z.B. nur einen Parallelport, dann gibt es nur ein Verzeichnis namens /proc/parport/0.

Konnte der Kernel den IRQ des Parallelports nicht selbst feststellen, wird ein

insmod plip
fehlschlagen. In diesem Fall muß man die korrekte IRQ Nummer selbst in z.B. /proc/parport/0/irq eintragen und den insmod Aufruf wiederholen.

Weitergehende Informationen über die Verwaltung von Parallelports sind in der Datei Documentation/parport.txt der Kernelquellen verfügbar.

9.3 PPP

Die Namen der PPP Devices sind ppp0, ppp1 usw. Die Devices werden fortlaufend durchnumeriert, beginnend mit 0 für das erste konfigurierte Device.

Optionen beim Kernel kompilieren:

Networking options  --->
    <*> PPP (point-to-point) support

Die Konfiguration von PPP wird im PPP HOWTO beschrieben.

Permanente Netzverbindungen mit pppd

Falls Sie sich in der glücklichen Lage befinden, eine mehr oder weniger dauerhafte Netzanbindung zu haben, gibt es eine sehr einfache Möglichkeit, daß der Rechner automatisch eine neue PPP Verbindung aufbaut, wenn diese zusammenbrechen sollte.

Dabei muß PPP derart konfiguriert werden, daß es vom root durch einen einfachen Befehl gestartet werden kann:

pppd
Stellen Sie sicher, daß sie in der Datei /etc/ppp/options die Option -detach eingetragen haben. Dann fügen sie die folgende Zeile bei den getty-Definitionen in die Datei /etc/inittab ein:
pd:23:respawn:/usr/sbin/pppd
Dadurch wird der Daemon pppd laufend von init überwacht und im Falle eines Verbindungsabbruches automatisch neu gestartet.

9.4 SLIP Client

Hinweis: das SLIP Protokoll ist heute inzwischen fast vollständig vom PPP Protokoll abgelöst worden.

Die Namen der SLIP Devices sind sl0, sl1 usw. Das erste konfigurierte Device erhält die Nummer 0, weitere werden fortlaufend durchnumeriert.

Optionen beim Kernel kompilieren:

Network device support  --->
    [*] Network device support
    <*> SLIP (serial line) support
    [ ]  CSLIP compressed headers
    [ ]  Keepalive and linefill
    [ ]  Six bit SLIP encapsulation

SLIP (Serial Line IP) ermöglicht TCP/IP Verbindungen über serielle Leitungen wie Telefonleitungen (mit Modem) oder gemietete Standleitungen. Um es zu benutzen, benötigt man einen SLIP-Server möglichst in der näheren Umgebung. Viele Universitäten und einige Firmen bieten einen solchen Service an.

SLIP verwendet die serielle Schnittstelle des Rechners, um Datenpakete zu versenden. Dafür muß man diese Schnittstelle kontrollieren können. Wie sind die SLIP-Namen den seriellen Schnittstellen zugeordnet? Der Netzwerk Code verwendet einen ioctl() (I/O Control) Aufruf, um die serielle Schnittstelle in ein SLIP-Device »umzuschalten«. Es gibt zwei Programme, die diese Aufgabe übernehmen: dip und slattach.

dip

dip (Dialup IP) ist ein intelligentes Programm, das die Übertragungsgeschwindigkeit der seriellen Schnittstelle einstellen kann, das Modem zum Wählen veranlaßt, automatisch die eingehenden Meldungen der Gegenstelle nach den notwendigen Informationen wie der IP-Adresse durchsucht und die notwendigen ioctl() Aufrufe ausführt, um die Schnittstelle in den SLIP Modus zu schalten. dip unterstützt eine umfangreiche Skript-Sprache und kann dadurch den gesamten Login-Prozeß automatisieren.

Für verschiedene Linux Distributionen ist dip unter

metalab.unc.edu:/pub/Linux/distributions

in den jeweiligen Distributionsverzeichnissen verfügbar.

Zur Installation gehen Sie wie folgt vor; zuerst wird das Paket entpackt:

cd /usr/src
gzip -dc dip337o-uri.tgz | tar xvf -
cd dip-3.3.7o
Nur muß der Makefile an die eigenen Bedürfnisse angepaßt werden. Schließlich wird das Programm kompiliert und installiert:
make
make install

Das Makefile nimmt die Existenz einer Gruppe uucp an, dies kann aber leicht z.B. in dip oder SLIP umgeändert werden.

slattach

Im Gegensatz zu dip ist slattach ein extrem einfaches Programm. Es ist einfach zu benutzen, bietet aber nicht den Komfort oder die Skript-Fähigkeit von dip. Alles was es macht, ist, die serielle Schnittstelle als SLIP Device zu konfigurieren. Dabei setzt es voraus, daß Sie alle notwendigen Informationen besitzen, und daß die Verbindung bereits aufgebaut ist, wenn es gestartet wird. slattach ist optimal geeignet, wenn sie eine dauerhafte Verbindung zu ihrem Server haben.

Wann benutze ich welches Programm?

dip bietet sich an, wenn die Verbindung zum SLIP Server über ein Modem oder eine andere temporäre Leitung aufgebaut wird. slattach ist eher für feste Verbindungen, ein fest installiertes Kabel etwa, oder eine gemietete Leitung geeignet. Für Fälle also, in denen keine besonderen Aktionen notwendig sind, um die Verbindung aufzubauen. Weitere Informationen finden sich in dem Abschnitt Dauerhafte SLIP Verbindungen mit slattach.

Die Konfiguration von SLIP ist bis auf ein paar kleine Ausnahmen sehr ähnlich zur Konfiguration eines Ethernet Device.

Zunächst unterscheiden sich SLIP Verbindungen von Ethernet Netzwerken dadurch, daß an einem SLIP-»Netzwerk« immer nur zwei Rechner beteiligt sind. Außerdem sind bei SLIP Verbindungen oft zusätzliche Maßnahmen notwendig, um die Netzverbindung zu aktivieren, wohingegen bei einer Ethernet Netzwerk die Verbindung bereits mit dem Einstecken der Kabel besteht.

Wenn Sie dip verwenden, wird der Verbindungsaufbau normalerweise nicht bereits beim Booten vorgenommen sondern erst zu einem späteren Zeitpunkt, wenn eine Netzverbindung benötigt wird. Es ist auch dann möglich, diesen Vorgang zu automatisieren. Falls Sie slattach verwenden, werden Sie vermutlich lieber einen speziellen Abschnitt in der Datei rc.inet1 einfügen wollen. Dies wird etwas später beschrieben.

Es gibt zwei unterschiedliche Arten von SLIP Servern: Solche, die die Adressen dynamisch vergeben, und solche, die statische Adressen verwenden. Praktisch jeder SLIP Server wird sie beim Login auffordern, ihren Benutzernamen sowie ihr Paßwort einzugeben. dip kann diese Loginprozedur übernehmen und automatisch durchführen.

Statische SLIP Server und dip

Bei einem statischen SLIP Server bekommen Sie eine IP Adresse für ihre alleinige Verwendung zugewiesen. Bei jedem Verbindungsaufbau zum Server bekommen Sie also diese feste Adresse. Der statische SLIP Server wird also ihren Modem-Anruf entgegennehmen, die normale Login-Prozedur durchführen und dann alle Datagramme an ihre IP Adresse über diese Leitung routen. Wenn Sie Zugang zu einem solchen statischen Server haben, sollten Sie einen festen Eintrag mit ihrem Rechnernamen und der IP Adresse in der Datei /etc/hosts einfügen. Auch in den folgenden Dateien sollten Sie entsprechende Konfigurationsänderungen vornehmen: rc.inet2, host.conf, resolv.conf, /etc/HOSTNAME sowie rc.local. Denken Sie auch daran, daß bei der Konfiguration von rc.inet1 keine besonderen Befehle zur Konfiguration der SLIP Verbindung benötigt werden, dies wird zur gegebenen Zeit von dip erledigt. Dazu müssen ihm lediglich die notwendigen Informationen mitgeteilt werden, dann wird die Konfiguration automatisch durchgeführt, nachdem die Einwählprozedur beendet ist.

Falls Ihr SLIP Server statische Adressen verwendet, können Sie den folgenden Abschnitt überspringen und gleich den Abschnitt Die Benutzung von dip lesen.

Dynamische SLIP Server und dip

Ein dynamischer SLIP Server vergibt die IP Adressen zufällig aus einem Pool von vorhandenen Adressen. Es gibt also keine Garantie, daß man bei jeder Verbindung eine bestimmte IP Adresse zugewiesen bekommt. Die von Ihnen bei einer Sitzung verwendete Adresse kann, nachdem Sie die Verbindung beendet haben, von einem anderen Benutzer verwendet werden. Der Administrator des SLIP Servers hat für diesen Zweck einen Pool von IP Adressen reserviert, und bei einem Verbindungsaufbau bekommen Sie die erste freie Adresse zugewiesen. Diese wird dem Anrufer nach dem Verbindungsaufbau übermittelt und ist für ihn für die Dauer der Verbindung reserviert.

Die Konfiguration verläuft hier recht ähnlich wie im Falle von statischen SLIP Servern, allerdings muß in einem zusätzlichen Schritt die zugewiesene IP Adresse ermittelt werden, um das SLIP Device entsprechend zu konfigurieren.

Auch in diesem Fall übernimmt dip den schwierigen Teil. Die neueren Versionen sind intelligent genug, um nicht nur den Verbindungsaufbau durchzuführen, sondern auch automatisch die übermittelte IP Adresse zu erkennen und damit das SLIP Device zu konfigurieren.

Die Benutzung von dip

Wie bereits erwähnt, handelt es sich bei dip um ein mächtiges Programm, welches den aufwendigen Prozeß des Einwählens in einen SLIP Server, die Loginprozedur sowie die Konfiguration des SLIP Device vereinfachen und automatisieren kann.

Um dip zu verwenden, benutzt man im Allgemeinen ein dip-Skript, das eigentlich nur aus einer Liste von Kommandos besteht, die dip versteht, und die ihm mitteilen, wie die notwendigen Aktionen durchgeführt werden sollen. Die Datei sample.dip, die Bestandteil des Paketes ist, vermittelt einen ersten Eindruck, wie das vor sich geht. dip ist ein Programm mit vielen Optionen. Sie alle hier aufzulisten, wäre müßig. Lesen Sie dazu bitte die Manual Page, die Beispieldatei sowie die Datei README des dip-Paketes.

Sie werden feststellen, daß die Beispieldatei sample.dip von einem statischen SLIP Server ausgeht, die verwendete IP Adresse also bereits bekannt sein muß. Für dynamische SLIP Server gibt es in den neueren Versionen von dip ein spezielles Kommando, mit dem man automatisch die IP Adresse aus den Antworten des Servers extrahieren kann, um damit dann das SLIP Device zu konfigurieren. Das folgende Skript ist eine veränderte Version der Datei sample.dip, die mit der Version dip337j-uri.tgz ausgeliefert wird. Sie stellt vermutlich einen ausreichenden Startpunkt für alle dar, die einen dynamischen SLIP Server verwenden. Speichern Sie es unter dem Namen /etc/dipscript und verändern Sie es entsprechend ihrer eigenen Konfiguration:

#
# sample.dip    Programm für Dialup IP Verbindung
#
#       Dieses Datei zeigt, wie DIP verwendet wird.
#
#       Für dynamische Server vom Typ Annex sollte diese
#       Datei funktionieren. Falls Sie einen statischen 
#       Server mit statischen Adressen verwenden, 
#       benutzen Sie die Datei sample.dip, die als Teil 
#       des dip337-uri.tgz Paketes ausgeliefert wird.
#
#
# Version: @(#)sample.dip       1.40    07/20/93
#
# Autor: Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
#

main:
# Lege Namen und Adresse des Servers fest.
# Mein Server heißt "xs4all.hacktic.nl" (== 193.78.33.42).
get $remote xs4all.hacktic.nl
# Setze die Netzmaske fuer sl0 auf 255.255.255.0.
netmask 255.255.255.0
# Lege die verwendete serielle Schnittstelle und die
# Geschwindigkeit fest.
port cua02
speed 38400

# Reset für das Modem und die Terminal Verbindung.
# Das verursacht bei manchen Anwendern Probleme!
reset

# Hinweis: Standardmäßig vordefinierte "errlevel" 
# Werte sind:
#  0 - OK
#  1 - CONNECT
#  2 - ERROR
#
# Man kann sie ändern. Suchen Sie (mit grep) nach
# "addchat()" in *.c

# Vorbereitung zum Wählen
send ATQ0V1E1X4\r
wait OK 2
if $errlvl != 0 goto modem_trouble
dial 555-1234567
if $errlvl != 1 goto modem_trouble

# Die Verbindung wurde aufgebaut, jetzt der Login
login:
sleep 2
wait ogin: 20
if $errlvl != 0 goto login_trouble
send MYLOGIN\n
wait ord: 20
if $errlvl != 0 goto password_error
send MYPASSWD\n
loggedin:

# Login erfolgreich
wait SOMEPROMPT 30
if $errlvl != 0 goto prompt_error

# Setze den Server in den SLIP Modus
send SLIP\n
wait SLIP 30
if $errlvl != 0 goto prompt_error

# Ermitteln der vom Server zugewiesenen IP Adresse
#   Dabei wird vorausgesetzt, daß der Server diese 
#   Adresse nach dem Umschalten in den SLIP Modus 
#   ausgibt.
get $locip remote 30
if $errlvl != 0 goto prompt_error

# Setzen der Arbeitsparameter fuer SLIP
get $mtu 296
# Dies stellt sicher, daß ein 
#    "route add -net default xs4all.hacktic.nl"
# durchgeführt wird. 
default

# Wir sind da! Starte SLIP
done:
print CONNECTED $locip ---> $rmtip
mode CSLIP
goto exit

prompt_error:
print TIME-OUT beim Starten von sliplogin...
goto error

login_trouble:
print Probleme beim Warten auf den Login: Prompt...
goto error

password:error:
print Probleme beim Warten auf den Password: Prompt...
goto error

modem_trouble:
print Probleme mit dem Modem
error:
print CONNECT mit $remote gescheitert!
quit

exit:
exit

Dieses Skript geht von einer Verbindung zu einem dynamischen SLIP Server aus. Für statische SLIP Server verwenden Sie bitte die Datei sample.dip aus dem Paket dip337j-uri.tgz.

Wenn dip den Befehl get $local erhält, durchsucht es sämtlichen eingehenden Text von der anderen Seite auf eine Zeichenkette, die wie eine IP Adresse aussieht, also Zahlen, die durch Punkte getrennt sind. Diese Veränderung wurde eingeführt, damit der Verbindungsaufbau auch für dynamische SLIP Server automatisiert werden kann.

Das obige Beispiel konfiguriert automatisch einen Default Route Eintrag über das SLIP Device. Entspricht das nicht ihren Wünschen, z.B. weil Sie außerdem noch eine Ethernet Verbindung haben, die ihre Default Route darstellt, entfernen Sie die Zeile default aus dem Skript. Nachdem das Skript beendet ist, können Sie mit dem Befehl ifconfig verifizieren, daß ein Device sl0 existiert. Dieses Device können Sie dann mit den üblichen ifconfig und route Befehlen Ihren Wünschen entsprechend konfigurieren.

Beachten Sie auch, daß sie mit dip mittels des mode Befehles unterschiedliche Protokolle nutzen können. Das am häufigsten verwendete ist wohl cSLIP für SLIP mit Komprimierung. Eine solche Einstellung muß aber auf beiden Seiten identisch sein, verwenden Sie also die Einstellung ihres Servers.

Das Beispiel ist recht robust und sollte die meisten Fehler abfangen. Bei weiteren Fragen informieren Sie sich bitte über die Manual Page zu dip. Selbstverständlich kann ein solches Skript auch derart erweitert werden, daß bei einem gescheiterten Einwahlversuch erneut gewählt wird, oder sogar eine andere Nummer angerufen wird.

Dauerhafte SLIP Verbindungen mit slattach

Wenn sie zwei Rechner direkt über ein Kabel miteinander verbinden, oder in der glücklichen Lage sind, über eine gemietete Standleitung mit dem Internet verbunden zu sein, können Sie sich die aufwendige Prozedur mit dip ersparen. slattach ist ein extrem einfach zu benutzendes Programm, das gerade genug Funktionalität bietet, um die Verbindung richtig zu konfigurieren.

Da es sich um eine dauernde Verbindung handelt, ist der einfachste Weg, die Befehle zur Konfiguration in der Datei rc.inet1 einzubauen. Im Prinzip besteht diese Konfiguration lediglich darin, sicherzustellen, daß die serielle Schnittstelle mit der korrekten Geschwindigkeit betrieben und in den SLIP Modus umgeschaltet wird. Mit slattach erreichen sie dies mit einem einzigen Befehl. Fügen Sie einfach folgende Zeilen in ihr rc.inet1 ein:

#
# Aufbau einer dauerhaften statischen SLIP Verbindung
#
# Konfiguriere /dev/cua0 für 19.2kbps und CSLIP

/sbin/slattach -p cslip -s 19200 /dev/cua0 &
/sbin/ifconfig sl0 IPA.IPA.IPA.IPA pointopoint \
               IPR.IPR.IPR.IPR up

# Ende statisches SLIP.

Hierbei ist:

IPA.IPA.IPA.IPA

Ihre IP Adresse;

IPR.IPR.IPR.IPR

die IP Adresse des anderen Rechners.

slattach weist dem angegebenen seriellen Device das erste freie SLIP Device zu, beginnend mit sl0. Der erste Aufruf von slattach konfiguriert also das Device sl0, ein weiterer Aufruf sl1 usw.

Mit slattach können mittels der Option -p eine Reihe von Protokollen eingestellt werden. Im Normalfall sind das meist SLIP oder cSLIP, je nachdem ob Komprimierung verwendet werden soll oder nicht. In jedem Fall muß aber auf beiden Seiten dieselbe Einstellung verwendet werden.

9.5 SLIP Server

Hinweis: das SLIP Protokoll ist heute inzwischen fast vollständig vom PPP Protokoll abgelöst worden.

Wenn Sie einen Rechner mit Netzwerkzugang besitzen, über den Sie anderen Nutzern die Einwahl in das Netz ermöglichen wollen, müssen Sie diesen Rechner als Server konfigurieren. Wenn Sie für die Verbindung als serielles Protokoll SLIP verwenden wollen, haben Sie drei Möglichkeiten unterschiedliche Möglichkeiten für diese Konfiguration. Ich würde den ersten Vorschlag, sliplogin, bevorzugen, da er am einfachsten zu realisieren und zu verstehen ist. Aber treffen Sie ihre eigene Entscheidung.

SLIP Server mit sliplogin

sliplogin können Sie anstelle der normalen Login-Shell für Nutzer verwenden, die sich in ihren Rechner einwählen. Das Programm schaltet automatisch die serielle Verbindung in den SLIP Modus und bietet Unterstützung sowohl für statische als auch für dynamische IP Adressenvergabe.

Der Benutzer führt einen normalen Login-Prozeß durch, also Eingabe von Benutzerkennung und Paßwort. Aber statt dann eine Shell vorgesetzt zu bekommen, wird sliplogin gestartet, das in der Datei /etc/slip.hosts nach einem Eintrag für den anrufenden Benutzer sucht. Wird dieser gefunden, wird die Verbindung als 8 Bit Clean konfiguriert und über einen ioctl Aufruf in den SLIP Modus geschaltet. Danach startet sliplogin als letzten Schritt ein Skript, in dem das SLIP Device mit den entsprechenden Parametern (IP Adresse, Netmask, Routing) konfiguriert wird. Dieses Skript heißt üblicherweise /etc/slip.login, aber wie auch bei getty können Sie für Benutzer, die einer besonderen Behandlung bedürfen, eigene Skripts unter dem Namen /etc/slip.login.loginname anlegen, die dann anstelle des Standardskriptes gestartet werden.

Es gibt vier bzw. fünf Dateien, die konfiguriert werden müssen, damit sliplogin richtig funktioniert:

/etc/passwd

Enthält die Accounts der Benutzer.

/etc/slip.hosts

Hier stehen die für jeden Nutzer spezifischen Informationen für SLIP.

/etc/slip.login

Dieses Skript regelt die Routing Konfiguration für die Nutzer.

/etc/slip.tty

Diese Datei wird nur bei der Verwendung von dynamischer Adreßvergabe benötigt und enthält eine Tabelle mit benutzbaren Adressen.

/etc/slip.logout

Hier stehen die Kommandos, um die Verbindung bei einem Logout oder bei Fehlern korrekt zu beenden.

Bezugsquellen für sliplogin

Eventuell ist sliplogin bereits Bestandteil ihrer Linux-Distribution. Wenn dieses nicht der Fall ist, bekommt man es von:

metalab.unc.edu:/pub/Linux/system/Network/serial/

Die tar-Archiv enthält Quellen, vorkompilierte Binärprogramme und die Manual Page.

Um sicherzustellen, daß nur autorisierte Nutzer sliplogin benutzen können, sollten Sie in der Datei /etc/group einen Eintrag wie diesen hier vorsehen:

slip::13:radio,fred

Bei der Installation von sliplogin wird das Makefile die Eigentumsrechte für sliplogin auf die Gruppe slip setzen. Dadurch können nur Nutzer, die in dieser Gruppe sind, das Programm ausführen. Im oben angeführten Beispiel wären das die Nutzer radio und fred.

Um die Programme im Verzeichnis /sbin und die Manual Pages in der Sektion 8 zu installieren, gehen Sie folgendermaßen vor. Zuerst wird das Paket entpackt:

cd /usr/src
gzip -dc .../sliplogin-2.1.1.tar.gz | tar xvf -
cd sliplogin-2.1.1
Nun wird das Makefile editiert, falls Sie keine Shadow Paßwörter verwenden. Schließlich kann das Paket installiert werden:

make install

Falls Sie die Programme vor der Installation selber neu übersetzen wollen, fügen Sie vor dem make install noch ein make clean ein. Sollen die Programme in eine anderes Verzeichnis installiert werden, müssen Sie im Makefile die Regel install entsprechend editieren.

Lesen Sie bitte auch die Datei README, die zum Paket gehört.

Anpassung von /etc/passwd für SLIP Hosts

Normalerweise richtet man für jeden Benutzer von SLIP einen speziellen Account in /etc/passwd ein. Eine Konvention hierbei ist es, als Benutzernamen ein großes S, gefolgt vom Namen des einwählenden Rechners, zu verwenden. Ein Rechner mit dem Namen radio bekommt also folgenden Eintrag:

Sradio:FvKurok73:1427:1:radio SLIP login:/tmp:/sbin/sliplogin

Diese Konvention ist allerdings nicht zwingend. Sie können jeden beliebigen Namen verwenden, der ihnen aussagekräftig genug erscheint.

Hinweis: Der Anrufer benötigt kein besonderes Heimatverzeichnis, da er von diesem Rechner niemals eine Shell zu Gesicht bekommen wird. /tmp ist deshalb eine gute Wahl für diesen Zweck. Beachten Sie auch den Eintrag /sbin/sliplogin als Login-Shell.

Konfiguration von /etc/slip.hosts

In der Datei /etc/slip.hosts sucht sliplogin nach Einträgen, die dem Namen des Anrufers entsprechen. In dieser Datei werden IP Adresse und Netmask festgelegt, die dem Anrufer zugewiesen werden. Das folgende Beispiel enthält Einträge für zwei Rechner, radio und albert, wobei letzterem die IP Adresse dynamisch zugewiesen wird:

#
Sradio   44.136.8.99   44.136.8.100  255.255.255.0  normal      -1
Salbert  44.136.8.99   DYNAMIC       255.255.255.0  compressed  60
#

Die einzelnen Einträge sind:

  1. Login-Name des Anrufers
  2. IP Adresse des Servers
  3. IP Adresse, die dem Anrufer zugeteilt wird. Enthält dieses Feld den Eintrag DYNAMIC, wird die IP Adresse basierend auf den Informationen in der Datei /etc/slip.tty bestimmt. Aber Vorsicht, das funktioniert erst ab Version 1.3 von sliplogin.
  4. Netmask für den Anrufer in Dezimalpunktschreibweise, für ein Klasse-C Netz also 255.255.255.0.
  5. Verwendeter SLIP Modus, hier können Kompression sowie einige andere Besonderheiten eingestellt werden.
  6. Timeout: Hier kann man einstellen, wie lange eine Verbindung unbenutzt sein darf (d.h. es werden keine Datagramme gesendet/empfangen), bevor die Verbindung automatisch unterbrochen wird. Ein negativer Wert verhindert das automatische Unterbrechen.
  7. Optionale Argumente

In den Feldern 2 und 3 können sowohl Rechnernamen als auch IP Adressen in Dezimalpunktschreibweise stehen. Wenn Sie Rechnernamen verwenden, müssen diese allerdings auflösbar sein, d.h. der Server muß in der Lage sein, die zu dem Namen gehörende IP Adresse herauszufinden. Überprüfen können Sie dies z.B. durch ein telnet auf diesen Rechnernamen. Bekommen Sie dann die Meldung »Trying nnn.nnn.nnn...«, hat ihr Rechner den Namen einwandfrei aufgelöst. Bekommen Sie hingegen die Meldung »Unknown host«, ist der Versuch fehlgeschlagen. Dann verwenden Sie entweder direkt die IP Adresse, oder stellen Sie ihr Name Resolving so ein, daß der Name gefunden wird. Wie das geht, wird im Abschnitt Konfiguration der Namensauflösung erläutert.

Die am häufigsten verwendeten Einstellungen für den SLIP Modus sind

normal

Für normales, unkomprimiertes SLIP.

compressed

Um die van Jacobsen Header Kompression (cSLIP) zu aktivieren.

Die beiden Optionen schließen sich natürlich wechselseitig aus. Für weitere Informationen lesen Sie bitte die Manual Pages.

Konfiguration der Datei /etc/slip.login

Hat sliplogin einen passenden Eintrag in /etc/slip.hosts gefunden, wird es als nächstes versuchen, das Skript /etc/slip.login zu starten, um die SLIP Schnittstelle mit den notwendigen Parametern IP Adresse und Netmask zu konfigurieren.

Die mit dem Paket gelieferte Beispieldatei sieht folgendermaßen aus:

#!/bin/sh -
#
#       @(#)slip.login  5.1 (Berkeley) 7/1/90
#
# Generische login Datei für eine SLIP Verbindung. 
# sliplogin ruft das Skript mit folgenden Parametern auf:
#     $1       $2       $3    $4, $5, $6 ...
#   SLIPunit ttyspeed   pid   die Argumente aus 
#                             dem Eintrag in slip.host
#
/sbin/ifconfig $1 $5 pointopoint $6 mtu 1500 -trailers up
/sbin/route add $6
arp -s $6 <hw_addr> pub
exit 0
#

Sie werden feststellen, daß dieses Skript ganz einfach nur die Befehle ifconfig und route verwendet, um das SLIP Device zu konfigurieren, genau wie das auch bei der Verwendung von slattach der Fall wäre.

Beachten Sie auch die Verwendung von Proxy ARP. Damit wird sichergestellt, daß andere Rechner, die am selben Ethernet Netzwerk wie der Server angeschlossen sind, den einwählenden Rechner erreichen können. Ist ihr Server nicht an ein Ethernet Netz angeschlossen, können Sie diese letzte Zeile ganz auslassen.

Konfiguration von /etc/slip.logout

Falls die Verbindung zusammenbricht, sollten Sie sicherstellen, daß die serielle Schnittstelle in ihren Normalzustand zurückversetzt wird, damit der nächste Anrufer sich ganz normal einloggen kann. Dieses erreichen Sie mit dem Skript /etc/slip.logout. Es hat ein sehr einfaches Format und wird mit denselben Parametern wie /etc/slip.login aufgerufen, auch wenn davon nur ein paar verwendet werden.

#!/bin/sh -
#
#               slip.logout
#
/sbin/ifconfig $1 down
arp -d $6
exit 0
#

Alles was es macht, ist das Interface herunterzufahren, wodurch automatisch auch die vorher angelegte Route gelöscht wird. Den hier ebenfalls enthaltenen arp Aufruf können Sie auch wieder löschen, falls Sie nicht an ein Ethernet Netzwerk angeschlossen sind.

Konfiguration von /etc/slip.tty

Falls Sie dynamische IP Adressen verwenden, also mindestens einen der Rechner mit dem Eintrag DYNAMIC konfiguriert haben, dann müssen Sie auch die Datei /etc/slip.tty konfigurieren, indem Sie dort alle zur Auswahl stehenden Adressen auflisten. Sie benötigen diese Datei aber nur für die dynamische Vergabe von IP Adressen.

Die Datei ist eine Tabelle, die die tty-Devices auflistet, über die SLIP Verbindungen eingehen können, und die IP Adresse, die einem Anrufer auf dem jeweiligen Port zugewiesen wird:

# slip.tty    tty -> IP Adressenzuweisung für 
#                    dynamisches SLIP
# Format: /dev/tty?? xxx.xxx.xxx.xxx
#
/dev/ttyS0      192.168.0.100
/dev/ttyS1      192.168.0.101
#

Das vorstehende Beispiel legt also fest, daß all denjenigen Anrufern, die sich über den Port /dev/ttyS0 einwählen und in dem entsprechenden Feld in der Datei /etc/slip.hosts den Eintrag DYNAMIC haben, die IP Adresse 192.168.0.100 zugewiesen bekommen.

Dadurch benötigt man nur eine Adresse je zur Verfügung stehenden Port und kann so die Anzahl der belegten Adressen klein halten.

SLIP Server mit dip

Zu Beginn ein Hinweis: Einige der in diesem Abschnitt gegebenen Informationen entstammen der Manual Page von dip, in der ebenfalls eine kurze Anleitung gegeben wird, wie Linux als SLIP Server konfiguriert werden kann. Alle Angaben hier beziehen sich auf die Version dip337o-uri.tgz und gelten nicht automatisch für andere Versionen dieses Paketes.

dip hat einen speziellen Eingabemodus, in dem es für denjenigen, der es gestartet hat, automatisch alle notwendigen Informationen aus der Datei /etc/diphosts zusammensucht, um die serielle Verbindung zu konfigurieren und in den SLIP Modus zu schalten. Dieser besondere Modus wird aktiviert, wenn das Programm unter dem Namen diplogin gestartet wird. Um dip auf eine Server zu verwenden, müssen Sie also lediglich besondere Accounts einrichten, die diplogin als Login-Shell verwenden.

Dafür muß zunächst ein symbolischer Link angelegt werden:

ln -sf /usr/sbin/dip /usr/sbin/diplogin
Dann müssen entsprechende Einträge in /etc/passwd und /etc/diphosts vorgenommen werden.

Für jeden Benutzer wird - wie auch bei sliplogin - ein Account angelegt. Konvention ist auch hier, den Nutzernamen mit einem großen S zu beginnen. Das sieht dann etwa so aus:

Sfredm:ij/SMxiTlGVCo:1004:10:Fred:/tmp:/usr/sbin/diplogin
^^         ^^        ^^  ^^   ^^   ^^   ^^
|          |         |   |    |    |    \__ diplogin als Login Shell
|          |         |   |    |    \_______ Heimatverzeichnis
|          |         |   |    \____________ Voller Nutzername
|          |         |   \_________________ User Group ID
|          |         \_____________________ User ID
|          \_______________________________ Verschlüsseltes Paßwort
\__________________________________________ Slip User Login Name

Der Login wird wie gewöhnlich vom Programm login(1) abgewickelt. Ist alles in Ordnung, wird das Programm diplogin gestartet. dip, mit dem Namen diplogin aufgerufen, weiß dann automatisch, daß es als Login-Shell benutzt wird. Als erstes ruft es dann die Funktion getuid() auf, um die Benutzer ID desjenigen herauszufinden, der das Programm gestartet hat. Danach sucht es in der Datei /etc/diphosts nach dem ersten Eintrag, der entweder der Benutzer-ID oder aber dem Namen des tty entspricht, über den die Verbindung aufgebaut wurde, und führt dementsprechend die Konfiguration durch. Durch die Entscheidung, einem Nutzer entweder einen Eintrag für seine ID zuzuweisen, oder die Standardeinstellung für das tty zu verwenden, können einfach statische und dynamische Adressen parallel verwendet werden.

dip fügt in diesem Modus automatisch einen Eintrag für Proxy-ARP durch, dies muß also nicht von Hand geschehen.

Die Konfiguration von /etc/diphosts

Die Datei /etc/diphosts wird von dip verwendet, um voreingestellte Konfigurationen für unterschiedliche Rechner zu speichern. Dabei kann es sich um Rechner handeln, die sich in ihren Rechner einwählen, aber auch um solche, in die Sie sich mit ihrem Rechner einwählen.

Das allgemeine Format der Einträge in /etc/diphosts sieht so aus:

Suwalt::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:CSLIP,1006
ttyS1::145.71.34.3:145.71.34.2:255.255.255.0:Dynamic ttyS1:CSLIP,296

Die einzelnen Einträge bedeuten:

Login Name

Name, wie er von getpwuid(getuid()) zurückgeliefert wird, oder Name des tty

»unbenutzt«

zur Kompatibilität mit passwd

Remote Adresse

IP Adresse des anrufenden Rechners, entweder als Name oder in Dezimalschreibweise

Lokale Adresse

IP Adresse des lokalen Rechners, entweder als Name oder in Dezimalschreibweise

Netmask

Netzmaske in Dezimalschreibweise

»Kommentar«

beliebiger Eintrag

Protokoll

verwendetes Protokoll: SLIP, cSLIP usw.

MTU

MTU als Dezimalzahl

Der untere der beiden Beispieleinträge legt also z.B. fest, daß ein Anrufer auf ttyS1 die (dynamische) Adresse 145.71.34.3 zugewiesen bekommt und die Verbindung mit Komprimierung (CSLIP) und einer MTU von 296 konfiguriert wird.

Alle Nutzer, die eine statische IP Adresse zugewiesen bekommen sollen, müssen einen Eintrag unter ihrem Login-Namen in /etc/diphosts haben. Für andere Anrufer, denen die IP Adresse dynamisch zugewiesen werden soll, muß ein Eintrag für die in Frage kommenden tty Ports vorhanden sein. Es sollte auf jeden Fall für jeden vorhandenen Port ein Eintrag vorhanden sein, um sicherzustellen, daß ein Anrufer in jedem Fall eine gültige Konfiguration vorfindet.

Wenn sich nun ein Benutzer einlogged, wird er ganz normal nach Name und Paßwort gefragt. Hier muß er seinen SLIP Login-Namen und das zugehörige Paßwort eingeben. Verläuft alles normal, wird der Benutzer keinerlei zusätzliche Meldungen bekommen, er sollte dann einfach die Verbindung in den SLIP Modus schalten, dann sollte er eine Verbindung mit den Parametern aus diphosts aufbauen können.

SLIP Server mit dem dSLIP Paket

Matt Dillon (dillon@apollo.west.oic.com) hat ein Paket von kleinen Programmen und Shell-Skripts geschrieben, mit denen SLIP sowohl im Dial-In wie im Dial-Out betrieben werden kann. Allerdings muß die Shell tcsh installiert sein, da mindestens eines der Skripts auf deren Syntax angewiesen ist. Jedoch ist dies keine große Einschränkung, da die tcsh bei den meisten Distributionen mitgeliefert wird. Außerdem gehört zu Matts Paket auch eine ausführbare Kopie des Programmes expect, das ebenfalls an einigen Stellen benötigt wird. Es ist von Vorteil, wenn man sich mit expect bereits auskennt, da andernfalls bei der Konfiguration leicht Fehler gemacht werden können. Aus diesem Grunde empfiehlt sich das Paket mehr für die bereits mit Unix Vertrauten, man sollte sich aber trotzdem nicht davon abhalten lassen, sich das Programm einmal anzusehen, zumal Matt eine sehr gute Installationsanleitung im README gibt.

Das SLIP Paket bekommt man von:

metalab.unc.edu:/pub/Linux/system/network/serial/

Wichtig ist, die Datei README aufmerksam zu lesen und vor allem die dort angegebenen Einträge in den Dateien /etc/passwd und /etc/group einzufügen, bevor ein make install ausgeführt wird.


Inhalt