28.7. SLIP

Ursprünglich beigetragen von Satoshi Asami. Mit Beiträgen von Guy Helmer und Piero Serini.

Warnung: Der folgende Abschnitt ist ausschließlich für FreeBSD 7.X relevant und gültig.

28.7.1. Einrichtung eines SLIP-Clients

Im Folgenden wird ein Weg beschrieben, SLIP auf einer FreeBSD-Maschine für ein Netzwerk mit festen Hostnamen einzurichten. Bei einer dynamischen Zuweisung des Hostnamens (das heißt wenn sich Ihre Adresse bei jeder Einwahl ändert) wird die Einrichtung wahrscheinlich etwas komplexer aussehen.

Bestimmen Sie zuerst, an welcher seriellen Schnittstelle Ihr Modem angeschlossen ist. Viele Leute erzeugen einen symbolischen Link, wie etwa /dev/modem, der auf den wirklichen Gerätenamen /dev/cuadN verweist. Damit ist es Ihnen möglich, vom eigentlichen Gerätenamen zu abstrahieren, sollten Sie das Modem einmal an eine andere Schnittstelle anschließen müssen. Es kann ziemlich umständlich sein, wenn Sie eine viele Dateien in /etc und .kermrc-Dateien, die über das ganze System verstreut sind, anpassen müssen!

Anmerkung: /dev/cuau0 ist COM1, /dev/cuau1 ist COM2, etc.

Stellen Sie sicher, dass Folgendes in Ihrer Kernelkonfigurationsdatei steht:

device   sl      1

Dieses pseudo-device ist im GENERIC Kernel enthalten. Falls es von Ihnen nicht gelöscht wurde, sollten Sie hier kein Problem haben.

28.7.1.1. Dinge, die Sie nur einmal erledigen müssen

  1. Tragen Sie Ihren lokalen Rechner, das Gateway, sowie die Nameserver in Ihre Datei /etc/hosts ein. Diese Datei sieht bei mir so aus:

    127.0.0.1               localhost loghost
    136.152.64.181          water.CS.Example.EDU water.CS water
    136.152.64.1            inr-3.CS.Example.EDU inr-3 slip-gateway
    128.32.136.9            ns1.Example.EDU ns1
    128.32.136.12           ns2.Example.EDU ns2
    
  2. Vergewissern Sie sich, dass in der Datei /etc/host.conf im Abschnitt hosts: files vor dns steht. Ohne diese Reihenfolge könnten lustige Dinge passieren.

  3. Editieren Sie die Datei /etc/rc.conf.

    1. Ihren Hostnamen geben Sie an, indem Sie folgende Zeile bearbeiten:

      hostname="myname.my.domain"
      

      Hier sollte der vollständige Internethostname Ihres Rechners angegeben werden.

    2. Den Defaultrouter geben Sie durch die Modifikation folgender Zeile an:

      defaultrouter="NO"
      

      wird zu:

      defaultrouter="slip-gateway"
      
  4. Erstellen Sie die Datei /etc/resolv.conf, die Folgendes enthält:

    domain CS.Example.EDU
    nameserver 128.32.136.9
    nameserver 128.32.136.12
    

    Wie Sie sehen, werden hiermit die Nameserver angegeben. Natürlich hängen die tatsächlichen Domainnamen und Adressen von Ihren Gegebenheiten ab.

  5. Legen Sie ein Passwort für root und toor (sowie für alle anderen Accounts die kein Passwort haben) fest.

  6. Starten Sie Ihren Rechner neu und überprüfen Sie, ob er mir dem richtigen Hostnamen startet.

