Das FreeBSD-Handbuch
Zurück | Kapitel 28. PPP und SLIP | Weiter

# 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.

Zurück | Zum Anfang | Weiter
PPP over ATM (PPPoA) | Nach oben | Elektronische Post (E-Mail)

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>.