PPP mit der Sun3

Inhalt

  1. Einführung
  2. Was braucht man
  3. Installation
  4. Benutzung
  5. Tips

Einführung

PPP ist eine Erweiterung der TCP/IP Suite. Es erlaubt TCP/IP-Verbindungen über eine serielle Leitung, sprich: ein Modem. Dieses Dokument beschriebt, wie man PPP auf der Sun3 unter SunOS 4.1.1 ans Laufen bekommt, um sich mit einem (Hayes-kompatiblen) Modem bei einem Internetprovider einwählen zu können.

Was braucht man

Die von mir verwendete Version von PPP (ppp-2.1.2b) ist zwar schon ein wenig älter, aber dafür lässt sie sich problemlos auf SunOS 4.1.1 installieren und funktioniert auch zufriedenstellend. Des weiteren sollte man (wenn man schonmal dabei ist) auch gleich noch SLIP (cslip-2.7) und zwei Patches (tty jumbo und hardware handshake) installieren. Während ppp-2.1.2b und cslip-2.7 auf diversen ftp-Servern rumfliegen, sind die Patches nur schwer zu bekommen.

Der tty jumbo Patch 100513-04 kann auf dem Sun3/3x-Archiv gefunden werden.

Das Verzeichnis Sun-Patches enthält alle relevanten Sun3 Patches, die Sun veröffentlicht hat. Wenn Sie ihre Sun3 regelmässig nutzen und am Internet angeschlossen haben, dann sollten Sie eine Reihe von Patches einspielen, insbesondere solche, die echte Fehler beheben und Sicherheitslöcher schliessen.

Der hardware handshake Patch ist ebenfalls auf dem Sun3/3x-Archiv zu finden.

Daneben gibt es aber noch eine Reihe anderer nützlicher Patches auf dem Sun3/3x-Archiv. Ich selbst benutze ständig hsfs, st, tty und ufs, denn sie bringen echt was.

Folgende Dinge müssen Sie also haben:

Installation

Alle vier Pakete modifizieren den Kern. Um ganz sicher zu gehen, dass alles in Ordnung ist, sollten SIe nach jedem Paket einen neuen Kern bauen und ihn testen. Wenn Ihnen das zu viel Arbeit ist, dann können sie auch alle Pakete auf einen Rutsch installieren und am Schluss den Kern bauen.

Zuerst installieren Sie bitte den Patch 100513-04. Er ersetzt folgende Objekte des Kerns: mcp_async.o, mti.o, zs_async.o, cons.o, tty_ldterm.o und tty_pty.o. Folgen Sie den Instuktionen im README.

Als nächstes installieren Sie bitte den tty.hwh.patch. Das ist noch einfacher, denn hier wird nur zs_async.o ausgetauscht. Nun würde ich vorschlagen, dass Sie einen neuen Kern bauen und testen, denn die folgenden Schritte sind etwas komplizierter.