28.7.1.2. Aufbau einer SLIP-Verbindung

  1. Wählen Sie sich ein, geben Sie slip und am Prompt den Namen Ihres Rechners sowie Ihr Passwort ein. Was Sie eingeben müssen, hängt von Ihren Gegebenheiten ab. Wenn Sie Kermit verwenden, können Sie ein Skript ähnlich dem Folgenden verwenden:

    # kermit setup
    set modem hayes
    set line /dev/modem
    set speed 115200
    set parity none
    set flow rts/cts
    set terminal bytesize 8
    set file type binary
    # The next macro will dial up and login
    define slip dial 643-9600, input 10 =>, if failure stop, -
    output slip\x0d, input 10 Username:, if failure stop, -
    output silvia\x0d, input 10 Password:, if failure stop, -
    output ***\x0d, echo \x0aCONNECTED\x0a
    

    Natürlich müssen Sie hier Ihren Benutzernamen und Ihr Passwort eintragen. Wenn Sie das getan haben, können Sie am Kermit-Prompt einfach slip eingeben, um sich zu verbinden.

    Anmerkung: Es ist generell eine schlechte Idee, Ihr Passwort in einer unverschlüsselten Textdatei irgendwo im Dateisystem zu speichern. Tun Sie dies auf Ihr eigenes Risiko.

  2. Belassen Sie Kermit so (Sie können es mit Ctrl-z unterbrechen) und geben Sie als root ein:

    # slattach -h -c -s 115200 /dev/modem
    

    Wenn Sie mit ping Hosts auf der anderen Seite des Routers erreichen können, sind Sie verbunden! Wenn es nicht funktionieren sollte, können Sie versuchen -a statt -c als Argument für slattach zu verwenden.

28.7.1.3. Beenden der Verbindung

Um slattach zu beenden, geben Sie Folgendes ein:

# kill -INT `cat /var/run/slattach.modem.pid`

Beachten Sie, dass Sie root sein müssen, um dies durchführen zu können. Kehren Sie zu kermit zurück (mit Hilfe von fg, wenn Sie es unterbrochen haben) und beenden Sie dieses Programm (q).

slattach(8) gibt an, dass ifconfig sl0 down verwendet werden soll, um das Interface zu deaktivieren, doch das scheint keinen Unterschied zu machen. (ifconfig sl0 gibt dasselbe aus).

Es kann vorkommen, dass Ihr Modem sich weigert, das Trägersignal zu beenden. In diesem Fall starten Sie kermit einfach neu und beenden es wieder. Beim zweiten Versuch geht es meist aus.

28.7.1.4. Lösungen bei Problemen

Wenn es nicht funktionieren sollte, können Sie an die Mailingliste freebsd-net schreiben. Über diese Dinge sind Benutzer bisher gestolpert:

  • Nicht -c oder -a in slattach verwenden (Das sollte nicht entscheidend sein, aber einige Benutzer haben berichtet, dass dies ihre Probleme löst).

  • Verwendung von s10 statt sl0 (bei einigen Schriftarten kann der Unterschied schwer zu erkennen sein).

  • Probieren Sie ifconfig sl0, um den Status Ihrer Schnittstelle abzufragen. Das Ergebnis könnte beispielsweise so aussehen:

    # ifconfig sl0
    sl0: flags=10<POINTOPOINT>
            inet 136.152.64.181 --> 136.152.64.1 netmask ffffff00
    
  • Wenn ping(8) die Fehlermeldung “no route to host” ausgibt, kann die Routingtabelle falsch sein. Die Routen können Sie sich mit dem Kommando netstat -r ansehen:

    # netstat -r
    Routing tables
    Destination      Gateway            Flags     Refs     Use  IfaceMTU    Rtt    Netmasks:
    
    (root node)
    (root node)
    
    Route Tree for Protocol Family inet:
    (root node) =>
    default          inr-3.Example.EDU  UG          8   224515  sl0 -      -
    localhost.Exampl localhost.Example. UH          5    42127  lo0 -       0.438
    inr-3.Example.ED water.CS.Example.E UH          1        0  sl0 -      -
    water.CS.Example localhost.Example. UGH        34 47641234  lo0 -       0.438
    (root node)
    

    Die Zahlen im Beispiel stammen von einer recht ausgelasteten Maschine. Die Zahlen auf Ihrem System werden, je nach Netzaktivität, von den gezeigten abweichen.

28.7.2. Einrichtung eines SLIP-Servers

Dieses Dokument bietet Empfehlungen, wie Sie Ihr FreeBSD-System als SLIP-Server einrichten. Typischerweise bedeutet dies, Ihr System so zu, konfigurieren, dass beim Login automatisch eine Verbindung für entfernte SLIP-Clients aufgebaut wird.

28.7.2.1. Voraussetzungen

Dieser Abschnitt ist ausgesprochen technischer Natur, weshalb Hintergrundwissen erforderlich ist. Wir gehen davon aus, dass Sie mit dem TCP/IP Protokoll, insbesondere mit Netzwerk- und Rechneradressierung, Netzwerkmasken, Subnetzen, Routing und Routingprotokollen, wie RIP, vertraut sind. Die Konfiguration von SLIP-Diensten auf einem Einwählserver erfordert die Kenntnis dieser Konzepte. Wenn Sie damit nicht vertraut sein sollten, lesen Sie bitte Craig Hunt's TCP/IP Network Administration publiziert von O'Reilly & Associates, Inc. (ISBN Nummer 0-937175-82-X) oder die Bücher von Douglas Comer über das TCP/IP Protokoll.

Wir gehen außerdem davon aus, dass Sie Ihr(e) Modem(s) eingerichtet haben und die entsprechenden Systemdateien so konfiguriert haben, dass Logins durch Ihr Modem zugelassen sind. Wenn Sie Ihr System dafür noch nicht vorbereitet haben, lesen Sie bitte Abschnitt 27.4, um Ihre Einwahlverbindung zu konfigurieren. Hilfreich sind auch die Manualpages sio(4) mit Informationen zum Gerätetreiber der seriellen Schnittstelle ttys(5), sowie gettytab(5), getty(8) und init(8) für Informationen zur Konfiguration von Logins über ein Modem. stty(1) bietet Informationen zur Einstellung der Parameter der seriellen Schnittstelle (etwa von clocal für direkt angeschlossene serielle Geräte).

28.7.2.2. Ein kurzer Überblick

Mit der normal verwendeten Konfiguration funktioniert der FreeBSD-SLIP-Server folgendermaßen: Ein SLIP-Benutzer wählt einen FreeBSD-SLIP-Server an und meldet sich mit einer speziellen SLIP-Login-ID ein, wobei /usr/sbin/sliplogin als Shell dieses besonderen Accounts dient. Das Programm sliplogin durchsucht die Datei /etc/sliphome/slip.hosts nach einer passenden Zeile für diesen Account. Falls ein Treffer erzielt wird, verbindet es den seriellen Anschluss mit einem verfügbaren SLIP-Interface und führt das Shellskript /etc/sliphome/slip.login aus, um das SLIP-Interface zu konfigurieren.

28.7.2.2.1. Ein Beispiel für ein Login eines SLIP-Servers

Wenn beispielsweise die Kennung eines SLIP-Benutzers, Shelmerg wäre, könnte der Eintrag des Benutzers Shelmerg in der Datei /etc/master.passwd etwa so aussehen:

Shelmerg:password:1964:89::0:0:Guy Helmer - SLIP:/usr/users/Shelmerg:/usr/sbin/sliplogin

Wenn sich Shelmerg anmeldet, wird sliplogin die Datei /etc/sliphome/slip.hosts nach einer übereinstimmenden Benutzerkennung durchsuchen. So könnte etwa folgende Zeile in /etc/sliphome/slip.hosts stehen:

Shelmerg        dc-slip sl-helmer       0xfffffc00		  autocomp

sliplogin wird die passende Zeile finden, den seriellen Anschluss mit dem nächsten verfügbaren SLIP-Interface verbinden und dann /etc/sliphome/slip.login wie hier dargestellt ausführen:

/etc/sliphome/slip.login 0 19200 Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp

Wenn alles gut läuft, wird /etc/sliphome/slip.login ein ifconfig für das SLIP-Interface durchführen, mit dem sich sliplogin verbunden hat (in obigem Beispiel ist das slip 0, der als erster Parameter in der Liste an slip.login übergeben wurde), um die lokale IP-Adresse (dc-slip), die entfernte IP-Adresse (sl-helmer), die Netzmaske des SLIP-Interface (0xfffffc00) und alle zusätzlichen Optionen (autocomp) festzulegen. Wenn etwas schief laufen sollte, bietet, sliplogin normalerweise informative Meldungen durch den syslogd-Daemon, der die Meldungen standardmäßig nach /var/log/messages schreibt (sehen Sie hierzu auch in den Manual-Seiten für syslogd(8) und syslog.conf(5) nach). Überprüfen Sie auch /etc/syslog.conf, um zu sehen, was syslogd aufzeichnet und wo es aufgezeichnet wird.

28.7.2.3. Kernelkonfiguration

Der Standardkernel von FreeBSD (GENERIC) bietet bereits SLIP-Unterstützung (sl(4)). Falls Sie einen angepassten Kernel verwenden, müssen Sie sicherstellen, dass Ihre Kernelkonfigurationsdatei folgende Zeile enthält:

device   sl

In der Voreinstellung leitet Ihr FreeBSD-Rechner keine Pakete weiter. Wenn Sie Ihren FreeBSD-SLIP-Server als Router einsetzen möchten, müssen Sie die Datei /etc/rc.conf bearbeiten und den Wert der Variable gateway_enable auf YES setzen. Dadurch ist sichergestellt, dass die Routingoptionen auch nach einem Neustart erhalten bleiben.

Um die Einstellungen sofort anzuwenden, führen Sie den folgenden Befehl als root-Benutzer aus:

# /etc/rc.d/routing start

Weitere Informationen zur Konfiguration Ihres Kernels, finden Sie in Kapitel 9 dieses Handbuches.

28.7.2.4. Konfiguration des Sliplogin

Wie bereits erwähnt, gibt es im Verzeichnis /etc/sliphome drei Dateien, die Teil der Konfiguration für /usr/sbin/sliplogin sind (sliplogin ist in sliplogin(8) beschrieben): slip.hosts, definiert die SLIP-Benutzer sowie deren IP-Adresse; slip.login, womit normalerweise nur das SLIP-Interface konfiguriert wird und (optional) slip.logout, womit die Auswirkungen von slip.login rückgängig gemacht werden, wenn die serielle Verbindung beendet wird.

28.7.2.4.1. Konfiguration der Datei slip.hosts

/etc/sliphome/slip.hosts enthält Zeilen, die mindestens vier durch Leerzeichen getrennte Elemente enthalten:

  • Login-Kennung des SLIP-Benutzers

  • Lokale Adresse (lokal für den SLIP-Server) der SLIP-Verbindung

  • Entfernte Adresse der SLIP-Verbindung

  • Netzwerkmaske

Die lokalen und entfernten Adressen können Hostnamen sein, deren zugehörige IP-Adresse durch die Datei /etc/hosts oder mithilfe des Domain Name Service aufgelöst wird. Wie die Adressen aufgelöst werden, hängt von den Einstellungen in /etc/nsswitch.conf ab. Die Netzwerkmaske kann ein Name sein, der durch eine Suche in /etc/networks aufgelöst werden kann. Auf einem Beispielsystem, würde die Datei /etc/sliphome/slip.hosts folgendermaßen aussehen:

#
# login local-addr      remote-addr     mask            opt1    opt2
#                                               (normal,compress,noicmp)
#
Shelmerg  dc-slip       sl-helmerg      0xfffffc00      autocomp

Am Ende der Zeile stehen eine oder mehrere der folgenden Optionen.

  • normal – keine Header-Kompression

  • compress – Header werden komprimiert

  • autocomp – Header werden komprimiert, sofern die Gegenstelle es erlaubt

  • noicmp – ICMP-Pakete werden deaktiviert (“ping” Pakete werden unterdrückt, statt die Ihnen zur Verfügung stehende Bandbreite aufzubrauchen)