Kommen wir zu cslip-2.7. Im README wird behauptet, Sie bräuchten auch einen neuen Netzwerk-Code, aber moderne Modems sind durchaus schnell genug, damit auch der alte Netzwerk-Code keine Probleme macht.

        cp common/net/* /sys/net
        cp common/net/*.h /usr/include/net
        cp sunos4/net/* /sys/net
        cp sunos4/net/*.h /usr/include/net
Ändern Sie /sys/conf.common/files.cmn ab und fügen Sie folgende Zeilen (da wo die anderen net/* Sachen stehen) hinzu:
        net/bpf.c               optional bpfilter
        net/bpf_filter.c        optional bpfilter
        net/if_sl.c             optional sl INET
        net/slcompress.c        standard
Ändern Sie /sys/sun/str_conf.c und fügen Sie folgende Zeilen (gleich hinter dem Eintrag für db.h und NDB) hinzu:
        #include "sl.h"
:
:
        NSL > 0
        extern struct streamtab if_slinfo;
        #endif
:
:
        NSL > 0
                { "slip",       &if_slinfo },
        #endif
Ändern Sie Ihre Kern-Konfiguration ab und fügen Sie folgende Zeilen (am Besten hinter pseudo-device loop) hinzu:
        #
        # Two slip interfaces
        #
        pseudo-device   sl2     init slattach
Wenn Sie noch keine eigene Kern-Konfiguration haben, machen Sie sich eine Kopie von GENERIC und geben Sie ihm einen lustigen Namen (MYKERNEL zum Beispiel) und machen Sie die Änderungen daran. Dann bauen sie einen neuen Kern, installieren ihn und rebooten. Der neue Kern sollte dann folgende zwei Zeilen anzeigen:
        sl0 attached
        sl1 attached
Wenn Sie ifconfig -a aufrufen, werden sie zwei POINTTOPOINT Interfaces sehen, die aber noch DOWN sind.

Bauen Sie sie Programme:

        make clean
        foreach i ( myetheraddr slinfo sliplogin slstats )
                cd $i
                make
                cd ..
        end
        cd tools/ifconfig
        make -f Makefile.oldmake 
        cd ../..
Installieren Sie sie:
        mv /usr/bin/tip /usr/bin/tip.old
        chmod 700 /usr/bin/tip.old
        install -m 4750 -o uucp -g uucp tip/tip /usr/bin/tip
        install -m 750 -g uucp sliplogin/sliplogin /usr/bin/sliplogin
        install -m 444 sliplogin/sliplogin.8 /usr/man/man8/sliplogin.8
        install -m 750 -g uucp slstats/slstats /usr/bin/slstats
        install -m 444 slstats/slstats.8 /usr/man/man8/slstats.8
        install -m 750 -g uucp slinfo/slinfo /usr/bin/slinfo
        install -m 444 slinfo/slinfo.8 /usr/man/man8/slinfo.8
        install -m 750 -g uucp myetheraddr/myetheraddr /usr/bin/myetheraddr
        install -m 444 myetheraddr/myetheraddr.8 /usr/man/man8/myetheraddr.8
        install -m 750 -g uucp tools/ifconfig/ifconfig /usr/bin/ifconfig.slip
        install -m 444 tools/ifconfig/ifconfig.8c /usr/man/man8/ifconfig.slip.8
Installieren Sie auch die Konfigurationsdateien:
        install -m 640 -g uucp sliplogin/slip.logout /etc
        install -m 640 -g uucp sliplogin/slip.login /etc
        install -m 640 -g uucp sliplogin/slip.hosts /etc
        install -m 640 -g uucp tip/login.script.unix /etc
        install -m 640 -g uucp tip/login.script.netblazer /etc
Ändern Sie /etc/slip.login und kommentieren sie folgende Zeile aus:
        # route set $R $L mtu 552 pipesize 2048 rtt 5 || exit 2
Ändern Sie alle Vorkommen von "ifconfig" in "ifconfig.slip".

Anschliessend sollten Sie das README lesen und den Anweisungen folgen, um Einträge für /etc/remote zu erzeugen. Um SLIP auch benutzen zu können, müssen auch in der /etc/passwd passende Einträge gemacht werden. Davon abgesehen sind die Einträge in /etc/remote auch nützlich, wenn man mit Hilfe von "tip" das Modem konfigurieren will:

modem:\
        :dv=/dev/cua0:br#38400:el=^C^S^Q^U^D:ie=%$:oe=^D:
dial38400:\
        :dv=/dev/cua0:br#38400:nt:fc:at=mymodem:du:
mymodem|US Robotics Courier V.everything:\
        :el=^U^C^R^O^D^S^Q@:ie=#%$:oe=^D:tc=dial38400:
dial-foo:\
        :pn=dt06331800510:tc=mymodem:
foo|slip-foo:\
        :st=slip:ls=/etc/login.script.unix S%h {passwd}:\
        :cc=/etc/sliplogin Sfoo:tc=dial-foo:
Bemerkungen: /dev/cua0 ist der Gegenpart zu ttya für ausgehende Verbindungen. Die Geschwindigkeit ist auf 38400 baud begrenzt. Die Telefonnumer gibt man nach pn= an. Der Zielrechner heisst im Beispiel "foo". Verwenden Sie kurze Rechnernamen!

Die Devices für ausgehende Verbindungen werden wiefolgt angelegt:

        mknod /dev/cua0 c 12 128
        mknod /dev/cua1 c 12 129
        chgrp uupc /dev/tty? /dev/cua?
        chmod g+rw /dev/tty? /dev/cua?
Ändern Sie /etc/gettytab und /etc/ttytab:
        p8.38400|38400-baud-8bit:\
                :sp#38400:p8:
        H|D38400|Fast-Dial-38400:\
                :nx=D38400:fc:fd@:tc=38400-baud:        

        ttya    "/usr/etc/getty D38400"       dialup           on remote
Wenn Sie einen anderen SLIP-Rechner kennen, dann können Sie ja mal versuchen, SLIP an's Laufen zu bekommen. Ich hatte leider keine Möglichkeit dazu. Die Dokumentation von cslip-2.7 beschreibt aber akkurat alle notwendigen Schritte.

Die Installation von ppp-2.1.2b ist der letzte Schritt. Leider ist modload in SunOS 4.1.1 unbrauchbar, sodass man die Objekte direkt in den Kern einbauen muss. In der Beschreibung wird als Verzeichnis /sys/os angegeben, aber natürlich muss es /sys/net lauten! ppp-2.1.2b überschreibt dabei slcompress.c, aber cslip-2.7 funktioniert auch mit dem neuen slcompress.c, da nur einige Erweiterungen für PPP dazugekommen sind.

Ändern Sie /sys/conf.common/files.cmn:

        net/slcompress.c        standard
        net/ppp_if.c            optional ppp INET
        net/ppp_async.c         optional ppp INET
Ändern Sie /sys/sun/str_conf.c:
        #include "ppp.h"
:
:
        #if     NPPP > 0
        extern struct streamtab ppp_asyncinfo;
        extern struct streamtab ppp_ifinfo;
        #endif
:
:
        #if     NPPP > 0
                { "pppif",     &ppp_ifinfo },
                { "pppasync",  &ppp_asyncinfo },
        #endif
Die Einträge können Sie direkt hinter die entsprechenden SLIP-Einträge setzen.

Ändern Sie die Kern-Konfiguration (MYKERNEL):

        #
        # Two ppp interfaces
        #
        pseudo-device   ppp2    init ppp_attach
Ändern Sie ppp_if.c und fügen Sie (hinter #include <netinet/ip.h>)folgendes ein:
        #include <net/slcompress.h>
        #include <net/if_ppp.h>
In if_ppp.h und ppp_str.h gibt es zwei Einträge, die
        typedef u_long ext_accm[8];
lauten. Ändern Sie diese ab in
        #ifndef EXT_ACCM
        typedef u_long  ext_accm[8];
        #define EXT_ACCM
        #endif
Kopieren Sie nun den ganzen Kram in die richtigen Verzeichnisse:
        cp sunos/*.c /sys/net
        cp net/*.h /sys/net
        cp net/*.h /usr/include/net
Nun wird es entgültig Zeit einen neuen Kern zu bauen.
        cd /sys/sun3/conf
        config MYKERNEL
        cd ../MYKERNEL
        make
Nachdem der neue Kern installiert und die Maschine rebooted ist, sollten Sie vier POINTTOPOINT Interfaces ppp0, ppp1, sl0 und sl1 sehen.

Prima!

Nun fehlen nur noch die PPP-Programme. Sie müssen aber zuvor sicherstellen, dass alle Programme die selben Lock-Dateien benutzen. Schauen Sie sich daher die Quellen und das Makefile genau an.

        foreach i (chat pppstats pppd)
                cd $i
                rm Makefile
                ln -s Makefile.sun Makefile
                make clean
                make
                cd ..
        end
        install -m 4750 -o root -g uucp pppd/pppd /usr/bin
        install -m 444 pppd/pppd.8 /usr/man/man8
        install -m 4750 -o root -g uucp pppstats/pppstats /usr/bin
        install -m 750 -o root -g uucp chat/chat /usr/bin
        install -m 444 chat/chat.8 /usr/man/man8

Benutzung

You now need configuration files to feed your daemons.

Tips

Die Konsitenz der Lock-Dateien ist äusserst wichtig. Alle Programme, die mit den tty's schaffen, sollten die selben Lock-Dateien benutzen. Suns "tip" und "uucp" benutzen /usr/spool/locks/LCK..ttyname. Das "tip", das mit cslip-2.7 kommt, benutzt aber /tmp/LCK..ttyname, chat und pppd benutzen /var/spool/uucp/LCK..ttyname. Die Shell-Skripten in diesem Artikel verwenden alle /var/spool/locks (was das selbe ist wie /usr/spool/locks). Ändern Sie die Sourcen entsprechend ab oder sorgen sie mit Softlinks für Ruhe. Falls Sie C-Kermit verwenden, überprüfen Sie diesen bitte auch!

Es ist eine gute Idee, alle Programme, die mit ttys arbeiten, in die selbe Gruppe zu stecken. Benutzer, die Zugang zu den Modems haben sollen, bekommen dann diese Gruppe und können die Programme aufrufen. Ich benutze dazu die (bereits vorhandene) Gruppe "uucp". Auch die Devices sollten dieser Gruppe gehören. Die cua-Devices müssen dem Benutzer uucp gehören.


Copyright 1999-2001