Die Auswahl von lokalen und entfernten Adressen für Ihre SLIP-Verbindung, hängt davon ab, ob Sie ein TCP/IP-Subnetz reservieren oder ob Sie “proxy ARP” auf Ihrem SLIP-Server verwenden (es handelt sich nicht um “echtes” proxy ARP, aber dieser Begriff wird in diesem Abschnitt verwendet, um diesen Sachverhalt zu beschreiben). Wenn Sie nicht sicher sind, welche Methode Sie wählen sollen oder wie IP-Adressen zugewiesen werden, lesen Sie bitte in den Büchern zum Thema TCP/IP nach, die als Voraussetzungen für SLIP (Abschnitt 28.7.2.1) angegeben worden sind oder fragen Sie Ihren IP-Netzwerkadministrator.

Wenn Sie für Ihre SLIP-Clients ein eigenes Subnetz verwenden, werden Sie die Nummer des Subnetzes aus der Ihnen zugewiesenen IP-Netzwerknummer zuteilen und die IP-Adressen Ihrer SLIP-Clients aus diesem Subnetz verwenden müssen. Dann können Sie eine statische Route zu Ihrem SLIP-Subnetz über Ihren SLIP-Server auf Ihren nächsten IP-Router konfigurieren.

Wenn Sie aber andererseits die “proxy ARP” Methode verwenden möchten, werden Sie die IP-Adressen Ihrer SLIP-Clients aus dem Subnetz Ihres SLIP-Server nehmen und die Skripte /etc/sliphome/slip.login /etc/sliphome/slip.logout anpassen müssen, damit diese arp(8) zur Verwaltung der “proxy ARP”-Einträge in der ARP-Tabelle Ihres SLIP-Servers verwenden.

28.7.2.4.2. Konfiguration von slip.login

Eine typische Datei /etc/sliphome/slip.login sieht folgendermaßen aus:

#!/bin/sh -
#
#       @(#)slip.login  5.1 (Berkeley) 7/1/90

#
# generic login file for a slip line.  sliplogin invokes this with
# the parameters:
#      1        2         3        4          5         6     7-n
#   slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 inet $4 $5 netmask $6

Diese slip.login Datei führt lediglich ifconfig für das entsprechende SLIP-Interface mit den lokalen und entfernten Adressen und der Netzwerkmaske des SLIP-Interface aus.

Wenn Sie sich dafür entschieden haben, die “proxy ARP” Methode zu verwenden (statt eines separaten Subnetzes für Ihre SLIP-Clients) sollte Ihre Datei /etc/sliphome/slip.login etwa folgendermaßen aussehen:

#!/bin/sh -
#
#       @(#)slip.login  5.1 (Berkeley) 7/1/90

#
# generic login file for a slip line.  sliplogin invokes this with
# the parameters:
#      1        2         3        4          5         6     7-n
#   slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 inet $4 $5 netmask $6
# Answer ARP requests for the SLIP client with our Ethernet addr
/usr/sbin/arp -s $5 00:11:22:33:44:55 pub

Die zusätzliche Zeile arp -s $5 00:11:22:33:44:55 pub in der Datei slip.login erzeugt einen ARP-Eintrag in der ARP-Tabelle des SLIP-Servers. Dieser ARP-Eintrag veranlasst den SLIP-Server mit seiner Ethernet MAC-Adresse zu antworten, sobald ein anderer IP-Knoten im Ethernet mit der IP-Adresse des SLIP-Clients Kontakt aufnehmen möchte.

Wenn Sie das Beispiel von oben verwenden, achten Sie darauf die Ethernet MAC-Adresse (00:11:22:33:44:55) durch die MAC-Adresse der Ethernetkarte Ihres Systems zu ersetzen. Sonst wird Ihr “proxy ARP” sicher nicht funktionieren! Sie können die MAC-Adresse Ihres SLIP-Servers herausfinden, indem Sie sich die Ausgabe von netstat -i ansehen. Die zweite Zeile der Ausgabe sollte ungefähr aussehen wie diese hier:

ed0   1500  <Link>0.2.c1.28.5f.4a         191923	0   129457     0   116

Dies zeigt an, dass die Ethernet MAC-Adresse dieses Systems 00:02:c1:28:5f:4a lautet. Die Punkte in der Ethernet MAC-Adresse, die von netstat -i ausgegeben wird, müssen durch Doppelpunkte ersetzt werden. Bei jeder einstelligen Hexadezimalzahl sollten außerdem führende Nullen hinzugefügt werden, um die Adresse in die Form zu bringen, die von arp(8) verlangt wird. Die Manual-Seite von arp(8) bietet hierzu eine vollständige Übersicht.

Anmerkung: Wenn Sie die Dateien /etc/sliphome/slip.login und /etc/sliphome/slip.logout erstellen, müssen diese ausführbar gemacht werden (chmod 755 /etc/sliphome/slip.login /etc/sliphome/slip.logout), da sliplogin auf deren Ausführbarkeit angewiesen ist.

28.7.2.4.3. Konfiguration von slip.logout

Die Datei/etc/sliphome/slip.logout ist nicht zwingend erforderlich (außer Sie verwenden “proxy ARP”), aber falls Sie diese Datei erzeugen möchten, ist hier ein Beispiel für ein grundlegendes slip.logout Skript:

#!/bin/sh -
#
#       slip.logout

#
# logout file for a slip line.  sliplogin invokes this with
# the parameters:
#      1        2         3        4          5         6     7-n
#   slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 down

Wenn Sie “proxy ARP” einsetzen, muss /etc/sliphome/slip.logout den ARP-Eintrag für den SLIP-Client löschen:

#!/bin/sh -
#
#       @(#)slip.logout

#
# logout file for a slip line.  sliplogin invokes this with
# the parameters:
#      1        2         3        4          5         6     7-n
#   slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 down
# Quit answering ARP requests for the SLIP client
/usr/sbin/arp -d $5

arp -d $5 löscht den ARP-Eintrag, den die “proxy ARP” slip.login hinzufügte, als der SLIP-Client sich eingeloggt hatte.

Es soll nochmals darauf hingewiesen werden, dass für die Datei /etc/sliphome/slip.logout das Ausführungs-Bit gesetzt werden muss, nachdem die Datei erstellt worden ist (z.B. chmod 755 /etc/sliphome/slip.logout).

28.7.2.5. Überlegungen zum Routing

Wenn Sie nicht die “proxy ARP” Methode benutzen, um Datenpakete zwischen Ihren SLIP-Clients und dem Rest Ihres Netzwerkes (oder vielleicht dem Internet) zu routen, werden Sie wahrscheinlich statische Routen zu Ihrem nächsten Standardrouter hinzufügen müssen, um Pakete aus dem Subnetz Ihres SLIP-Clients über Ihren SLIP-Server weiterzuleiten.

28.7.2.5.1. Statische Routen

Das Hinzufügen von statischen Routen zu Ihrem nächsten Standardrouter kann problematisch sein (oder unmöglich, wenn Sie nicht die erforderliche Berechtigung haben...). Wenn Sie in Ihrer Organisation ein Netzwerk mit mehreren Routern haben, müssen einige Router, wie etwa die von Cisco und Proteon hergestellten, nicht nur mit der statischen Route zum SLIP-Subnetz konfiguriert werden, sondern es muss ihnen auch mitgeteilt werden, über welche statischen Routen sie andere Router informieren sollen. Daher ist einiges an Fachwissen und Problemlösungskompetenz erforderlich, um auf statischen Routen basierendes Routing erfolgreich einzurichten.

Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an <de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an <de-bsd-translators@de.FreeBSD.org>.