  Linux AX25 HOWTO
  Terry Dawson (terry@perf.no.itg.telstra.com.au) und
  Gerd Rthig (roetg@medizin.uni-leipzig.de)
  v1.6-2, 8. Juli 1999

  Das Betriebssystem Linux ist vielleicht das einzige, das eine einge
  baute Untersttzung fr das im Packet Radio verwendete AX.25-Protokoll
  bietet.  Dieser Text beschreibt, wie man diese Untersttzung instal
  liert und einrichtet.


  1.  Einfhrung


  Dieses HOWTO beschreibt, wie man die AX.25-, NetROM- und ROSE-
  Untersttzung unter Linux installiert und einrichtet.  Einige typische
  Konfigurationen sind beispielhaft aufgefhrt und knnen als
  Ausgangsbasis dienen.

  Die Implementation der Amateurfunk-Protokolle unter Linux ist sehr
  flexibel.  Fr Neulinge wird die Konfiguration reichlich kompliziert
  und verwirrend erscheinen. Es braucht ein wenig Zeit, bis man
  versteht, wie alles zusammenpat. Die Konfiguration wird sich als
  schwierig erweisen, wenn man sich nicht entsprechend vorbereitet und
  ber Linux im allgemeinen informiert hat.

  Zur Zeit ist mit der Einfhrung des Linux-Kernels 2.2.x auch das
  AX.25-Subsystem tiefgreifenden Vernderungen unterworfen. Dieses HOWTO
  wird darauf in kommenden Fassungen ausfhrlicher eingehen, wenn erste
  Erfahrungen mit der neuen Software vorliegen.

  Die im folgenden beschriebenen Konfigurationshinweise und Beispiele
  beziehen sich daher, wenn nicht ausdrcklich anders vermerkt, auf ein
  Linux-System mit Kernel 2.0.37, libc5 und ax25-utilities-2.1.42a.



  1.1.  Wo bekommt man neue Versionen dieses Textes


  Den englischen Originaltext findet man im Archiv des Linux-
  Dokumentation-Projektes.  Die WWW-Fassung findet sich hier:


       http://metalab.unc.edu/LDP/HOWTO/AX25-HOWTO.html


  Man kann Terry Dawson (terry@perf.no.itg.telstra.com.au) auch direkt
  fragen; neue Versionen wird er jedoch sofort dem Koordinator des LDP
  schicken, so da man immer erst bei metalab nachsehen sollte. Gibt es
  dort keine neue Version, so ist es wahrscheinlich, da sie noch nicht
  fertig ist.  Die deutsche Version findet man beim DLHP:


       http://www.tu-harburg.de/dlhp/


  1.2.  Weitere Informationen zu diesem und verwandten Themen


  Es gibt eine Menge weitere Dokumentation. Viele Texte befassen sich
  mit Netzwerken und Linux im allgemeinen und es wird wrmstens
  empfohlen, diese zu lesen, da sie bei eigenen Bemhungen helfen und
  Wege zu weiteren mglichen Konfigurationen aufzeigen.

  Folgende Texte sind empfehlenswert:


    HAM HOWTO

    NET-3 HOWTO

    Ethernet HOWTO

    Firewall HOWTO

  Allgemeinere Informationen zu Linux findet man in den anderen Linux-
  HOWTO-Dokumenten:


       http://metalab.unc.edu/LDP/HOWTO/




  2.  Die Protokolle bei Packet Radio und Linux


  Das AX.25-Protokoll gestattet den Betrieb sowohl mit als auch ohne
  laufende Verbindungen und wird entweder selbst zur Herstellung von
  Punkt-zu-Punkt-Verbindungen oder als Trger fr andere Protokolle wie
  TCP/IP oder NET/ROM  eingesetzt.

  Es entspricht in seinem Aufbau dem X.25-Protokoll mit einigen
  amateurfunkspezifischen Erweiterungen.  Das NetROM-Protokoll ist ein
  Versuch eines vollstndigen Netzwerkprotokolls und nutzt AX.25 auf
  seiner niedrigsten Ebene als Protokoll zum Datenaustausch. Es stellt
  eine Netzwerkebene zur Verfgung, die eine angepate Form des AX.25
  darstellt. Das NetROM-Protokoll bietet dynamisches Routing und Aliases
  fr die einzelnen Nodes.

  Das ROSE-Protokoll wurde von Tom Moulton (W2VY) entwickelt und
  implementiert. Es stellt eine Implementation des X.25-Packet-Layer-
  Protokolls dar, wurde fr das Zusammenwirken mit AX.25 als Datalink
  entworfen und stellt ebenfalls eine Netzwerk-Ebene zur Verfgung.

  ROSE-Adressen sind zehnstellige Nummern. Die ersten vier sind der sog.
  Data Network Identification Code (DNIC) und stammen aus dem Zusatz B
  der CCITT X.121-Empfehlung.

  Mehr Informationen zum ROSE-Protokoll gibt es auf dem RATS (Radio
  Amateur Teleprinter Society) -Web-Server:


       http://www.rats.org/


  Das FPAC/Linux-Projekt als eine ROSE-Anwendung ist auf


       http://www.qsl.net/fpac


  zu finden.


  Alan Cox entwickelte die frhe Kernel-Untersttzung fr AX.25.
  Jonathan Naylor (g4klx@g4klx.demon.co.uk) entwickelte den Code weiter,
  fgte NetROM- und ROSE-Untersttzung hinzu und ist jetzt der
  Entwickler des AX.25-Codes fr den Kernel.

  Die Untersttzung fr DAMA wurde von Joerg (DL1BKE,
  jreuter@lykos.tng.oche.de) entwickelt.  Thomas Sailer
  (sailer@ife.ee.ethz.ch) fgte die Untersttzung fr BayCom- und
  SoundModem hinzu.  Die AX-25-Utilities werden von Craig Small
  (csmall@debian.org) betreut.  Der Linux-Code untersttzt KISS-basierte
  TNCs (Terminal Node Controllers), die Ottawa PI-Card, die Gracilis
  PacketTwin-Karte und andere SCC-Karten auf der Basis des Z8530 mit dem
  allgemeinen SCC-Treiber sowie parallele und serielle BayCom-Modems.

  Der SoundModem-Treiber von Thomas Sailer untersttzt den SoundBlaster
  und die Soundkarten auf der Basis des Crystal-Chipsatzes.  Die
  Anwenderprogramme enthalten ein einfaches PMS (Personal Message
  System), eine Mglichkeit, Baken auszusenden, ein zeilenorientiertes
  Programm zum Verbindungsaufbau, 'listen', ein Beispiel, wie man alle
  AX.25-Pakete an einem Interface mitlesen kann und Programme zur
  Einrichtung des NetROM- Protokolls.  Ebenso sind ein AX.25-Server-
  Programm zur Verwaltung eintreffender Verbindungen und ein NetROM-
  Daemon, der den Hauptanteil der NetROM- Funktionalitt bernimmt,
  vorhanden.


  2.1.  Wie alles zusammenpat


  Die AX.25-Implementation bei Linux ist noch sehr neu. Obwohl sie an
  vielen Stellen NOS, BPQ oder anderen Implementationen hnelt, ist sie
  keine von diesen.  Man kann sie so einrichten, da sie sich fast wie
  andere Implementationen verhlt, die Konfiguration ist jedoch
  vollkommen anders.   Um beim Verstndnis der Einrichtungsweise zu
  helfen, soll dieser Abschnitt einige strukturelle Eigenschaften
  beschreiben und darstellen, wie sie sich in die Systemstruktur von
  Linux einfgen.

  Vereinfachte Zeichnung der Protokoll-Ebenen:



       +----------+-----------+----------+----------+
       | AF_AX25  | AF_NETROM | AF_INET  | AF_ROSE  |
       |==========|===========|==========|==========|
       |          |           |          |          |
       |          |           | TCP/IP   |          |
       |          |           +-------+  |          |
       |          | NetROM            |  |          |
       |          +-------------------+--+----------+
       |      A  X  .  2  5                         |
       +--------------------------------------------+




  Diese Darstellung soll zeigen, da NetROM, ROSE und TCP/IP alle direkt
  auf AX.25 aufgesetzt laufen, aber jedes Protokoll als einzelnes
  Protokoll an der Programmierschnittstelle behandelt wird. Die
  AF_-Namen sind die Namen fr die Adrefamilie jedes Protokolls, wie
  sie in den darauf aufsetzenden Programmen verwendet werden. Wichtig
  ist also die richtige Konfiguration der AX.25-Gerte, bevor man die
  NetROM-, TCP/IP- oder ROSE-Devices einrichten kann.
  Darstellung der Linux-Netzwerk-Implementation:




       ---------+-----------+------------------++----------+------------------------
       Anwender | Programme | call     node    || Daemonen | ax25d   mheardd
                |           | pms      mheard  ||          | inetd   netromd
       ---------+-----------+------------------++----------+------------------------
                | Sockets   | open(), close(), listen(), read(), write(), connect()
                |           +-----------+-----------+--------------+----------------
                |           | AF_AX25   | AF_NETROM |  AF_ROSE     | AF_INET
                +-----------+-----------+-----------+--------------+----------------
                | Protokolle| AX.25     | NetROM    |  ROSE        | TCP/IP/UDP
       Kernel   +-----------+-----------+-----------+--------------+----------------
                | Devices   | ax0, ax1  | nr0, nr1  | rose0, rose1 | eth0, ppp0...
                +-----------+-----------+-----------+--------------+----------------
                | Treiber   | KISS, PI2, PacketTwin, SCC, BPQ,     | slip, ppp,
                |           |       SoundModem, BayCom             | ethernet
       ---------+-----------+--------------------------------------+----------------
       Hardware | PI2-Karte, PacketTwin-Karte, SCC-Karte, Serielle Schnittstelle,
                | SoundBlaster, Ethernet-Karte
       ---------+-------------------------------------------------------------------




  Diese Zeichnung ist ein wenig allgemeiner als die erste. Sie soll den
  Zusammenhang zwischen Anwenderprogrammen, Kernel und Hardware und die
  Beziehungen von Programmierschnittstelle, Protokoll-Modulen, Kernel-
  Netzwerk-Devices und Gertetreibern untereinander verdeutlichen. In
  dieser Darstellung ist jeder Teil von dem, was darunter steht,
  abhngig, man mu also von unten (Hardware) nach oben (Programme)
  alles der Reihe nach einrichten.  Beispiel: Will man das Programm
  call starten, so mu man zunchst die Hardware einrichten, dann
  sicherstellen, da der Kernel den passenden Treiber geladen hat, das
  zugehrige Netzwerk-Device erzeugt wurde und das zur Nutzung durch
  call gewnschte Protokoll im Kernel enthalten ist. Dieser Text wird
  sich im groen und ganzen an diese Reihenfolge halten.



  3.  Die Software zu AX.25/NetROM/ROSE


  Die AX.25-Software besteht aus drei Komponenten:


    dem Kernel-Quelltext

    den Netzwerk-Konfigurationsprogrammen

    den Utilities.

  In den Kernel-Versionen 2.0.35, 2.0.36 und 2.0.37 sind die Treiber fr
  AX.25, NetROM, Z8530 SCC, PI-Karte und PacketTwin standardmig in
  einer aktuellen Version enthalten.  Zum Kernel 2.2.x siehe Anmerkungen
  am Ende dieses Textes.


  3.1.  Woher bekommt man den passenden Kernel und die Software





  3.1.1.  Die Kernel-Quelltexte


  Diese sind an der blichen Stelle bei ftp.kernel.org zu finden.
  Empfohlen wird linux-2.0.37.tar.gz. Es gibt keinen Grund, eine andere
  als diese Kernel-Version aus der 2.0.x-Reihe zu verwenden. Wer seinen
  Kernel von lteren Versionen auf 2.0.37 aktualisieren will, sollte das
  komplette Quelltextarchiv herunterladen, da es mit Patches auf 2.0.37
  zu Problemen kommt, wenn die vorherigen Kernel-Quellen nicht mehr
  original sind.

  Im Hinblick auf die Kernel der 2.2.x-Reihe sind die Mirrors von
  ftp.kernel.org die erste Wahl. Die Adresse des zu bevorzugenden
  Mirrors erhlt man, indem man den Landes-Suffix einfgt; aus
  ftp.kernel.org wird fr Deutschland demnach ftp.de.kernel.org (fr
  Nutzer kommerzieller Onlinedienste ftp2.de.kernel.org).  Dort findet
  man die aktuellen Kernel-Archive unter /pub/linux/kernel/v2.2/.



  3.1.2.  Programme fr die Netzwerkkonfiguration



  3.1.2.1.  Die Net-Tools


  Die aktuelle Version der Standard-Linux-Netzwerk-Tools untersttzt
  AX.25, NetROM und ROSE, sie findet sich auf


       http://www.tazenda.demon.co.uk/phil/net-tools/


  als net-tools-1.52.tar.gz.


  3.1.2.2.  Firewall-Konfiguration


  Die neueste Version des ipfwadm (IP Firewall Administrator) fr den
  Kernel 2.0.37 kann hier bezogen werden:


       ftp.xos.nl:/pub/linux/ipfwadm


  Wer eine aktuelle Distribution einsetzt, sollte vor dem Download
  prfen, ob diese Pakete nicht bereits installiert bzw. auf der
  Installations-CD enthalten sind. Wer auf seinem System eine Nettools-
  Version grer 1.33 vorfindet, braucht sie sich nicht nochmals zu
  installieren. Gleiches trifft auf ipfwadm zu. Hier ist 2.3.0 die
  aktuelle Version (wird mit ipfwadm -h angezeigt).

  Fr die Kernel der 2.2.x-Reihe gibt es an Stelle von ipfwadm das
  Programm ipchains. Zu finden ist es hier:


       ftp.starshadow.com:/pub/rustcorp/ipchains/


  Das Programm wird auf


       http://www.rustcorp.com/linux/ipchains/

  vorgestellt.



  3.1.3.  Die AX.25-Utilities Version 2.1.42a


  Die empfohlene Version der AX.25-Utilities fr den Kernel 2.0.37 auf
  libc5-basierten Systemen ist ax25-utils-2.1.42a. Zu finden ist sie
  hier:


       ftp.funet.fi:/pub/ham/unix/Linux/packet/ax25/



  ltere Versionen sollten nicht eingesetzt werden.  Binre Pakete zur
  direkten Installation unter RedHat 5.2 oder S.u.S.E. 6.0 finden sich
  unter:


       ftp.funet.fi:/pub/ham/unix/Linux/packet/ax25/packages/libc6/rpm


  Wichtig ist hierbei, sowohl ax25-utils-2.1.42a-3.i386.rpm als auch
  ax25-utils-devel-2.1.42a-3.i386.rpm zu installieren, damit auf dem
  AX.25-Subsystem aufbauende Software kompiliert werden kann.

  Dem Debian-Archiv ax25-utils_2.1.42a-6.deb fehlt auf Grund einer
  Fehlinformation der Verantwortlichen (man nahm Lizenzprobleme an) das
  Programm smdiag, so da es nur fr diejenigen geeignet ist, die weder
  BayCom- noch SoundModem verwenden mchten.

  Neue Version 0.0.1 Fr Kernel 2.2.10 gibt es eine komplett
  berarbeitete Fassung der AX.25-Utilities und der bentigten
  Bibliotheken:


       ftp.hes.iki.fi:/pub/ham/linux/ax25


  Da sich sowohl Software als auch Bibliotheken in einer Alpha-Version
  befinden und in nchster Zeit weiter entwickelt werden sollen, wurde
  das Archiv in die Bestandteile ax25-apps-0.0.2.tar.gz,
  ax25-tools-0.0.3.tar.gz und libax25-0.0.5.tar.gz aufgeteilt, die zur
  Installation dieser Version vollstndig bentigt werden.  Weitere
  Informationen liefert diese WWW-Seite:


       http://www.eye-net.com.au/hamradio/


  Vorausgesetzt wird ein installiertes XFree86, zumindest aber die
  Bibliothek libX11, da sich sonst das Programm smdiag nicht kompilieren
  lt.  Viele Dateien sind gespiegelt, d.h, sie befinden sich auf
  Servern, die schneller zu erreichen sind als die Originalserver.  Am
  leichtesten findet  man derartige Mglichkeiten mit FTPSearch.



  4.  Die Software zu AX.25/NetROM/ROSE installieren


  Um die AX.25-Untersttzung erfolgreich nutzen zu knnen, mu man erst
  einen passenden Kernel und anschlieend (unter dem neuen Kernel) die
  AX.25- Utilities installieren.
  4.1.

  Den Kernel kompilieren


  Wer sich mit dem Erstellen eines neuen Kernels auskennt, kann diesen
  Abschnitt berspringen. Wichtig ist die Auswahl der richtigen Optionen
  beim Kompilieren.  Wer noch nicht wei, wie es geht, sollte hier
  weiterlesen. Normalerweise befindet sich der Quelltext des Kernels in
  dem Verzeichnis /usr/src/linux.  Will man nun einen neuen Kernel
  installieren, geht man so vor:



       cd /usr/src




  Falls man bereits ein Linux-Verzeichnis besitzt und dieses nicht
  lschen will, kann man es umbenennen:



       mv linux linux.old




  Da die ausgepackten Quelltexte etwa 20-30 MB auf der Platte belegen,
  sollte man sich berlegen, ob man das Verzeichnis nicht doch lscht:



       rm -r linux




  Die Quelltextarchive sind relativ zu /usr/src gepackt; zum Entpacken
  gibt man ein:




       cd /usr/src
       tar zxvf /tmp/linux-2.0.37.tar.gz




  Bei diesem Beispiel haben wir angenommen, da das Archiv sich in /tmp
  befindet.

  Nachdem die Kernel-Quelltexte erfolgreich entpackt wurden, ruft man
  jetzt das Konfigurationsskript auf:



       cd /usr/src/linux
       make menuconfig





  Unter X11 kann statt dessen auch



       make xconfig




  verwendet werden. Hierfr wird ein installiertes Tcl/Tk in einer
  aktuellen Version bentigt.

  Etwas archaisch, aber bewhrt und stabil:



       make config




  Im folgenden soll die Vorgehensweise bei make menuconfig beschrieben
  werden. Selbstverstndlich lassen sich die beiden anderen
  Mglichkeiten auch nutzen, die Einstellungen sind entsprechend
  anzupassen. In jedem Fall werden viele Fragen gestellt, die man mit
  y (yes), n (no) oder m (Modul) beantworten kann.  Einige
  Eigenschaften lassen sich nmlich auch als Module einrichten, um sie
  nur bei Bedarf nachzuladen und somit Speicher zu sparen. Der
  Einfachheit halber wird hier auf diese Mglichkeit nicht explizit
  eingegangen. Wer Module erstellen will, mu selbst die entsprechenden
  Vernderungen vornehmen. Weitere Informationen findet man im Module
  HOWTO, das zur Zeit leider nicht mehr betreut wird.


  Folgende Optionen sind fr AX.25 wichtig:



       Code maturity level options

       [*] Prompt for development and/or incomplete code/drivers

       Loadable Module Support

       [*] Enable loadable module support (wer Module vorsehen will)
       ...
       [?] Kernel daemon support (e.g. autoload of modules)

       General Setup

       [*] Networking support

       Networking options

       [*] TCP/IP networking
       [?] IP forwarding/gatewaying
       ...
       [?] IP tunneling
       ...
       [?] IP allow large windows (not recommended if < 16 MB of memory)
       ...
       [*] Amateur Radio AX.25 Level 2
       [?] Amateur Radio Net/ROM
       [?] Amateur Radio X.25 PLP (ROSE)


  Fr Kernel 2.2.x zustzlich:



       [*] Packet socket (CONFIG_PACKET)

       Network Device Support

       [*] Network Device Support
       ...
       [*] Radio network interfaces
       [?] BAYCOM ser12 and par96 driver for AX.25
       [?] Soundcard modem driver for AX.25
       [?] Soundmodem support for Soundblaster and compatible cards
       [?] Soundmodem support for WSS and Crystal cards
       [?] Soundmodem support for 1200 baud AFSK modulation
       [?] Soundmodem support for 2400 baud AFSK modulation (7.3728 MHz crystal)
       [?] Soundmodem support for 2400 baud AFSK modulation (8 MHz crystal)
       [?] Soundmodem support for 2666 baud AFSK modulation
       [?] Soundmodem support for 4800 baud HAPN-1 modulation
       [?] Soundmodem support for 4800 baud PSK modulation
       [?] Soundmodem support for 9600 baud FSK G3RUH modulation
       [?] Serial port KISS driver for AX.25
       [?] BPQ Ethernet driver for AX.25
       [?] Gracilis PacketTwin support for AX.25
       [?] Ottawa PI and PI/2 support for AX.25
       [?] Z8530 SCC KISS emulation driver for AX.25
       ...




  Optionen, die mit einem [*] markiert sind, mssen eingeschaltet (mit
  y beantwortet) werden, die mit einem [?] markierten hngen von der
  zu verwendenden Hardware ab und welche weiteren Optionen einbezogen
  werden sollen.  Einiges davon wird spter noch genauer beschrieben, so
  da es sinnvoll ist, bei Unklarheiten erst mal weiterzulesen und
  anschlieend wieder zu diesem Abschnitt zurckzukehren.  Nachdem die
  Konfiguration vervollstndigt wurde, sollte es mglich sein, den
  Kernel problemlos zu kompilieren. Siehe dazu auch die Anmerkung zu
  KISS im Abschnitt ``KISS''. Wichtig ist es, in jedem Fall vor dem
  Kompilieren die Datei /usr/src/linux/Documentation/CHANGES zu lesen
  und sicherzustellen, da die dort erwhnten Programmpakete mindestens
  in der angegebenen Version installiert sind.  Kompiliert wird mit:



       make dep
       make clean
       make zImage





  Der make-Befehl akzeptiert die einzelnen Optionen auf einer Zeile, so
  da man auch




       make dep clean zImage




  eingeben kann. Wurde der Kernel erfolgreich kompiliert, kann man ihn
  dorthin bringen, wo er hin mu:



       cat /usr/src/linux/arch/i386/boot/zImage > /vmlinuz




  Wer Lilo installiert hat, mu diesen starten:



       lilo




  Auf diese Weise erkennt Lilo, da ein neuer Kernel installiert wurde
  und bootet diesen beim nchsten Neustart. Ein



       make zlilo




  automatisiert die Schritte zImage, Kernelkopie und LILO-Installation.
  Da hierbei gleichzeitig die Datei System.map aktualisiert wird, ist
  dieser Befehl von Vorteil. Wer sich aber nicht sicher ist, ob der neue
  Kernel auch wirklich startet, sollte dann aber eine Bootdiskette
  bereithalten.  Weitere Informationen zu diesem Thema gibt das Kernel
  HOWTO.  Wer seinen Kernel mit einem Patch auf die aktuelle Version
  bringen will, sollte nach dem Patchen mittels




       cd usr/src/linux
       zcat /pfad/zum/patch-x.x.x.gz | patch -p1





  das Quelltextverzeichnis mit einem




       find /usr/src/linux -name *.orig | xargs rm




  aufrumen. Ein



       find /usr/src/linux -name *.rej -print




  sollte ohne Ausgaben bleiben, sonst ist mit dem Patchen etwas
  schiefgelaufen.



  4.1.1.  Ein Wort zu den Kernel-Modulen


  Einsteigern wird zwar nicht empfohlen, die Treiber als Module zu
  kompilieren, es ist jedoch in der Testphase manchmal recht hilfreich.
  Das korrekte Funktionieren der Module hngt von passenden Eintrgen in
  der Datei System.map ab. Bekommt man beim Laden von Modulen
  Fehlermeldungen bezglich unresolved symbols, so gibt es dafr zwei
  Ursachen. Das Problem kann sowohl durch eine nicht zum laufenden
  Kernel passende System.map als auch durch ein nicht aktualisiertes
  Modul-Verzeichnis hervogerufen werden. Im ersteren Fall hilft das
  Kopieren der passenden System.map nach /.  In letzterem Fall sollte
  man das Verzeichnis /lib/modules/{aktuelle Kernel-Version} leeren und
  die Module noch einmal neu erstellen und installieren:



       cd /usr/src/linux
       make modules modules_install




  Dieser Schritt ist selbstverstndlich ebenfalls nach der Erstellung
  eines neuen Kernels fllig. Anschlieend aktualisiert man die
  Abhngigkeiten der einzelnen Module untereinander mit:



       depmod -a




  Weiterhin ist es notwendig, einige Eintrge in der Datei
  /etc/conf.modules hinzuzufgen, damit die Module im Bedarfsfall durch
  den kerneld automatisch geladen werden knnen. Der kerneld mu dafr
  gestartet sein, ein



       ps fax | grep kerneld




  sollte das auch anzeigen.

  Hier also ein Beispiel:












  #/etc/conf.modules
  #
  # Konfigurationsdatei fr den kerneld
  #
  # WICHTIG: Alle genannten Treiber mssen als gleichnamige
  # Module in /lib/modules/{Kernelversion} vorliegen!
  #
  alias net-pf3           ax25
  #
  # Suche nach einem Treiber unterdrcken:
  # (Wichtig bei einigen Programmen der Debian-Distribution)
  #
  alias net-pf5           off
  #
  alias net-pf6           netrom
  alias net-pf-11         rose
  alias tty-ldisc-1       slip
  alias tty-ldisc-3       ppp
  alias tty-ldisc-5       mkiss
  #
  # Fr jedes Device mu einzeln ein Alias-Eintrag erfolgen:
  #
  alias bc0               baycom
  alias bc1               baycom

  alias nr0               netrom
  alias pi0a              pi2
  alias pt0a              pt
  #
  # Fr die nchste Zeile den jeweils passenden
  # Treiber auswhlen:
  alias scc0              optoscc
  #
  alias sm0               soundmodem
  alias tun10             newtunnel
  #
  # Wichtig fr Anwernder der SuSE-Distribution, Version 6,
  # mit Kernel 2.2.x:
  #
  alias char-major-4      serial
  alias char-major-5      serial
  alias char-major-6      lp
  alias net-pf-17         af_packet
  #
  # ACHTUNG: Die folgenden Eintrge werden nur fr Kernel
  # ab 2.2.0 bentigt!
  alias bcsf0          baycom_ser_fdx
  alias bcsh0          baycom_ser_hdx
  alias bcp0           baycom_par
  alias bce0           baycom_epp
  #
  # Wer den neuen 6pack-Treiber nutzen will, braucht:
  alias tty-ldisc-7 6pack
  alias sp0 6pack





  Insbesondere diejenigen, die BayCom- oder SoundModems verwenden
  wollen, sollten die entsprechenden Treiber als Module vorsehen.  Dazu
  folgen spter noch weitere Erklrungen.




  4.1.2.  Was ist neu in den verschiedenen Kernel-Versionen?


  In den Kerneln der Versionen ab 2.0.35 und 2.1.xx sind verbesserte
  Versionen von fast allen Protokollen und Treibern enthalten.  Die
  wichtigsten Verbesserungen sind:


     modularisiert
        Alle Protokolle und Treiber liegen auch als Module vor, so da
        man sie mit insmod laden und mit rmmod entfernen kann, wenn man
        es wnscht. Damit reduzieren sich die Speicheranforderungen des
        Kernels fr selten genutzte Module, Entwicklung und Fehlersuche
        werden um einiges einfacher. Doch, wie bereits gesagt, die
        Konfiguration wird etwas schwieriger.


     Alle Treiber sind jetzt Netzwerktreiber
        Alle Devices wie PacketTwin, SCC und BayCom usw. bieten jetzt
        ein normales Netzwerkinterface an; sie erscheinen den Programmen
        wie der Ethernet-Treiber, nicht mehr wie KISS-TNCs. Wer will,
        kann mit dem neuen Utility net2kiss ein KISS-Interface auf diese
        Devices aufsetzen.


     Fehler beseitigt
        Viele Fehler wurden beseitigt, neue Eigenschaften wurden
        hinzugefgt. Eine wichtige Erweiterung ist das ROSE-Protokoll.




  4.2.  Die Tools zur Netzwerkkonfiguration


  Nachdem der Kernel kompiliert wurde (und auch startet), sollten die
  neuen Netzwerk-Tools kompiliert werden.  Sie erlauben Vernderungen an
  der Konfiguration der Netzwerk-Devices und das Hinzufgen von Routen
  zur Routing-Tabelle.

  Informationen zur derzeit aktuellen Version (net-tools-1.52.tar.gz)
  finden sich hier:


       http://www.tazenda.demon.co.uk/phil/net-tools/


  Die Net-Tools werden von Phil Blundell (pb@nexus.co.uk) betreut, Bernd
  Eckenfels (Bernd.Eckenfels@inka.de) ist der "Co-Maintainer". Seine
  Net-Tools-Page findet man dieser Adresse:


       http://sites.inka.de/sites/lina/linux/NetTools/



  4.2.1.  Die Standardfassung der Net-Tools erstellen


  Nicht vergessen: nach dem Entpacken die Datei Release lesen und den
  dort stehenden Anweisungen folgen.  Mit folgenden Schritten
  installiert man die Net-Tools:




  cd /usr/src
  tar zxvf /tmp/net-tools-1.52.tar.gz
  cd net-tools-1.52
  make config




  An dieser Stelle werden, hnlich wie bei der Kernel-Konfiguration,
  einige Fragen gestellt.  Man mu nun sicherstellen, alle Protokolle
  und Typen von Netzwerk-Devices einzubinden, die genutzt werden sollen.

  Fragen, auf die man keine Antwort wei, sollte man mit y
  beantworten.  Wichtig: Die Protokolle mssen vorher auch bei der
  Kernel-Konfiguration eingeschaltet worden sein. Hat man zum Beispiel
  AppleTalk beim Kernel deaktiviert, so darf man die entsprechende
  Frage bei den Net-Tools nicht mit y beantworten.  Beachtet man dies
  nicht, so knnen die Tools nicht kompiliert werden.  Nach beendeter
  Kompilierung werden die Programme mit



       make install




  an passender Stelle installiert.


  4.2.2.  Ipfwadm und ipchains


  Wer die IP-Firewall-Mglichkeiten nutzen will, bentigt das aktuelle
  Tool ipfwadm zur Administration der Firewalls. Das ltere Programm
  ipfw arbeitet mit den neueren Kernels nicht zusammen und wird daher
  durch ipfwadm ersetzt.  Folgende Optionen beim Kernel-Kompilieren
  mssen gesetzt sein:



       Networking options

       [*] Firewalling
       [*] IP Firewalling




  Mit folgenden Befehlen wird ipfwadm kompiliert:



       cd /usr/src
       tar zxvf /tmp/ipfwadm-2.3.0.tar.gz
       cd ipfwadm-2.3.0
       make install
       cp ipfwadm.8 /usr/man/man8
       cp ipfw.4 /usr/man/man4




  Nutzer eines Kernels der 2.2.x-Reihe bentigen an Stelle des ipfwadm
  das Programm ipchains. Wenn die Datei /proc/net/ip_fwchains existiert,
  dann ist der Kernel mit ipchains funktionsfhig.  Andernfalls mu er
  neu bersetzt werden; siehe dazu auch das im ipchains-Archiv
  enthaltene HOWTO.  Das Kompilieren ist auch hier recht einfach:



       cd /usr/src
       tar zxvf /tmp/ipchains-1.3.9.tar.gz
       cd ipchains-1.3.9
       make install




  Wer diese Pakete bereits in seiner Distribution vorfindet, braucht sie
  natrlich nicht nochmals zu installieren.





  4.3.  Die Anwender- und Utilityprogramme zu AX.25


  Nachdem der neue Kernel erfolgreich kompiliert und mit diesem neu
  gestartet wurde, mssen jetzt die Anwenderprogramme kompiliert werden.
  Das geht mit folgenden Befehlen:



       cd /usr/src
       tar zxvf /tmp/ax25-utils-2.1.42a.tar.gz
       cd ax25-utils-2.1.42a
       make config
       make
       make install




  Debian-Nutzer mssen vorher die Verzeichnisse /usr/include/asm und
  /usr/include/linux umbenennen und an ihrer Stelle Links auf den
  Kernel-Quelltext legen:



       cd /usr/include
       mv linux linux.debian
       mv asm asm.debian
       ln -s /usr/src/linux/include/linux linux
       ln -s /usr/src/linux/include/asm asm




  Man sollte in diesem Zusammenhang kontrollieren, da
  /usr/src/linux/include/asm ein Link auf asm-i386 ist. Die Dateien
  werden im Verzeichnis /usr in die Unterverzeichnisse bin, sbin und man
  installiert.  Werden die AX.25-Utilities zum allerersten Mal
  installiert, d.h., sie befanden sich noch nie vorher auf dem System,
  so verwendet man auch den Befehl



       make installconf


  der einige Beispiel-Konfigurationsdateien unter /etc/ax25 installiert,
  die als Grundlage fr die eigene Konfiguration dienen knnen.
  Erscheinen Bildschirmmeldungen wie



       gcc-Wall -Wstrict-prototypes -o2 -I../lib -c call.c
       call.c: In funktion `statline':
       call.c:268: warning: implicit declaration of function `attron'
       call.c:268: `A_REVERSE' undeclared (first use this function)
       call.c:268: (Each undeclared identifier is reported only once
       call.c:268: for each function it appears in)




  sollte man doppelt berprfen, ob das ncurses-Paket installiert ist.
  Das Konfigurationsskript versucht, ncurses an den blichen Stellen zu
  finden, doch auf manchen Systemen ist ncurses nicht richtig
  installiert und es kann dann das Paket nicht finden.  Wer Programme
  kompilieren will, die die AX.25-Bibliotheken nutzen, und dabei
  Fehlermeldungen erhlt, kann die Bibliotheken mit



       make installib




  korrekt installieren.



  4.3.1.  Hinweis fr die Benutzer libc6-basierter Systeme (S.u.S.E.
  6.0, RedHat 5.2, Debian 2.0...)


  Die im vorigen Abschnitt besprochenen AX-25-Utils lassen sich auf
  Systemen, die die libc6 bzw. glibc 2.x verwenden, nicht mehr
  kompilieren.

  Unter folgenden Adressen


    ftp.suse.com:/pub/projects/ham/

    ftp.funet.fi:/pub/ham/unix/Linux/packet/ax25/packages/libc6/rpm

  findet man die Pakete


    ax25util-2.1.42a-0.i386.rpm (ftp.suse.com)

    ax25util-2.1.42a-3.i386.rpm (ftp.funet.fi)

    ax25util-devel-2.1.42a-0.i386.rpm (ftp.suse.com)

    ax25util-devel-2.1.42a-3.i386.rpm (ftp.funet.fi)


  die zur Verwendung auf den erwhnten Systemen gedacht sind. Auf


       ftp.funet.fi:/pub/ham/unix/Linux/packet/ax25/packages/libc6/deb/

  findet sich das Paket ax25-utils_2.1.42a-6.deb fr die Nutzer der
  Debian-Distribution. Da die Pakete bereits vorkompilierte Versionen
  der AX-25-Utilities enthalten, ist ein Selbstkompilieren nicht mehr
  unbedingt notwendig. Wichtig ist jedoch, auf die korrekte Installation
  der Header-Dateien zu achten (ax25util-devel-2.1.42a-0.i386.rpm), da
  sich sonst einige AX.25-Anwendungen, wie PR-Terminalprogramme, nicht
  kompilieren lassen.

  Dem Debian-Paket fehlt das Programm smdiag. Deshalb sollte es nur
  eingesetzt werden, wenn kein BayCom- oder SoundModem verwendet werden
  soll. Wer dieses Programm bentigt, sollte das RPM-Archiv der
  AX.25-Utilities ebenso wie das Development-Archiv mit dem Tool alien
  nach *.deb konvertieren und mit dpkg installieren.

  Eine weitere Mglichkeit stellt das auf der Homepage von Patrick
  Ouellette (pouellet@eng.utoledo.edu) verfgbare Archiv
  ax25-utils-2.1.42.kb8pym.tar.gz dar, das Ergebnis von Patricks
  Modifikationen ist, die er in dem Patch ax25-utils-2.1.42.kb8pym.diff
  zusammengefat hat.  Dieser Patch sollte mit dem Standardarchiv
  ax25-utils-2.1.42a.tar.gz funktionieren. Patrick weist jedoch
  ausdrcklich darauf hin, da es sich hierbei um Testversionen handelt.
  Da zunchst nur Wert auf Kompilierbarkeit gelegt wurde, sind manche
  Programme evtl. nicht funktionsfhig.


  4.3.2.  Die aktuellen AX.25-Utilities 0.0.1


  Die neue Version der AX.25-Utilities wird erstellt, indem die drei
  Archive


    ax25-apps-0.0.2.tar.gz

    ax25-tools-0.0.3.tar.gz

    libax25-0.0.5.tar.gz

  in das Verzeichnis /usr/src entpackt und von dort aus installiert
  werden:



       cd /usr/src
       tar -zxvf archivname
       cd {archivname ohne die Endung .tar.gz}
       ./configure
       make install







  5.  Ein Hinweis zu Rufzeichen, Adressen und all diesen Dingen


  Jeder AX.25- oder NetROM-Port mu ein eigenes Rufzeichen/SSID
  besitzen. Diese werden in den weiter unten beschriebenen
  Konfigurationsdateien eingestellt.  Bei manchen AX.25-Implementationen
  wie NOS und BPQ kann man jedem AX.25- und NetROM-Port das gleiche
  Rufzeichen zuteilen.

  Aus etwas komplizierten technischen Grnden ist das unter Linux nicht
  mglich.  In der Praxis ist das nicht so ein groes Problem, wie es
  zunchst scheint.  Das bedeutet, da es einige Dinge gibt, die bei der
  Konfiguration beachtet werden mssen:


  1. Jeder AX.25- und NetROM-Port mu sein eigenes Rufzeichen/SSID
     bekommen.

  2. TCP/IP nutzt das Rufzeichen des Ports, ber den es ausgesendet oder
     empfangen wird, d.h., das in Punkt 1. angegebene Rufzeichen.

  3. NetROM nutzt das in seiner speziellen Konfigurationsdatei
     eingestellte Rufzeichen, dieses wird allerdings nur dann verwendet,
     wenn eine Verbindung zu einer anderen NetROM-Station besteht, es
     ist nicht das Rufzeichen, welches AX.25-Nutzer verwenden mssen,
     wenn sie den Node rufen wollen. Mehr dazu spter.

  4. ROSE nutzt standardmig das Rufzeichen des AX.25-Ports, es sei
     denn, es wurde mit dem rsparms-Befehl ein anderes Rufzeichen
     eingestellt.  Wurde mit rsparms ein Rufzeichen vergeben, dann
     verwendet ROSE dieses auf allen (ROSE-)Ports.

  5. Andere Programme, wie der ax25d, knnen zum Mithren jedes
     Rufzeichen verwenden, das sie wollen, und diese knnen auch fr
     verschiedene Ports genutzt werden.

  6. Wenn man das Routing sorgfltig einstellt, kann man allen Ports
     dieselbe IP-Adresse zuordnen.



  5.1.  Was bedeuten T1, T2, N2,...?


  Nicht jede AX.25-Implementation ist ein TNC2.  Linux verwendet eine
  Nomenklatur, die etwas anders ist als die von einem TNC gewohnte. In
  der folgenden Tabelle sind die einstellbaren Parameter und ihre
  Bedeutung aufgelistet, so da man hier immer wieder nachschlagen kann,
  wenn sie im Text erwhnt werden.




























  +--------------+--------------+----------+----------------------------------+
  |   Linux      |   TAPR TNC   |   TNC2   |   Beschreibung                   |
  +--------------+--------------+----------+----------------------------------+
  |   T1         |   FRACK      |   F      | (Frame Acknowledgement Timer)    |
  |              |              |          | Gibt an, wie lange gewartet wird,|
  |              |              |          | bevor ein unbesttigtes Paket    |
  |              |              |          | noch mal ausgesendet wird        |
  +--------------+--------------+----------+----------------------------------+
  |   T2         |   RESPTIME   |   @T2    | Minimale Zeit, die auf ein       |
  |              |              |          | weiteres Paket gewartet wird,    |
  |              |              |          | bevor Empfangsbesttigung        |
  |              |              |          | gesendet wird                    |
  +--------------+--------------+----------+----------------------------------+
  |   T3         |   CHECK      |   @T3    | Zeit, die gewartet wird, bevor   |
  |              |              |          | der Link berprft wird (Polling)|
  +--------------+--------------+----------+----------------------------------+
  |   N2         |   RETRY      |   N      | Zahl der Wiederholungen der      |
  |              |              |          | Aussendung eines Paketes, bevor  |
  |              |              |          | die Verbindung als zusammen-     |
  |              |              |          | gebrochen angesehen wird         |
  +--------------+--------------+----------+----------------------------------+
  |   Idle       |              |          | Zeit, die eine Verbindung        |
  |              |              |          | unbenutzt sein darf, bis sie     |
  |              |              |          | beendet wird (Link Timeout)      |
  +--------------+--------------+----------+----------------------------------+
  |   Window     |   MAXFRAME   |   O      | Maximale Anzahl unbesttigter    |
  |              |              |          | Pakete                           |
  +--------------+--------------+----------+----------------------------------+







  5.2.  Zur Laufzeit konfigurierbare Parameter


  In den 2.1.xx-Kernels, den 2.0.xx-Kernels mit Module-xx-Patch und
  Kernels ab 2.0.35 lassen sich viele Parameter auch zur Laufzeit
  einstellen.  Schaut man sich die Dateien unter /proc/sys/net an, so
  wird man viele Dateien mit selbsterklrenden Namen finden, die
  verschiedene Parameter der Netzwerkkonfiguration beschreiben.  Jedes
  der Verzeichnisse unter /proc/sys/net/ax25 reprsentiert einen
  AX.25-Port, wobei dessen Name vom Portnamen abhngt.  Die folgenden
  Dateien sind unter /proc/sys/net/ax25/<portname>/ zu finden:




















  Dateiname             Bedeutung                Wert            Voreinstellung
  -----------------------------------------------------------------------------
  ip_default_mode       voreingestellter IP-     0=DG 1=VC         0
                        Modus
  ax25_default_mode     voreingestellter AX.25-  0=Normal,         0
                        Modus                    1=Erweitert
  backoff_type          Backoff                  0=Linear,         1
                                                 1=Exponentiell
  connect_mode          Verbindungsstatus        0=nein,           1

                                                 1=ja
  standard_window_size  Standard-Maxframe        1 <= O <= 7       2
  extended_window_size  Erweitertes Maxframe     1 <= O <= 63      32
  t1_timeout            T1-Timer                 1s <=T1<= 30s     10 s
  t2_timeout            T2-Timer                 1s <=T2<= 20s     3 s
  t3_timeout            T3-Timer                 0s <=T3<= 3600s   300 s
  idle_timeout          Link-Timeout             0min <=idle       20 min
  maximum_retry_count   Anzahl Retries (N)       1 <= N <= 31      10
  maximum_packet_length AX.25-Paketlnge         1 <=Lnge<= 512   256
  -----------------------------------------------------------------------------




  In dieser Tabelle sind die Werte fr T1, T2 und T3 in Sekunden, fr
  den idle-Timer (Link-Timeout) in Minuten angegeben, es mu aber
  beachtet werden, da die Werte in dem sysctl-Interface in internen
  Einheiten gezhlt werden. Diese entsprechen der Zeit in Sekunden * 10,
  so da eine Schrittweite von 1/10 Sekunde mglich wird. Bei
  Zeitgebern, die einen Wert von 0 erlauben (z.B. T3 und idle), bedeutet
  0, da sie ausgeschaltet sind.  In /proc/sys/net/netrom finden sich
  folgende Dateien:



       Dateiname                                     Wert             Voreinstellung
       -----------------------------------------------------------------------------
       default_path_quality                                           10
       link_fails_count                                               2
       network_ttl_initialiser                                        16
       obsolescence_cont_initialiser                                  6
       routing_control                                                1
       transport_acknowledge_delay                                    50
       transport_busy_delay                                           1800
       transport_maximum_tries                                        3
       transport_requested_window_size                                4
       transport_timeout                                              1200
       -----------------------------------------------------------------------------




  In /proc/sys/net/rose sieht die Struktur so aus:













  Dateiname                                     Wert             Voreinstellung
  -----------------------------------------------------------------------------
  acknowledge_hold_back_timeout                                  50
  call_request_timeout                                           2000
  clear_request_timeout                                          1800
  link_fail_timeout                                              1200
  maximum_virtual_circuits                                       50
  reset_request_timeout                                          1800
  restart_request_timeout                                        1800
  routing_control                                                1
  window_size                                                    3
  -----------------------------------------------------------------------------




  Um einen Parameter einzustellen, mu man den gewnschten Wert in die
  entsprechende Datei schreiben, um zum Beispiel die Maxframe-Anzahl fr
  ROSE zu prfen und einzustellen, geht man so vor:



       cat /proc/sys/net/rose/window_size

       Bildschirmausgabe: 3
       echo 4 > /proc/sys/net/rose/window_size
       cat /proc/sys/net/rose/window_size

       Bildschirmausgabe: 4








  6.  Einen AX.25-Port einrichten


  Jede der AX.25-Anwendungen liest die Parametereinstellungen fr die
  verschiedenen AX.25-Ports aus einer speziellen Konfigurationsdatei.
  Fr reine AX.25-Ports ist dies die Datei /etc/ax25/axports. Sie mu
  fr jeden auf dem System verwendeten AX.25-Port einen Eintrag
  erhalten.


  6.1.  Das AX.25-Netzwerk-Device erstellen


  Das Netzwerk-Device ist das, was aufgelistet wird, wenn man ifconfig
  startet. Es sind die Objekte, an die der Linux-Kernel Netzwerkdaten
  sendet und von denen er sie empfngt.  Fast immer ist das Netzwerk-
  Device mit einem physikalischen Port verbunden, in manchen Situationen
  ist dies aber nicht notwendig. Das Netzwerk-Device steht in direkter
  Beziehung zu einem Gertetreiber.  Der Linux-AX.25-Code enthlt einige
  Gertetreiber. Der gebruchlichste ist sicher der KISS-Treiber,
  weiterhin gibt es noch SCC-Treiber, den BayCom- Treiber und den
  SoundModem-Treiber.

  Jeder dieser Treiber erzeugt ein Netzwerk-Device, wenn er gestartet
  wird.  Wichtiger Hinweis fr Nutzer eines 2.2.x-Kernels: Wird ein
  Kernel der 2.2.x-Reihe verwendet, so ist jedem AX.25-Netzwerk-Device
  eine IP-Adresse zuzuordnen, auch wenn damit kein TCP/IP gefahren
  werden soll. Im einfachsten Fall geschieht das mit ifconfig
  {Devicename} {IP-Adresse}:
       ifconfig bcsf_0 44.136.8.5 netmask 255.255.255.0 up





  6.1.1.  KISS


  Optionen bei der Kernel-Kompilierung:



       General Setup

       [*] Networking support

       Network Device Support

       [*] Network Device Support
       ...
       [*] Radio network interfaces
       ...
       [*] Serial port KISS driver for AX.25




  Die hufigste Konfiguration ist sicher ein KISS-TNC an der seriellen
  Schnittstelle. Dieser mu vorkonfiguriert und an die Schnittstelle
  angeschlossen sein. Der TNC kann mit einem Programm wie Minicom oder
  Seyon in den KISS-Modus gebracht werden.

  Um ein KISS-Device zu erzeugen, wird das Programm kissattach
  verwendet: (Annahmen: TNC hngt an /dev/ttyS0 (COM1) und der
  vorgesehene Port in /etc/ax25/axports heit radio)



       /usr/sbin/kissattach /dev/ttyS0 radio
       kissparms -p radio -t 100 -s 100 -r 25




  Damit wird ein KISS-Netzwerk-Device erzeugt. Diese Devices erhalten
  die Namen ax0 - ax9. Beim ersten Aufruf erzeugt kissattach ax0, beim
  zweiten ax1 usw..

  Jedes Kiss-Device hat eine zugehrige serielle Schnittstelle.  Mit
  kissparms lassen sich verschiedene Parameter des Kiss-Device
  einstellen.  Das oben dargestellte Beispiel erzeugt ein Kiss-Device,
  welches die erste serielle Schnittstelle und den Eintrag radio in
  der Datei /etc/ax25/axports nutzt. Anschlieend wird es auf ein
  TXDelay und eine Slottime von 100 Millisekunden und einen Persistence-
  Wert von 25 eingestellt.  Weitere Informationen geben die Hilfeseiten
  der einzelnen Programme.

  Erscheint die Fehlermeldung



       kissattach: TIOCSETD: Invalid argument



  so sollte man nochmals prfen, ob der Serial port KISS driver auch
  wirklich in den Kernel einkompiliert oder als Modul geladen wurde. Der
  Treiber kann fest einkompiliert werden (CONFIG_MKISS=y in
  /usr/src/linux/config) wenn die AX-25-Untersttzung (siehe Abschnitt
  ``Den Kernel kompilieren'') ebenfalls fest einkompiliert wurde.
  Andernfalls mu er als Modul kompiliert werden, oder die Erstellung
  des neuen Kernels wrde fehlschlagen.

  Einrichtung von Dual-Port-TNCs

  Das mkiss-Utility, das bei den AX.25-Utilities dabei ist, erlaubt die
  Nutzung beider Modems an einem Dual-Port-TNC. Die Konfiguration ist
  recht einfach.  Der Multiport-TNC wird an eine serielle Schnittstelle
  des Rechners angeschlossen. Die anschlieende Konfiguration lt ihn
  dann als mehrere einzelne seriell angeschlossene TNCs erscheinen.

  Das Ganze mu vor der AX.25-Konfiguration durchgefhrt werden.  Die
  Gerte, die dann einzurichten sind, sind Pseudo-TTY-Interfaces,
  (/dev/ttyq*) und nicht die eigentliche serielle Schnittstelle. Mit
  Pseudo-TTY wird eine Art Rhre (Pipe) erzeugt, durch die Programme,
  die mit TTY-Gerten Daten austauschen, mit anderen Programmen, die
  ebenfalls fr Datenaustausch mit TTY-Gerten entwickelt wurden,
  kommunizieren knnen.

  Jede dieser Rhren hat ein Master- und ein Slave-Ende.  Die
  Master-Enden heien /dev/ptyq*, die Slave-Enden /dev/ttyq*. Jeder
  Master hat einen Slave, /dev/ptyq0 ist also der Master einer Pipe,
  deren Slave /dev/ttyq0 ist. Man mu das Master-Ende einer Pipe vor
  dem Slave-Ende ffnen.  mkiss nutzt diesen Mechanismus, um ein
  einzelnes serielles Device auf mehrere virtuelle Devices aufzuteilen.

  Hat man z.B. einen Dual-Port-TNC an eine serielle Schnittstelle
  /dev/ttyS0 mit 9600 bps angeschlossen, erzeugen die Befehle



       /usr/sbin/mkiss -s 9600 /dev/ttyS0 /dev/ptyq0 /dev/ptyq1
       /usr/sbin/kissattach /dev/ttyq0 port1
       /usr/sbin/kissattach /dev/ttyq1 port2




  zwei Pseudo-TTY-Devices, die beide wie ein normaler Single-Port-TNC
  erscheinen.

  Nun lassen sich /dev/ttyq0 und /dev/ttyq1 wie serielle Schnittstellen
  mit daran angeschlossenen konventionellen KISS-TNCs behandeln.  Das
  heit, man verwendet kissattach wie oben beschrieben, fr die
  AX.25-Ports port1 und port2.  Auf die serielle Schnittstelle selbst
  kann kein kissattach angewendet werden, da mkiss diese ja bereits
  nutzt. Der Befehl mkiss kennt einige Optionen:



     -c schaltet die Erzeugung einer Prfsumme fr jedes KISS-Paket ein.
        Die meisten KISS-Implementationen, auer dem G8BPG KISS-ROM,
        untersttzen dies jedoch nicht.


     -s <Baudrate> stellt die Baudrate der seriellen Schnittstelle ein.


     -h schaltet den Hardware-Handshake ein (Voreinstellung: Aus).  Wird
        von den meisten KISS-Implementationen nicht untersttzt.

     -l schaltet eine Mitschrift (logging) in die syslog-Logdatei ein.




  6.1.2.  BayCom


  Folgende Optionen zur Kernel-Kompilierung sind wichtig:



       Code maturity level options

       [*] Prompt for development and/or incomplete code/drivers

       General Setup
       [*] Networking support
       ...

       Network Device Support

       [*] Radio network interfaces
       [*] BAYCOM ser12 and par96 driver for AX.25





  Fr erste Tests sollte der Treiber mit m als Modul kompiliert
  werden. Thomas Sailer (sailer@ife.ee.ethz.ch) entwickelte trotz des
  weitverbreiteten Glaubens, es wrde nicht sonderlich gut
  funktionieren, eine BayCom-Untersttzung fr Linux.

  Sein Treiber untersttzt die seriellen Ser12, die parallelen Par96 und
  die verbesserten PicPar-Modems. Informationen ber diese Modems erhlt
  man auf der WWW-Seite des BayCom-Teams unter folgender URL:


       http://www.baycom.de


  Der erste Schritt ist, herauszufinden, welche I/O-Adresse und IRQ die
  Schnittstelle verwendet, an die das BayCom-Modem angeschlossen ist.
  Der BayCom-Treiber mu mit diesen Werten konfiguriert werden.  Ist
  dies geschehen, erzeugt der Treiber Netzwerk-Devices mit den Namen
  bc0, bc1, bc2 usw..

  In den Kerneln der 2.2.x-Reihe wurden die Bezeichnungen fr das
  Baycom-Modul und die von ihm erzeugten Devices gendert. Es gibt hier
  fr Half- und Fullduplex getrennte Treiber:















  Modul-Name           Funktion                                  Device
  ------------------------------------------------------------------------------
  baycom_ser_fdx       serielles BayCom-Modem, Fullduplex und    bcsf0..bcsf3
                       Halfduplex, umschaltbar,
                       whlbare Baudrate

  baycom_ser_hdx       serielles BayCom-Modem, nur Halfduplex,   bcsh0..bcsh3
                       nur 1200 Baud

  baycom_par           paralleles PicPar- und Par96-Modem,       bcp0..bcp3

  baycom_epp           EPP-Modem                                 bce0..bce3
                       (Treiber noch in Entwicklung!)




  Anstelle von



       insmod baycom




  schreibt man also



       insmod baycom_ser_fdx




  und konfiguriert bcsf0 statt bc0.

  Das sieht dann z.B. so aus:



       insmod baycom_ser_fdx mode="ser12*" iobase=0x3f8 irq=4
       sethdlc -i bcsf0 -p mode "ser12*" io 0x3f8 irq 4





  Ausfhrlichere Informationen zu den neuen Treibern knnen in der Datei
  /usr/src/linux/Documentation/networking/baycom.txt nachgelesen werden.

  Die Parameter der verwendeten Schnittstelle knnen mit dem Utility
  sethdlc eingestellt werden, hat man nur ein BayCom-Modem installiert,
  so kann man die Parameter auf der Kommandozeile fr insmod angeben,
  wenn der als Modul eingerichtete Treiber geladen wird.

  Als Beispiel eine einfache Konfiguration. Zunchst wird der normale
  serielle Treiber fr die erste Schnittstelle (COM1) abgeschaltet, dann
  der BayCom-Treiber fr ein serielles 1200-Baud-Modem an COM1
  eingerichtet und die Software-DCD eingeschaltet:






  setserial /dev/ttyS0 uart none
  insmod hdlcdrv
  insmod baycom mode="ser12*" iobase=0x3f8 irq=4




  Wichtig: Einige Schnittstellenbausteine bereiten Probleme im
  Zusammenhang mit dem BayCom-Treiber. Dieser wird zwar geladen, kann
  aber nicht auf die Schnittstelle zugreifen. Dies betrifft insbesondere
  viele der neueren 16550A-UARTs, wie sie auf Pentium-Motherboards oft
  eingebaut sind.  Benutzer eines Kernel 2.2.x knnen in einem solchen
  Fall an Stelle von baycom_ser_fdx baycom_ser_hdx probieren, da dieser
  Treiber in anderer Weise auf die Hardware zugreift.

  Wer nun keine zustzliche Schnittstellenkarte mit 8250 oder 16450 UART
  vorsehen will, der sollte vor die erste setserial-Zeile des Beispiels
  einfgen:



       setserial /dev/ttyS0 uart 16550A skip_test




  Weiterhin strt der Linux-Treiber fr die parallele Schnittstelle die
  korrekte Funktion des BayCom-Treibers. Man sollte daher auf den
  parallel printer support im Kernel verzichten oder diesen als Modul
  kompilieren, damit er bei Notwendigkeit via rmmod entfernt werden
  kann:



       rmmod lp




  Das komplette Skript sieht dann etwa so aus:



       #!/bin/sh
       rmmod lp
       setserial /dev/ttyS0 uart 16550A skip_test
       sleep 3
       setserial /dev/ttyS0 uart none
       insmod hdlcdrv
       insmod baycom mode="ser12*" iobase=0x3f8 irq=4




  Damit sollte der Treiber funktionieren, was man mit sethdlc -d einfach
  nachprfen kann. Der Wert hinter dbg2 sollte etwa 2000-3000 sein und
  sich stndig ndern.  Die Probleme mit dem Schnittstellenbaustein sind
  ausschlielich auf Schwierigkeiten des Linux-BayCom-Treibers bei der
  Hardwareinitialisierung zurckzufhren und deshalb von der
  eingesetzten Modemschaltung weitestgehend unabhngig. Fr den Test mit
  sethdlc braucht das Modem nicht angeschlossen zu sein.

  Ein Par96-Modem am Parallelport LPT1 mit Hardware-DCD richtet man so
  ein:


       insmod hdlcdrv
       insmod baycom mode="par96" iobase=0x378 irq=7 options=0




  Dies ist aber nicht unbedingt der beste Weg.  sethdlc arbeitet genau
  so gut mit einem Modem wie mit mehreren. In der Hilfeseite (man
  sethdlc) findet man alle Details, einige Beispiele sollen diesen
  Aspekt hier verdeutlichen. Es wird angenommen, das BayCom-Modul ist
  mit



       insmod hdlcdrv
       insmod baycom




  bereits geladen oder als Treiber in den Kernel einkompiliert. Man kann
  das Netzwerk-Device bc0 nun einrichten:


    als Parallelport-Modem an LPT1 mit Software-DCD:



       sethdlc -p -i bc0 mode par96 io 0x378 irq 7





    als serielles Modem an COM1:



       sethdlc -p -i bc0 mode "ser12*" io 0x3f8 irq 4







  6.1.2.1.  AX.25-Kanalzugriffsparameter


  Die AX.25-Kanalzugriffsparameter entsprechen den Parametern ppersist,
  txdelay und slottime. Wiederum wird dazu sethdlc verwendet. Genaueres
  steht wiederum in der Hilfeseite, aber ein weiteres Beispiel kann
  nicht schaden. Wir setzen also das oben begonnene Skript fort, indem
  wir den BayCom-Treiber mit TXDelay 200 ms, SlotTime 100 ms PPersist 40
  und Half-Duplex einrichten:



       sethdlc -i bc0 -a txd 200 slot 100 ppersist 40 half




  Alle Zeitwerte werden in Millisekunden angegeben.


  Die AX.25-Untersttzung des Kernels fr die Nutzung des BayCom-Device
  einrichten

  Der BayCom-Treiber erzeugt Standard-Netzwerk-Devices, die der Kernel-
  AX.25-Code nutzen kann. Damit ist die Konfiguration fast dasselbe wie
  bei einer PI- oder PacketTwin-Karte. Zunchst gibt man dem BayCom-
  Device ein Rufzeichen:



       /sbin/ifconfig bc0 hw ax25 VK2KTJ up




  Einige Versionen von ifconfig untersttzen den eben angegebenen Weg
  nicht. Man kann dann so vorgehen:




       /sbin/ifconfig bc0 up
       axparms -setcall bc0 VK2KTJ up




  Als nchstes wird in der Datei /etc/ax25/axports ein Eintrag fr
  BayCom hinzugefgt. Die Verbindung des Eintrags zum entsprechenden
  Netzwerk-Device geschieht ber das eingestellte Rufzeichen.

  Verwendet ein Programm den Eintrag mit dem fr BayCom vergebenen
  Rufzeichen, so wird das BayCom-Device angesprochen.  Das neue
  AX.25-Device kann nun ganz normal verwendet werden, es lt sich  fr
  TCP/IP einrichten, man kann es dem ax25d hinzufgen und NetROM oder
  ROSE darber laufen lassen.




  6.1.3.  SoundModem


  Folgende Optionen bei der Kernel-Kompilierung sind wichtig:






















  Code maturity level options

  [*] Prompt for development and/or incomplete code/drivers

  General Setup

  [*] Networking support

  Network Device Support

  [*] Radio network interfaces
  ...
  [*] Soundcard modem driver for AX.25
  [?] Soundmodem support for Soundblaster and compatible cards
  [?] Soundmodem support for WSS and Crystal cards
  [?] Soundmodem support for 1200 baud AFSK modulation
  [?] Soundmodem support for 2400 baud AFSK modulation (7.3728 MHz crystal)
  [?] Soundmodem support for 2400 baud AFSK modulation (8 MHz crystal)
  [?] Soundmodem support for 2666 baud AFSK modulation
  [?] Soundmodem support for 4800 baud HAPN-1 modulation
  [?] Soundmodem support for 4800 baud PSK modulation
  [?] Soundmodem support for 9600 baud FSK G3RUH modulation




  Thomas Sailer (sailer@ife.ee.ethz.ch) entwickelte einen neuen Treiber
  fr den Kernel, mit dem man die Soundkarte als Modem nutzen kann.
  Schliet das Funkgert an die Soundkarte an, um damit Packet zu
  spielen! Thomas empfiehlt mindestens einen 486DX2/66, wenn man diese
  Software verwenden will, da die gesamte digitale Signalverarbeitung
  von der CPU bernommen wird.

  Der Treiber kann im Moment 1200 bps AFSK, 2400 bps AFSK, 4800 bps
  HAPN, 4800 bps PSK und 9600bps FSK (G3RUH-kompatibel) emulieren. Zur
  Zeit werden nur SoundBlaster- und Windows Sound System-kompatible
  Karten untersttzt. Da die Soundblaster-Emulation inzwischen selbst
  bei Billig-Karten recht gut geworden ist, lohnt sich ein Test in jedem
  Fall.  Soundkarten, die vom Linux-Sound-Treiber nicht untersttzt
  werden, sollten unter DOS initialisiert werden. Dazu startet man ein
  Minimal-DOS, in dessen Konfigurationsdateien lediglich die
  Soundkartentreiber aufgerufen werden, und ldt anschlieend Linux via
  LOADLIN.  PCI-Soundkarten (z.B. SoundBlaster PCI64) werden derzeit
  noch nicht untersttzt.

  Die Soundkarten bentigen eine kleine Zusatzschaltung zur Ansteuerung
  der PTT, Informationen dazu findet man auf Thomas Soundmodem-PTT-
  Seite:




       <htmlurl url="http://www.ife.ee.ethz.ch/~sailer/pcf/ptt_circ/ptt.html"
                name="http://www.ife.ee.ethz.ch/~sailer/pcf/ptt_circ/ptt.html">




  Es gibt einige Mglichkeiten fr die PTT-Schaltung: die Soundausgabe
  von der Karte auswerten oder die Ausgabe von der seriellen, parallelen
  oder MIDI- Schnittstelle zu nutzen. Die Webseite bietet fr jede
  Option Beispielschaltungen.

  Wer die 2400 baud Betriebsarten nutzen will, beachte eine kleine
  Besonderheit: Ursprnglich kam man auf 2400 baud, indem man den
  herkmmlichen 1200 baud-Modems auf der Basis des TCM3105 (siehe dazu
  auch http://www.ardos.de/gerd/tcm3105.html) einen Quarz mit hherer
  Frequenz verpate. Zwei Quarzfrequenzen sind blich: 7.3728 und 8.0
  MHz. Bevor man sich fr eine davon entscheidet, sollte man in
  Erfahrung bringen, womit die Gegenstationen arbeiten, da die Wahl der
  falschen Frequenz die Verbindung stark beeintrchtigen bzw.  unmglich
  machen kann. Der SoundModem-Treiber erzeugt Netzwerk-Devices mit Namen
  sm0, sm1, sm2 usw., wenn er eingerichtet wurde.

  Der SoundModem-Treiber beansprucht die gleichen Ressourcen wie Linux-
  Sound- und Parallelport-Treiber. Wenn man also den SoundModem-Treiber
  verwenden mchte, drfen sowohl der Linux-Sound-Treiber als auch der
  Treiber fr die parallele Schnittstelle nicht geladen sein. Natrlich
  lassen sich all diese als Module kompilieren, so da sie mit insmod
  und rmmod nach Belieben geladen und entfernt werden knnen.

  Einige OMs laden zuerst den Linux-Sound-Treiber, um die Soundkarte zu
  initialisieren, enfernen diesen dann wieder und laden dann den
  SoundModem- Treiber:



       (rmmod lp)
       insmod sound (evtl. Optionen)
       rmmod sound
       insmod hdlcdrv
       insmod soundmodem (evtl. Optionen, dazu spter)






  6.1.3.1.  Die Soundkarte einrichten


  Der SoundModem-Treiber initialisiert die Soundkarte nicht. In den
  AX.25-Utilities ist zu diesem Zweck das Programm setcrystal enthalten,
  welches fr Soundkarten mit dem Crystal-Chipset verwendet werden kann.
  Wer eine andere Karte hat, mu andere Software zum Initialisieren
  verwenden. Die Syntax von setcrystal:



       setcrystal [-w wssio] [-s sbio] [-f synthio] [-i irq] [-d dma] [-c dma2]




  Will man eine SoundBlaster auf I/O-Adresse 0x388, IRQ 10 und DMA 1
  einrichten, so verwendet man:



       setcrystal -s 0x388 -i 10 -d 1




  Ein Windows-Sound System konfiguriert man so auf IO-Adresse 0x534, IRQ
  5, DMA 3:



       setcrystal -w 0x534 -i 5 -d 3


  Mit -f synthio kann man die Adresse des Synthesizers einstellen, mit
  -c dma2 richtet man den zweiten DMA-Kanal fr Vollduplexbetrieb ein.



  6.1.3.2.  Den SoundModem-Treiber konfigurieren


  Nachdem die Soundkarte eingerichtet ist, mu man dem SoundModem-
  Treiber mitteilen, wo sich die Soundkarte befindet und welche Art von
  Modem emuliert werden soll. Diese Einstellungen knnen mit sethdlc
  vorgenommen werden, ebenso knnen die erforderlichen Parameter dem
  SoundModem-Modul auf der insmod-Kommandozeile mitgegeben werden.

  Als Beispiel eine einfache Konfiguration fr eine SoundBlaster, die
  ein 1200 bps-Modem emuliert:



       insmod hdlcdrv
       insmod soundmodem mode="sbc:afsk1200" iobase=0x220 irq=5 dma=1




  Aber es geht auch genau so gut mit sethdlc, das sowohl mit einer Karte
  als auch mit mehreren funktioniert: Zunchst mu auch hier das Modul
  geladen



       insmod hdlcdrv
       insmod soundmodem




  oder die SoundModem-Untersttzung in den Kernel einkompiliert sein.
  Wir richten damit beispielsweise das schon oben konfigurierte Windows
  Sound System ein, da es ein 9600-bps-FSK-Modem nach G3RUH als Device
  sm0 emuliert und einen Parallelport an 0x378 zur Ansteuerung der PTT
  nutzt:



       sethdlc -p -i sm0 mode wss:fsk9600 io 0x534 \
               irq 5 dma 3 pario 0x378




  Die in Punkt 6.1.3.1. erwhnte SoundBlaster einrichten, da sie als
  Device sm1 ein 4800 bps-HAPN-Modem emuliert und eine serielle
  Schnittstelle an 0x2f8 zur PTT-Ansteuerung nutzt:




       sethdlc -p -i sm1 mode sbc:hapn4800 io 0x388 irq 10 dma 1 serio 0x2f8




  ...als 1200-bps-AFSK-Modem mit PTT ber serielle Schnittstelle an
  0x2f8:

       sethdlc -p -i sm1 mode sbc:afsk1200 io 0x388 irq 10 dma 1 serio 0x2f8





  Die Konfiguration der Kanalzugriffsparameter erfolgt analog dem bei
  BayCom Gesagten.

  Das Device sm0 soll ein TXDelay von 100ms, eine Slottime von 50ms,
  eine Ppersist (Persistence) von 128 und full-Duplex-Betrieb fahren:



       sethdlc -i sm0 -a txd 100 slot 50 ppersist 120 full




  Alle Werte sind auch hier in Millisekunden anzugeben.



  6.1.3.3.  Die Audiopegel einstellen und den Treiber feinabstimmen


  Es ist fr die Funktion jedes Funkmodems sehr wichtig, da die
  Audiopegel korrekt eingestellt sind. Dies gilt ebenso fr das
  SoundModem. Thomas Sailer hat einige Utilities entwickelt, die diese
  Aufgabe erleichtern. Es sind die Programme smdiag und smmixer. smdiag
  bietet zwei Anzeigearten, einmal als Oszilloskop, zum zweiten als
  Augenmuster an.  Mit smmixer kann man die Sende- und Empfangspegel
  abgleichen.

  Um smdiag im Augen-Modus fr das SoundModem-Device sm0 zu starten:



       smdiag -i sm0 -e




  smmixer wird fr sm0 so gestartet:




       smmixer -i sm0




  Beide Programme zeigen die aktuellen Einstellungen fr die Pegel an
  den Aus- und Eingngen der Karte an. Um diese zu verndern, gibt es
  zwei Wege:


  1. (bei von Linux untersttzten Karten): Man besorge sich ein
     Mixerprogramm - es finden sich einige auf

       sunsite.unc.edu:/pub/Linux/apps/sound/mixers

  - und stelle damit die Werte ein.  Gnstig sind kommandozeilenorien
  tierte Programme wie cmix, da sie in das Startskript eingebunden wer
  den knnen und so immer die gleichen Einstellungen gegeben sind.
  2. bei nicht von Linux untersttzten Soundkarten, die ber DOS-Treiber
     initialisiert werden mssen, sollte man das der Karte meist
     beiliegende Mixer-Utility fr DOS nutzen.  Dies trifft auf einen
     Groteil der Onboard-Soundkarten zu.  Siehe dazu auch das Sound
     HOWTO.



  6.1.3.4.  Die AX.25-Untersttzung des Kernels             fr die
  Nutzung des SoundModem-Device einrichten


  Der SoundModem-Treiber erzeugt Standard-Netzwerk-Devices, die der
  Kernel-AX.25-Code nutzen kann. Damit ist die Konfiguration mit der
  eines BayCom-Modems, einer PI- oder PacketTwin-Karte vergleichbar.
  Zunchst gibt man dem SoundModem-Device ein Rufzeichen:



       /sbin/ifconfig sm0 hw ax25 VK2KTJ up




  Einige Versionen von ifconfig untersttzen den eben angegebenen Weg
  nicht. Dann kann man so vorgehen:




       /sbin/ifconfig sm0 up
       axparms -setcall sm0 VK2KTJ up




  Als nchstes wird in der Datei /etc/ax25/axports ein Eintrag fr
  SoundModem hinzugefgt. Die Verbindung des Eintrags zum entsprechenden
  Netzwerk-Device geschieht ber das eingestellte Rufzeichen. Verwendet
  ein Programm den Eintrag mit dem fr SoundModem vergebenen Rufzeichen,
  so wird das SoundModem-Device angesprochen.

  Das neue AX.25-Device kann nun ganz normal verwendet werden, es lt
  sich  fr TCP/IP einrichten, man kann es dem ax25d hinzufgen und
  NetROM oder ROSE darber laufen lassen.

  Erscheinen Fehlermeldungen beim Aufruf von ifconfig wie diese



       no such device
       permission denied




  sollte man die Konfigurationsoptionen (I/O-Adresse, IRQ, DMA) nochmals
  berprfen.




  6.1.4.  PI-Karte



  Folgende Optionen sind bei der Kernel-Kompilierung wichtig:



       General Setup

       [*] Networking support

       Network Device Support
       ...
       [*] Radio network interfaces
       ...
       [*] Ottawa PI and PI/2 support for AX.25





  Der Treiber erzeugt Netzwerk-Devices mit den Namen pi0, pi1, pi2 usw.,
  wobei die erste PI-Karte als pi0 angesprochen wird, die zweite als pi1
  etc.. Wurde der Treiber in den Kernel kompiliert und hat er die Karte
  korrekt erkannt, lt er sich einrichten:



       /sbin/ifconfig pi0a hw ax25 VK2KTJ up




  Damit wird die erste PI-Karte mit dem Rufzeichen VK2KTJ konfiguriert
  und aktiviert. Nun mu noch der entsprechende Eintrag in
  /etc/ax25/axports erfolgen, und es kann losgehen.  Der PI-Karten-
  Treiber wurde von David Perry (dp@hydra.carleton.edu) geschrieben.




  6.1.5.  PacketTwin


  Folgende Optionen beim Kernelkompilieren:



       General Setup

       [*] Networking support

       Network Device Support

       ...
       [*] Radio network interfaces
       ...
       [*] Gracilis PacketTwin support for AX.25




  Der Treiber erzeugt Netzwerk-Devices mit den Namen pt0, pt1, pt2 usw.,
  wobei die erste PacketTwin-Karte als pt0 angesprochen wird, die zweite
  als pt1 etc.. Wurde der Treiber in den Kernel kompiliert und hat er
  die Karte korrekt erkannt, lt er sich einrichten:



  /sbin/ifconfig pt0a hw ax25 VK2KTJ up




  Damit wird die erste PacketTwin-Karte mit dem Rufzeichen VK2KTJ
  konfiguriert und  aktiviert. Nun mu noch der entsprechende Eintrag in
  /etc/ax25/axports erfolgen, und es kann losgehen.  Der PacketTwin-
  Treiber wurde von Craig Small (csmall@triode.apana.org.au)
  geschrieben.





  6.1.6.  SCC, allgemein


  Wichtige Kernel-Kompilier-Optionen:



       General Setup

       [*] Networking support

       Network Device Support

       ...
       [*] Radio network interfaces
       ...
       [*] Z8530 SCC KISS emulation driver for AX.25




  Joerg Reuter, DL1BKE (jreuter@lykos.tng.oche.de) entwickelte die
  allgemeine Untersttzung fr SCC-Karten. Sein Treiber ist fr eine
  Vielzahl Karten konfigurierbar und stellt wie die anderen Netzwerk-
  Device zur Verfgung, so da man die SCC-Karte wie eine Netzwerkkarte
  ansprechen kann.



  6.1.6.1.  Die Konfigurations-Tools finden und installieren


  Whrend der Kernel-Treiber in den Standard-Quelltexten enthalten ist,
  gibt es bei Joerg neuere Versionen seines Treibers und die dazu
  notwendigen Konfigurationsprogramme. Diese findet man hier:


    ftp.tu-dresden.de:/pub/soft/hamradio/packet/tcpip/linux/

    ftp://ftp.ucsd.edu/hamradio/packet/tcpip/linux

  Es gibt verschiedene Versionen, man mu sich die fr seinen Kernel
  passende heraussuchen.


     Kernel 2.0.x:
        z8530drv-2.4a.dl1bke.tar.gz


     Kernel 2.1.6 oder neuer:
        z8530drv-utils-3.0.tar.gz
  Mit folgenden Befehlen lt sich das Paket installieren:



       cd /usr/src gzip -dc /tmp/z8530drv-2.4a.dl1bke.tar.gz | tar xvpofz -
       cd z8530drv
       make clean
       make dep
       make module (wenn der Treiber als Modul erstellt werden soll)
       make for_kernel (wenn der Treiber in den Kernel einkompiliert werden soll)
       make install




  Nach dem erfolgreichen Kompilieren sollten sich drei neue Programme im
  Verzeichnis /sbin finden: gencfg, sccinit und sccstat. Diese Programme
  dienen zur Einrichtung des Treibers fr die SCC-Karte. Der Treiber
  erzeugt Netzwerkdevices mit den Namenn scc0 - scc7.  Hat man vorhin
  make for_kernel eingegeben, so mu der Kernel neu kompiliert werden.

  Die Option



       [*] Z8530 SCC KISS emulation driver for AX.25




  beim Network Device Support mu angegeben sein.  Hat man sich
  entschieden, den Treiber als Modul zu kompilieren (make module), so
  wurde ein Modul namens scc.o in das entsprechende Verzeichnis
  /lib/modules/{kernelversion}/net kopiert, welches mit insmod geladen
  werden kann.



  6.1.6.2.  Den Treiber fr die verwendete Karte einrichten


  Der Z8530-SCC-Treiber ist so flexibel entwickelt worden, da er
  mglichst viele verschiedene SCC-Karten untersttzt. Der Preis dafr
  ist eine etwas kompliziertere Konfiguration.  In dem Treiber-Archiv
  findet sich eine ausfhrliche Dokumentation, wer Probleme hat, sollte
  diese lesen.

  Insbesondere doc/scc_eng.doc bzw. doc/scc_ger.doc bieten
  detailliertere Informationen, die nicht in diesem HOWTO enthalten
  sind. Das Programm sccinit liest die Datei /etc/z8530drv.conf als
  Haupt-Konfigurationsdatei aus. Sie ist in zwei groe Abschnitte
  gegliedert, Hardware-Parameter und Kanal-Konfiguration. Nachdem diese
  Datei entsprechend editiert wurde, mu nur der Aufruf sccinit in das
  Skript, welches die Netzwerkkonfiguration whrend des Systemstarts
  vornimmt, eingetragen werden.  Der Treiber lt sich erst nach einem
  Aufruf von sccinit nutzen.



  6.1.6.2.1.  Konfiguration der Hardware-Parameter


  Der erste Abschnitt ist in Abstze unterteilt, von denen jeder einen
  Z8530-Chip reprsentiert. Jeder Absatz besteht aus einer Liste mit
  Schlsselwrtern und den zugeordneten Werten.  Standardmig lassen
  sich bis zu 4 SCC-Chips angeben. Wer mehr braucht, mu in der Datei
  scc.c die Zeile



       #define MAXSCC 4




  entsprechend anpassen. Erlaubte Schlsselworte und Argumente:


     chip
        Wird verwendet, um die einzelnen Abschnitte voneinander zu
        trennen. Beliebige Argumente sind erlaubt, sie werden nicht
        verwendet.


     data_a
        Wird zur Angabe der Adresse des Datenports fr den SCC-Kanal A
        verwendet. Argument ist eine Hexadezimalzahl, zum Beispiel
        0x300.


     ctrl_a
        Wird zur Angabe der Adresse des Steuerports fr den SCC-Kanal
        A verwendet. Argument ist eine Hexadezimalzahl, zum Beispiel
        0x304.


     data_b
        Wird zur Angabe der Adresse des Datenports fr den SCC-Kanal B
        verwendet. Argument ist eine Hexadezimalzahl, zum Beispiel
        0x301.


     ctrl_b
        Wird zur Angabe der Adresse des Steuerports fr den SCC-Kanal
        B verwendet. Argument ist eine Hexadezimalzahl, zum Beispiel
        0x305.


     irq
        Gibt den IRQ an, den der in diesem Abschnitt einzustellende Chip
        verwendet. Argument ist eine Integerzahl, wie 5.


     pclock
        Gibt die am PCLK-Pin des Z8530 anliegende Taktfrequenz an.  Als
        Argument wird ein Integerwert erwartet (Frequenz in Hz),
        Voreinstellung ist 4915200 Hz, wenn dieses Schlsselwort nicht
        angegeben wird.


     board
        Der Typ der 8530-SCC-Karte. Folgende Werte sind erlaubt:


        PA0HZP
           die PA0HZP-SCC-Karte


        EAGLE
           die EAGLE-SCC-Karte


        PRIMUS
           die PRIMUS-PC (DG9BL-)Karte


        BAYCOM
           die BayCom-(U)SCC-Karte


     escc
        Optional, schaltet die Untersttzung fr erweiterte SCC-Chips
        (ESCC) wie den 8580, 85180 oder 85280 ein.  Als Argument steht
        entweder das Wort yes oder no.  Voreinstellung ist no.


     vector
        Optional, gibt die Adresse des Vector-Latch (auch als Intack-
        Port bekannt) fr die PA0HZP-Karten an. Es gibt nur ein Vector-
        Latch fr alle Chips. Voreinstellung: 0.


     special
        Optional, gibt die Adresse eines speziellen Funktionsregisters
        fr manche Karten an. Voreinstellung: 0.


  Einige Beispielkonfigurationen:








































  BayCom USCC
  chip    1
  data_a  0x300
  ctrl_a  0x304
  data_b  0x301
  ctrl_b  0x305
  irq     5
  board   BAYCOM
  # # SCC Chip2 #
  chip    2
  data_a  0x302
  ctrl_a  0x306
  data_b  0x303
  ctrl_b  0x307
  board   BAYCOM

  PA0HZP SCC-Karte
  chip    1
  data_a  0x153
  data_b  0x151
  ctrl_a  0x152
  ctrl_b  0x150
  irq    9
  pclock  4915200
  board   PA0HZP
  vector 0x168
  escc    no
  # # SCC Chip2 #
  chip    2
  data_a  0x157
  data_b  0x155
  ctrl_a  0x156
  ctrl_b  0x154
  irq    9
  pclock  4915200
  board   PA0HZP
  vector 0x168
  escc    no

  DRSI-SCC-Karte
  chip    1
  data_a  0x303
  data_b  0x301
  ctrl_a  0x302
  ctrl_b  0x300
  irq    7
  pclock  4915200
  board   DRSI
  escc    no





  Bei wem die Karte bereits unter NOS funktioniert, der kann die
  Treiber-Befehle des PE1CHL-NOS-Treibers mit dem Befehl gencfg in eine
  fr die Konfigurationsdatei des Z8530-Treibers nutzbare Form bringen.
  gencfg wird genau so wie fr den PE1CHL-Treiber von NOS aufgerufen:
  Zum Beispiel erstellt




       gencfg 2 0x150 4 2 0 1 0x168 9 4915200


  eine Grundkonfiguration fr die OptoSCC-Karte.




  6.1.6.3.  Kanal-Konfiguration


  Im Abschnitt Kanal-Konfiguration werden alle anderen fr den
  jeweiligen Port relevanten Parameter eingestellt. Auch dieser
  Abschnitt ist in einzelne Abstze unterteilt. Jeder dieser Abstze
  steht fr einen logischen Port, da jede SCC-Karte zwei Ports
  bereitstellt, gibt es fr jeden Hardware-Absatz zwei solcher Abstze.
  Die dazu notwendigen Schlsselworte und Werte mssen in der Datei
  /etc/z8530drv.conf immer nach dem Abschnitt mit den Hardware-
  Parametern stehen. Die Reihenfolge in diesem Abschnitt ist sehr
  wichtig, mit der hier vorgeschlagenen Reihenfolge sollte es
  funktionieren.

  Folgende Schlsselwrter und Werte gibt es hier:


     device
        Mu in der ersten Zeile einer Port-Definition stehen und gibt
        den Namen der speziellen Gertedatei an, auf die sich die
        weitere Konfiguration bezieht, z.B. scc0.


     speed
        Gibt die bertragungsrate in Bits pro Sekunde an, mu ganzzahlig
        sein, z.B. 1200.


     clock
        Gibt an, aus welcher Quelle der Datentakt stammt.


  Erlaubte Werte sind:


     dpll
        normaler Halbduplexbetrieb


     external
        Das Modem hat einen eigenen Sende-/Empfangstakt


     divider
        verwendet den Fullduplex-Teiler, wenn installiert


     mode
        Gibt die zu verwendende Datenkodierung an. Mgliche Werte sind
        nrz und nrzi.


     rxbuffers
        Gibt die Anzahl der im Speicher zu reservierenden Empfangs-
        puffer vor. Der Wert ist ganzzahlig, z.B. 8.


     txbuffers
        Gibt die Anzahl der im Speicher zu reservierenden Sende- puffer
        vor. Der Wert ist ganzzahlig, z.B. 8.

     bufsize
        Gibt die Gre der Sende-/Empfangspuffer vor. Der Wert wird in
        Bytes angegeben und stellt die Gesamtlnge eines Paketes dar, es
        mu also die Lnge der AX.25-Header zum Datenfeld hinzugerechnet
        werden. Dieses Schlsselwort ist optional, die Voreinstellung
        384.


     txdelay
        Das von KISS bekannte TXDelay, der Wert ist ganzzahlig und wird
        in Millisekunden angegeben.


     persist
        Der Wert fr die Persistence, ganzzahlig.


     slot
        KISS-Slottime, ganzzahlig, in Millisekunden.


     tail
        Der TXTail-Wert bei KISS, ganzzahlig, in Millisekunden.


     fulldup
        Das bei KISS verwendete Fullduplex-Flag, Wert ist entweder 1 fr
        Vollduplex oder 0 fr Halbduplex.


     wait
        Der Wait-Wert bei KISS, ganzzahlig, in Millisekunden.


     min
        Der Min-Wert bei KISS, ganzzahlig, in Sekunden.


     maxkey
        Die maximale Sendezeit bei KISS ganzzahlig, in Sekunden.


     idle
        Der Idle-Timer-Wert, ganzzahlig, in Sekunden.


     maxdef
        Der Maxdef-Wert bei Kiss, ganzzahlig.


     group
        Der group-Wert bei KISS, ganzzahlig.


     txoff
        Der txoff-Wert bei Kiss, ganzzahlig, in Millisekunden.


     softdcd
        Der Wert fr SoftDCD (Software-Rauschsperre), ganzzahlig.


     slip
        Das Slip-Flag bei KISS, ganzzahlig.


  6.1.6.4.  Den Treiber verwenden


  Man verwendet die scc*-Gerte wie andere Netzwerk-Devices auch.
  Beispiel:



       /sbin/ifconfig scc0 44.136.8.5 netmask 255.255.255.0
       /sbin/ifconfig scc0 up
       axparms -setcall scc0 VK2KTJ up







  6.1.6.5.  Die Programme sccstat und sccparam


  Bei der Fehlersuche kann das Programm sccstat helfen, indem man damit
  die aktuelle Konfiguration eines SCC-Device anzeigen lassen kann.
  Aufruf zum Beispiel mit:



       sccstat scc0




  Es werden viele Informationen zur Einstellung und Funktion des SCC-
  Ports scc0 angezeigt.

  Mit dem Programm sccparam kann man nach dem Booten die Konfiguration
  verndern. Die Syntax ist an den NOS-Befehl param angelehnt, zum
  Setzen des TXTail-Wertes auf 100 ms wrde man eingeben:



       sccparam scc0 txtail 0x8







  6.1.7.  BPQ-Ethernet


  Folgende Optionen sind bei der Kernel-Kompilierung wichtig:













  General Setup

  [*] Networking support

  Network Device Support

  ...
  [*] Radio network interfaces
  ...
  [*] BPQ Ethernet driver for AX.25




  Linux bietet Kompatibilitt mit BPQ-Ethernet. Damit kann man das
  AX.25-Protokoll ber Ethernet im lokalen Netzwerk verwenden, um mit
  anderen BPQ-Maschinen im Netzwerk zusammenzuarbeiten. Die BPQ-Devices
  tragen die Namen bpq1 bis bpq9. Das Device bpq0 gehrt zu eth0, bpq1
  zu eth1 usw..  Die Konfiguration ist sehr offen.

  Zunchst mu das Ethernet-Device eingerichtet sein. Das heit, der
  Kernel mu mit Ethernet-Untersttzung kompiliert sein und diese mu
  auch funktionieren. Im Ethernet HOWTO findet man dazu weiterfhrende
  Informationen.

  Um die BPQ-Untersttzung einzurichten, mu das Ethernet-Device mit
  einem Rufzeichen versehen werden:



       /sbin/ifconfig bpq hw ax25 VK2KTJ up




  Beachte, da das Rufzeichen mit dem Rufzeichen in der Datei
  /etc/ax25/axports bereinstimmt, das fr diesem Port gelten soll.




  6.1.8.  BPQ-Node mit Linux-AX.25-Untersttzung verbinden


  BPQ verwendet normalerweise sogenannte Multicast-Adressen. Die Linux-
  Implementation macht das nicht, sie verwendet stattdessen die normale
  Ethernet Broadcast Address.  Deshalb sollte die Datei NET.CFG fr den
  BPQ-ODI-Treiber wie folgt gendert werden:



       LINK SUPPORT
                MAX STACKS 1
                MAX BOARDS 1 LINK
       DRIVER   NE2000     ; oder anderer Bezeichner, passend zur Karte
                INT 10     ; entsprechend den Einstellungen der
                PORT 300   ; Netzwerkkarte
       FRAME    ETHERNET_II
       PROTOCOL BPQ 8FF ETHERNET_II  ; fr BPQ erforderlich - kann die PID
                                     ; verndern
       BPQPARAMS                     ; optional, nur gebraucht, wenn
                                     ; die voreingestellte Zieladresse
                                     ; berschrieben werden soll
       ETH_ADDR FF:FF:FF:FF:FF:FF    ; Zieladresse


  6.2.  Die Datei /etc/ax25/axports


  Diese Datei ist eine einfache Textdatei, die mit einem Texteditor
  erzeugt wird. Sie hat folgendes Format:



       Portname    Rufzeichen    Baudrate  Paketlnge   Maxframe   Beschreibung




  wobei gilt:


     Portname
        Bezeichner fr den Port


     Rufzeichen
        Rufzeichen, welches dem Port zugeordnet werden soll


     Baudrate
        Baudrate zum TNC


     Paketlnge
        Lnge des Datenfeldes eines Paketes in Bytes


     Maxframe
        maximale Anzahl unbesttigter Pakete (AX.25-Window)


     Beschreibung
        kurzer beschreibender Text

  Beispieldatei von Terry Dawson:



       radio  VK2KTJ-15       4800   256   2    4800 bps auf 144.800 MHz
       ether  VK2KTJ-14   10000000   256   2    BPQ Ethernet-Device




  Zur Erinnerung: Jeder AX.25-Port mu ein eigenes Rufzeichen/SSID
  bekommen. Jedes zu verwendende Device mu einen Eintrag in dieser
  Datei bekommen, dies betrifft KISS, BayCom, SCC, PI, PacketTwin und
  SoundModem-Ports. Jeder Eintrag beschreibt genau ein AX.25-Netzwerk-
  Device. Die Eintrge in der Datei sind mit den Netzwerk-Devices ber
  das Rufzeichen/SSID verbunden.  Das ist nicht zuletzt ein Grund dafr,
  da jeder Port ein eigenes Rufzeichen/SSID verlangt.



  6.3.  Das AX.25-Routing einrichten


  Es ist sowohl fr normale AX.25- als auch fr IP-Verbindungen
  sinnvoll, voreingestellte Digipeaterpfade fr spezielle Stationen zu
  erstellen. Dazu kann man das Programm axparms verwenden:

       /usr/sbin/axparms -route add radio VK2XLZ VK2SUT




  Mit diesem Befehl setzt man einen Digipeaterpfad fr VK2XLZ via VK2SUT
  auf den AX.25-Port mit dem Namen radio.  Weiterfhrende Informationen
  sind in der Hilfeseite zu axparms zu finden.




  7.  Ein AX.25-Interface fr TCP/IP einrichten


  Es ist sehr einfach, einen AX.25-Port fr TCP/IP einzurichten. Fr
  KISS-Interfaces gibt es zwei Mglichkeiten, eine IP-Adresse
  einzurichten. Die konventionellere Methode mit dem Befehl ifconfig
  funktioniert mit allen Interface-Typen.

  Fr einen an /dev/ttyS0 angeschlossenen KISS-TNC gilt dieses Beispiel:




       /usr/sbin/kissattach -i 44.136.8.5 -m 512 /dev/ttyS0 radio
       /sbin/route add -net 44.136.8.0 netmask 255.255.255.0 ax0
       /sbin/route add default ax0




  Damit wird ein AX.25-Interface mit der IP-Adresse 44.136.8.5 und einer
  MTU (Maximum Transmit Unit, maximale Gre des ausgesendeten
  Datenpakets) von 512 Bytes erzeugt. Wenn notwendig, knnen mit dem
  ifconfig-Befehl weitere Parameter eingestellt werden.

  Die anderen Interfaces knnen wie die Netzwerkkarte mit ifconfig auf
  IP-Adresse und Netzmaske eingestellt werden, ebenso wird die Route wie
  fr eine Netzwerkkarte festgesetzt (man route). Das folgende Beispiel
  ist fr eine PI-Karte gedacht, funktioniert aber auch mit jedem
  anderen AX.25-Netzwerk-Device, statt pi0a ist der jeweilige Device-
  Name einzusetzen:



       /sbin/ifconfig pi0a 44.136.8.5 netmask 255.255.255.0 up
       /sbin/ifconfig pi0a broadcast 44.136.8.255 mtu 512
       /sbin/route add -net 14.136.8.0 netmask 255.255.255.0 pi0a
       /sbin/route add default pi0a




  Die hier aufgefhrten Befehle sind typisch fr diese Konfigurationen,
  vielen werden sie von NOS oder anderer TCP/IP-Software her bekannt
  sein.  Beachten mu man, da die Default-Route mglicherweise nicht
  gebraucht wird, wenn schon ein anderes Netzwerk-Device eingerichtet
  ist.  Um das Ganze zu testen, versuche man ein ping oder telnet zum
  lokalen Host:



       ping -i 5 44.136.8.58


  Beachte die Option -i 5, die Ping veranlat, seine Pakete nur aller 5
  Sekunden statt wie voreingestellt, aller Sekunden zu senden.



  8.  Einen NetROM-Port einrichten


  NetROM basiert auf den vorher erstellten AX.25-Ports. Es setzt auf dem
  AX.25-Protokoll auf.

  Um ein NetROM-Interface auf einem AX.25-Port einzurichten, mssen zwei
  Dateien angepat werden. Die eine Datei beschreibt die NetROM-
  Interfaces, und die andere, auf welche AX.25-Ports NetROM aufsetzt.

  Man kann mehrere NetROM-Ports einrichten, fr jeden ist die
  Vorgehensweise die gleiche.


  8.1.  Die Datei /etc/ax25/nrports


  Die erste der beiden Dateien heit /etc/ax25/nrports.  Sie beschreibt
  die NetROM-Ports in etwa der gleichen Art wie /etc/ax25/axports die
  AX.25-Ports.

  Jedes NetROM-Device braucht seinen Eintrag in /etc/ax25/nrports.
  Normalerweise wird es auf einer Linux-Maschine nur ein NetROM-Device
  geben, das eine definierte Anzahl von AX.25-Ports nutzt.

  Manchmal will man aber einem besonderen Programm, wie einer Mailbox,
  ein separates NetROM-Alias vergeben. Dann kann man auch mehrere
  NetROM-Devices einrichten.

  Die Datei /etc/ax25/nrports hat folgendes Format:




       Name  Rufzeichen   Alias   Paketlnge  Beschreibung






     Name
        Der Bezeichner fr den Port.


     Rufzeichen
        Das Rufzeichen, welches fr den NetROM-Verkehr verwendet wird.
        Dies ist nicht das Rufzeichen, das andere Stationen als Nodecall
        verwenden knnen. Zu dem Node-Programm spter. Es sollte nicht
        noch einmal in /etc/ax25/axports oder /etc/ax25/nrports
        auftauchen.


     Alias
        Der NetROM-Alias fr diesen Port.


     Paketlnge
        Die maximale Gre der NetROM-Pakete.


     Beschreibung
        Eine kurze Beschreibung fr den Port.

  Ein Beispiel she so aus:




       netrom  VK2KTJ-9    LINUX  236   Linux Packet Switch




  Damit wird ein NetROM-Port erzeugt, der im brigen NetROM-Netz als
  LINUX:VK2KTJ-9 erscheint.  Programme wie call nutzen diese Datei.


  8.2.  Die Datei /etc/ax25/nrbroadcast


  Die zweite der Dateien ist /etc/ax25/nrbroadcast.  In dieser Datei
  knnen viele Eintrge enthalten sein.  Normalerweise gibt es fr jeden
  AX.25-Port, ber den NetROM-Verbindungen laufen sollen, einen Eintrag.
  Die Datei hat folgendes Format:




       axport   min_obs  def_qual  worst_qual verbose




  Wobei gilt:


     axport
        Der aus der Datei /etc/ax25/axports entnommene Portname. Steht
        kein Eintrag in /etc/ax25/nrbroadcast, so bedeutet das, da kein
        NetROM-Routing durchgefhrt wird und alle empfangenen NetROM-
        Broadcasts auf diesem Port ignoriert werden.


     min_obs
        Minimalwert fr die Obsolescence.


     def_qual
        Voreingestellte Qualitt fr den Port.


     worst_qual
        Wert fr die schlechteste Verbindungsqualitt, Verbindungen mit
        schlechteren Werten werden ignoriert.


     verbose
        Legt fest, ob NetROM auf diesem Port Routing-Broadcasts
        aussendet oder nur auf seine Anwesenheit hinweist.

  Ein Beispiel she so aus: radio   1    200    100    1





  8.3.  Das Netzwerk-Device fr NetROM erstellen


  Sind die beiden Konfigurationsdateien vervollstndigt, dann mu das
  NetROM-Netzwerk-Device genau so wie die anderen AX.25-Devices erstellt
  werden. Diesmal wird dazu der Befehl nrattach verwendet. Dieser
  arbeitet wie axattach, im Unterschied zu diesem erzeugt er NetROM-
  Netzwerk-Devices mit den Namen nr0 - nr9.

  Beim ersten Aufruf erzeugt nrattach das Device nr0, beim zweiten nr1
  usw.. Um das Netzwerk-Device fr den von uns definierten NetROM-Port
  zu erzeugen, geben wir ein:



       nrattach netrom




  Damit wird das NetROM-Device nr0 mit dem Namen netrom, dessen Details
  in der Datei /etc/ax25/nrports festgelegt wurden, gestartet.

  Wer einen Kernel der 2.2.x-Reihe verwendet, mu an dieser Stelle eine
  IP-Adresse angeben, auch wenn kein TCP/IP verwendet werden soll.  Der
  Aufruf von nrattach sieht dann so aus:



       nrattach -i 44.131.16.2 netrom





  8.4.  Den NetROM-Daemon starten


  Der Linux-Kernel bernimmt alle mit dem NetROM-Protokoll und dem
  Switching verbundenen Aufgaben bis auf einige Funktionen.  Der NetROM-
  Daemon verwaltet die NetROM-Routing-Tabellen und erzeugt die NetROM-
  Routing-Broadcasts. Er wird mit folgendem Befehl gestartet:



       /usr/bin/netromd -i




  Schon bald darauf sollte man sehen, wie sich die Datei
  /proc/net/nr_neigh mit den Namen der benachbarten NetROM-Stationen
  fllt:



       cat /proc/net/nr_neigh




  Man sollte den netromd-Aufruf in die whrend des Startens ausgefhrten
  (rc-)Skripte einfgen, damit er automatisch beim Booten gestartet
  wird.


  8.5.  Das NetROM-Routing einrichten


  Manchmal ist es wnschenswert, feste (statische) Routen fr spezielle
  Rechner einzurichten. Dazu gibt es den Befehl nrparms.  Eine
  vollstndige Beschreibung kann in der Hilfeseite nachgelesen werden.
  Ein kleines Beispiel dazu:



       /usr/sbin/nrparms -nodes VK2XLZ-10 + #MINTO 120 5 radio VK2SUT-9




  Damit wird eine NetROM-Route zu #MINTO:VK2XLZ-10 ber die benachbarte
  Station VK2SUT-9 auf dem AX.25-Port radio eingerichtet. Man kann damit
  auch manuell neue Eintrge fr benachbarte Stationen vornehmen:



       /usr/sbin/nrparms -routes radio VK2SUT-9 +120




  Damit wird VK2SUT-9 als benachbarte NetROM-Station mit einer fest
  eingestellten Qualitt von 120 eingetragen, die nicht automatisch
  gelscht bzw. gendert wird.




  9.  Ein NetROM-Interface fr TCP/IP einrichten


  Ein TCP/IP-Interface fr NetROM wird fast genau so wie fr AX.25
  eingerichtet.  Man kann entweder die IP-Adresse und MTU auf der
  Kommandozeile fr nrattach angeben oder ifconfig und route benutzen.
  Es mssen jedoch per Hand die arp-Eintrge fr die Rechner, zu denen
  geroutet werden soll, ergnzt werden, da die Maschine nicht selbst
  herausbekommt, welche NetROM-Adresse sie verwenden mu, um einen
  bestimmten IP-Rechner zu erreichen. Will man also ein Device nr0 mit
  der IP-Adresse 44.136.8.5, einer MTU von 512 und eingerichtet mit den
  Daten aus /etc/ax25/nrports fr den NetROM-Port netrom erzeugen, gibt
  man ein:



       /usr/sbin/nrattach -i 44.136.8.5 -m 512 netrom
       route add 44.136.8.5 nr0




  Oder man benutzt die folgenden Befehle:



       /usr/sbin/nrattach netrom ifconfig nr0 44.136.8.5 \
                          netmask 255.255.255.0 hw netrom VK2KTJ-9
       route add 44.136.8.5 nr0




  Anschlieend mssen fr jeden IP-Rechner, der ber NetROM erreichbar
  sein soll, die Eintrge fr Route und ARP gesetzt werden.  Um einen
  IP-Rechner mit der Adresse 44.136.80.4 auf NetROM-Adresse BBS:VK3BBS
  ber die benachbarte Station VK2SUT-0 zu erreichen, gibt man folgendes
  ein:



       route add 44.136.80.4 nr0 arp -t netrom \
             -s 44.136.80.4 vk2sut-0
       nrparms -nodes vk3bbs + BBS 120 6 sl0 vk2sut-0




  Die Werte 120 und 6 beim nrparms-Befehl stehen fr die NetROM-
  Qualitt und die Obsolescence dieser Route.




  10.  Einen ROSE-Port einrichten


  Die ROSE-Protokollebene entspricht der Ebene 3 der X.25-Spezifikation.
  Die im Kernel enthaltene ROSE-Untersttzung ist eine modifizierte
  Version des ROSE (RATS (Radio Amateur Teleprinter Society) Open System
  Environment) AX.25 Packet Switch (http://www.rats.org/rose/). Das
  ROSE-Protokoll setzt auf den vorher erstellten AX.25-Ports auf.

  Um ROSE einzurichten, mu man eine Konfigurationsdatei erstellen, die
  die zu verwendenden ROSE-Ports definiert. Man kann mehrere ROSE-Ports
  erstellen, fr jeden gilt die gleiche Vorgehensweise.



  10.1.  Die Datei /etc/ax25/rsports


  Die ROSE-Ports werden in der Datei /etc/ax25/rsports eingerichtet. Sie
  beschreibt die ROSE-Ports hnlich wie /etc/ax25/axports die
  AX.25-Ports. Die Datei hat folgendes Format:



       Name   Adresse   Beschreibung




  Wobei gilt:


     Name
        Text-Bezeichner fr den jeweiligen Port


     Adresse
        10stellige ROSE-Adresse fr den Port


     Beschreibung
        kurze, frei whlbare Beschreibung



  Ein Beispiel:




       rose     5050294760    ROSE-Port




  Beachte, da ROSE das fr jeden AX.25-Port voreingestellte Rufzeichen
  verwendet, wenn nichts anderes angegeben wird.  Um ein eigenes
  Rufzeichen/SSID fr ROSE festzulegen, gibt man folgendes ein:



       /usr/sbin/rsparms -call VK2KTJ-10




  Damit wartet Linux auf ROSE-Rufe unter dem Rufzeichen/SSID VK2KTJ-10
  auf allen eingerichteten AX.25-Ports und verwendet dieses auch fr
  ROSE- Verbindungen.



  10.2.  Das ROSE-Netzwerk-Device einrichten


  Wurde die Datei /etc/ax25/rsports erstellt, kann man die ROSE-
  Netzwerk-Devices genau so wie die AX.25-Netzwerk-Devices erstellen.
  Diesmal wird dazu der Befehl rsattach verwendet.  Dieser arbeitet wie
  axattach, im Unterschied zu diesem erzeugt er ROSE-Netzwerk-Devices
  mit den Namen rose0 - rose5.  Beim ersten Aufruf erzeugt rsattach das
  Device rose0, beim zweiten rose1 usw.. Beispiel:



       rsattach rose




  Damit wird das ROSE-Device rose0 mit dem Namen rose, dessen Details in
  der Datei /etc/ax25/rsports festgelegt wurden, gestartet.



  10.3.  Das Routing fr ROSE einrichten


  Zur Zeit untersttzt das ROSE-Protokoll nur statisches Routing.  Mit
  dem rsparms-Befehl kann die Routingtabelle eingerichtet werden:



       rsparms -nodes add 5050295502 radio vk2xlz




  Damit wrde eine Route zum ROSE-Node 5050295502 ber den AX.25-Port
  mit dem Bezeichner radio laut /etc/ax25/axports zu einer
  benachbarten Station mit dem Rufzeichen VK2XLZ hinzugefgt.

  Es kann auch eine Maske angegeben werden, um mehrere ROSE-Zielrechner
  in einem Routing-Eintrag zu erfassen:



       rsparms -nodes add 5050295502/4 radio vk2xlz




  Damit werden alle Zieladressen erfat, die in den ersten 4 Stellen mit
  der angegebenen bereinstimmen, die also mit 5050 beginnen. Der
  Befehl kann auch in dieser, sicher eindeutigeren, Form eingegeben
  werden:



       rsparms -nodes add 5050/4 radio vk1xlz







  11.  AX.25/NetROM/ROSE-Verbindungen


  Jetzt, da alle AX.25-, NetROM- und ROSE-Devices eingerichtet und
  aktiviert sind, sollte es mglich sein, Test-Verbindungen zu starten.
  In den AX.25-Utilities ist das Programm call enthalten, das ein
  Terminal mit geteiltem Bildschirm fr AX.25, NetROM und ROSE
  darstellt. Ein einfacher AX.25-Verbindungsaufbau she so aus:



       /usr/bin/call radio VK2DAY via VK2SUT




  Ein einfacher NetROM-Verbindungsaufbau zu einem Node mit dem Alias
  SUNBBS she so aus:



       /usr/bin/call netrom SUNBBS




  Ein einfacher ROSE-Verbindungsaufbau an HEARD auf dem Node 5050882960
  she so aus:



       /usr/bin/call rose HEARD 5050882960




  Beachte: Man mu call mitteilen, auf welchem Port gerufen werden soll,
  da der Zielrechner mglicherweise auf allen eingerichteten Ports
  erreichbar ist. Das Programm call ist ein zeilenbasiertes
  Terminalprogramm, mit dem man AX.25-Stationen rufen kann.

  Zeilen, die mit einem ~ beginnen, werden als Befehle interpretiert.
  Mit Eingabe von ~. am Beginn einer neuen Zeile beendet man die
  Verbindung. Weiterfhrende Informationen findet man in der Hilfeseite
  zu call.



  12.  Linux fr ankommende Packet-Verbindungen einrichten


  Linux ist ein mchtiges Betriebssystem und bietet groe Flexibilitt
  bei der Konfiguration. Dadurch wird es etwas langwieriger, es so
  einzurichten, da es das tut, was man will.  Wenn man eine Linux-
  Maschine fr die Entgegennahme von ankommenden AX.25-NetROM- und ROSE-
  Rufen einrichtet, mu man sich einige Fragen stellen. Die wichtigste
  davon ist: Was sollen die Nutzer zu sehen bekommen, wenn sie
  verbunden sind?

  Es werden hbsche kleine Anwendungen entwickelt, die dazu verwendet
  werden knnen, den Anrufern bestimmte Dienste anzubieten. Ein
  einfaches Beispiel ist das in den AX.25-Utilities enthaltene Programm
  pms, etwas komplexer ist das ebenfalls dort vorhandene node-Programm.
  Als Alternative kann man den Nutzern einen Login-Prompt geben, so da
  sie einen Shell-Account nutzen knnen, oder man hat sogar ein eigenes
  Programm, wie eine Datenbank oder ein Spiel, geschrieben, mit dem sich
  die Nutzer verbinden knnen. Was auch immer gewnscht wird, man mu es
  der AX.25-Software mitteilen, damit diese wei, welches Programm bei
  einer hereinkommenden Verbindung gestartet werden soll.

  Das Programm ax25d entspricht hierfr dem blicherweise zur
  Entgegennahme von TCP/IP-Verbindungen auf UNIX-Maschinen eingesetzten
  inetd. Es wartet auf hereinkommende Verbindungen, wenn es eine
  erkennt, schaut es in einer Konfigurationsdatei nach, welches Programm
  zu starten und mit dieser Verbindung zu assoziieren ist.

  Da der ax25d das Standardwerkzeug fr die Entgegennahme von AX.25-,
  NetROM- und ROSE-Verbindungen ist, soll hier die Konfiguration
  erlutert werden.



  12.1.  Die Datei /etc/ax25/ax25d.conf


  Sie ist die Konfigurationsdatei fr den AX.25-Daemon ax25d, der die
  hereinkommenden AX.25-, NetROM- und ROSE-Verbindungen entsprechend
  handhabt. Die Datei sieht auf den ersten Blick etwas kryptisch aus,
  aber man wird bald sehen, da sie in der Praxis recht einfach zu
  bearbeiten ist. Es gibt eine kleine Falle, die beachtet werden mu. Im
  allgemeinen hat die Datei /etc/ax25/ax25d.conf folgendes Format:



       # Dieser Kommentar wird vom ax25d ignoriert.
       [port_name] <port_name>
       {port_name}
         window T1 T2 T3 idle N2
         window T1 T2 T3 idle N2
       parameters window T1 T2 T3 idle N2    window T1 T2 T3
       idle N2      ...
       default  window T1 T2 T3 idle N2





  Wobei gilt: Das Zeichen # am Anfang einer Zeile markiert einen
  Kommentar, die Zeile wird vom ax25d ignoriert.


     port_name
        Der Name des AX.25-, NetROM- oder ROSE-Ports, wie er in
        /etc/ax25/axports, /etc/ax25/nrports respektive
        /etc/ax25/rsports definiert ist.


     peer
        Das Rufzeichen der Station, auf die sich die Konfiguration
        bezieht. Wird hier keine SSID angegeben, so sind alle SSID
        gltig.


     window
        Der AX.25-Window-Parameter (Maxframe) fr diese Konfiguration.


     T1 Der Timer T1 (Zeit bis zum Wiederaussenden eines Paketes) in
        halben Sekunden.


     T2 Der Timer T2 (Zeit, die auf eine weiteres Paket gewartet wird,
        bevor Empfangsbesttigung gesendet wird) in Sekunden.


     T3 Zeit, die die Verbindung inaktiv sein darf, bevor sie getrennt
        wird in Sekunden.


     idle
        Der Idle-Timer-Wert in Sekunden


     N2 Anzahl Versuche (retries), bevor eine Verbindung als gescheitert
        betrachtet wird.


     mode
        Legt einige allgemeine Zugriffsrechte fest. Die Modes werden
        ein-/ausgeschaltet, indem eine Reihe von Zeichen angegeben
        werden, von denen jedes fr ein bestimmtes Zugriffsrecht steht.
        Die Buchstaben drfen gro- oder klein geschrieben werden und
        drfen nicht durch Leerzeichen getrennt werden.

        Folgende Zeichen sind mglich:


        u/U
           UTMP - zur Zeit nicht untersttzt


        v/V
           Validiere alles - zur Zeit nicht untersttzt


        q/Q
           Quiet - schreibe Verbindung nicht mit


        n/N
           berprfe NetROM-Nachbar - zur Zeit nicht untersttzt


        d/D
           Digipeater nicht erlaubt, Verbindungen mssen direkt
           erfolgen, nicht ber Digipeater.


        l/L
           Aussperren (Lockout) - keine Verbindung erlaubt.


        */0
           Marker - Platzhalter, kein Mode gesetzt


     uid
        Die Nutzerkennung (User ID) unter der das fr die Verbindung
        aufgerufene Programm laufen soll.


     cmd
        Der volle Pfadname des aufzurufenden Programms, ohne
        Kommandozeilenparameter


     cmd_name
        Text, der beim Aufrufen von ps (Anzeige des Prozestatus)
        erscheinen soll, normalerweise dasselbe wie cmd, aber ohne die
        Pfadangabe


     arguments
        Kommandozeilenparameter, die der in cmd angegebenen Anwendung
        beim Start bergeben werden. Folgende Krzel knnen dazu
        verwendet werden:


        %d Name des Ports, auf dem die Verbindung eingegangen ist.


        %U AX.25-Rufzeichen der verbundenen Station ohne SSID, in
           Grobuchstaben.


        %u AX.25-Rufzeichen der verbundenen Station ohne SSID, in
           Kleinbuchstaben.


        %S AX.25-Rufzeichen der verbundenen Station mit SSID, in
           Grobuchstaben.


        %s AX.25-Rufzeichen der verbundenen Station mit SSID, in
           Kleinbuchstaben.


        %P AX.25-Rufzeichen des Nodes, von dem die Verbindung kam ohne
           SSID, in Grobuchstaben.


        %p AX.25-Rufzeichen des Nodes, von dem die Verbindung kam ohne
           SSID, in Kleinbuchstaben.


        %R AX.25-Rufzeichen des Nodes, von dem die Verbindung kam mit
           SSID, in Grobuchstaben.


        %r AX.25-Rufzeichen des Nodes, von dem die Verbindung kam mit
           SSID, in Kleinbuchstaben.

  Fr jedes AX.25-, NetROM- oder ROSE-Interface, auf dem Verbindungen
  entgegengenommen werden sollen, mu ein Abschnitt in diesem Format
  vorgesehen werden.

  In jedem Abschnitt gibt es zwei besondere Zeilen, eine beginnt mit dem
  Wort parameters, die andere mit default. (Ja, das ist ein
  Unterschied.) Diese Zeilen dienen speziellen Funktionen.

  Der Zweck der default-Zeile drfte klar sein, diese Zeile enthlt die
  Parameter, die auf alle Stationen zutreffen, fr die keine speziellen
  Parameter definiert wurden. Wird keine default-Zeile angegeben, so
  werden alle Verbindungen, fr die keine speziellen Voreinstellungen
  getroffen wurden, sofort wieder getrennt.

  Die parameters-Zeile ist ein wenig kritischer, hier ist auch die
  vorhin erwhnte Falle. In jedem der Felder fr alle aufgefhrten
  Stationen kann das *-Zeichen benutzt werden, um den voreingestellten
  Wert zu bernehmen. Die parameters-Zeile setzt diese Voreinstellungen.
  Die Kernel-Software selbst hat einige Voreinstellungen, die dann
  verwendet werden, wenn die keine Voreinstellungen unter parameters
  angegeben sind.

  Die Falle besteht nun darin, da die Parameters-Werte nur fr die
  darunterliegenden Zeilen gelten, nicht fr die darberstehenden.  Man
  kann mehrere parameters-Zeilen pro Interface-Definition haben und
  somit Gruppen von Stationen mit gleichen Voreinstellungen einrichten.


  12.2.  Ein einfaches Beispiel fr /etc/ax25/ax25d.conf


































  # ax25d.conf fr VK2KTJ - 02/03/97
  # Diese Konfiguration nutzt den vorher definierten AX.25-Port.
  #  Win T1  T2  T3  idl N2    []


    [VK2KTJ-0 via radio]
    parameters 1    10  *  *  *   *   *
    VK2XLZ     *     *  *  *  *   *   *    root  /usr/sbin/axspawn axspawn %u +
    VK2DAY     *     *  *  *  *   *   *    root  /usr/sbin/axspawn axspawn %u +
    NOCALL     *     *  *  *  *   *   L
    default    1    10  5 100 180 5   *    root  /usr/sbin/pms pms -a -o vk2ktj

    [VK2KTJ-1 via radio]
    default    *     *    *   *   *   0    root /usr/sbin/node node


    <netrom>
    parameters 1    10  *  *  *   *   *
    NOCALL     *     *  *  *  *   *   L
    default    *     *  *  *  *   *   0    root /usr/sbin/node node

    {VK2KTJ-0 via rose}
    parameters 1    10  *  *  *   *   *
    VK2XLZ     *     *  *  *  *   *   *    root  /usr/sbin/axspawn axspawn %u +
    VK2DAY     *     *  *  *  *   *   *    root  /usr/sbin/axspawn axspawn %u +
    NOCALL     *     *  *  *  *   *   L
    default    1    10  5 100 180 5   *    root  /usr/sbin/pms pms -a -o vk2ktj

    {VK2KTJ-1 via rose}
    default    *     *    *   *   *   0    root /usr/sbin/node node radio




  In diesem Beispiel gelten fr jede Station, die eine Verbindung mit
  dem Rufzeichen VK2KTJ-0 aufbauen will und auf dem AX.25-Port radio
  gehrt wurde, die folgenden Einstellungen:

  Jeder, dessen Rufzeichen auf NOCALL eingestellt ist, soll
  ausgesperrt bleiben, beachte die Verwendung des Mode L.  Die
  parameters-Zeile ndert zwei der Kernel-Voreinstellungen (Window und
  T1) und startet das axspawn-Programm fr die Nutzer. Alle auf diese
  Weise gestarteten axspawn erscheinen in der Ausgabe des Befehls ps als
  axspawn zum besseren Verstndnis. Die nchsten beiden Zeilen
  definieren fr zwei Stationen, da fr sie diese Einstellungen gelten.

  Die defaults-Zeile dient als Sammelbecken fr alle anderen Stationen
  (auch VK2XLZ und VK2DAY, wenn sie eine andere SSID als -1 verwenden).
  Hier werden alle Parameter implizit gesetzt und das Programm pms mit
  einer Kommandozeile aufgerufen, die anzeigt, da es von einer
  AX.25-Verbindung aufgerufen wurde und das Rufzeichen des Eigentmers
  VK2KTJ ist.  (Siehe den Abschnitt ``Das PMS (Personal Message System)
  einrichten'' fr weitere Details.)

  Die nchste Konfiguration nimmt Rufe an VK2KTJ-1 ber den Port radio
  entgegen. Sie startet das Programm node fr alle Stationen, die eine
  Verbindung zu VK1KTJ-1 aufbauen.

  Anschlieend folgt eine NetROM-Konfiguration, man beachte die
  Verwendung der <>-Klammern anstelle eckiger Klammern [].  Damit
  wird eine NetROM-Konfiguration markiert. Sie ist einfacher, da nur
  festgelegt wird, da fr jede Station, die eine Verbindung zu dem Port
  netrom aufgebaut hat, das Programm node gestartet wird. Stationen
  mit Rufzeichen NOCALL werden ausgesperrt.


  Die letzten beiden Konfigurationen betreffen hereinkommende ROSE-
  Verbindungen. Die erste ist fr Stationen, die VK2KTJ-0 gerufen haben,
  und die zweite fr Verbindungen mit VK2KTJ-1, dem ROSE-Node. Sie
  funktionieren genau gleich. Man beachte die Verwendung von
  geschweiften Klammern {}, um die Konfiguration als ROSE-
  Konfiguration zu kennzeichnen.

  Das Beispiel hier ist frei erfunden, doch es sollte die wichtigen
  Eigenschaften und Mglichkeiten der Syntax der Konfigurationsdatei
  aufzeigen. In der Hilfeseite zu ax25d wird die Konfigurationsdatei
  vollstndig erklrt. Ein detaillierteres und sicher ebenfalls
  ntzliches Beispiel ist in dem Archiv der AX.25-Utilities enthalten.



  12.3.  Den ax25d starten


  Ist die Konfigurationsdatei vervollstndigt, startet man den ax25d:



       /usr/sbin/ax25d




  Nun sollten andere Stationen Verbindungen zu unserer Maschine aufbauen
  knnen. Der Aufruf des ax25d sollte in die beim Systemstart
  ausgefhrten Skripts eingefgt werden, damit dieser automatisch nach
  dem Booten zur Verfgung steht.



  13.  Die Node-Software einrichten


  Die Node-Software wurde von Tomi Manninen (tomi.manninen@hut.fi)
  entwickelt und basiert auf dem Original-PMS-Programm. Es stellt eine
  vollstndige und flexible Node-Funktion zur Verfgung, die man einfach
  einrichten kann.  In den aktuellen AX.25-Utilities ist das Programm
  nicht mehr enthalten, es liegt vielmehr als separates Paket auf
  ftp.hes.iki.fi. Dieses Paket ist nur mit einem Kernel 2.2.x lauffhig.
  Das Programm erlaubt den verbundenen Nutzern, Telnet-, NetROM-, ROSE-
  und AX.25-Verbindungen aufzubauen und bestimmte Informationen zu
  erhalten, wie Finger, Nodes und Heard-Listen usw.

  Der Node kann sehr einfach so eingestellt werden, da er jedes
  gewnschte Linux-Kommando ausfhren kann. Das Programm node wird
  normalerweise vom ax25d aufgerufen, kann aber auch vom inetd gestartet
  werden, um Nutzern Zugriff via Telnet zu ermglichen. Auch ein Aufruf
  von der Kommandozeile ist mglich.



  13.1.  Die Datei /etc/ax25/node.conf


  In dieser Datei wird die hauptschliche Konfiguration des Programms
  node vorgenommen. Sie ist eine einfache Textdatei mit folgendem
  Format:





  #/etc/ax25/node.conf
  # Konfigurationsdatei fr das Programm node.
  #
  # Zeilen, die mit einem '#' beginnen, sind Kommentare und werden vom
  # Programm ignoriert.
  # Hostname
  # Gibt den Rechnernamen der Node-Maschine an
  hostname     radio.gw.vk2ktj.ampr.org
  # Local Network
  # hier kann man einstellen, was als 'Lokal' gilt, wichtig fr
  # Zugriffsrechte in node.perms
  localnet       44.136.8.96/29
  # Hidden Ports
  # Die hier angegebenen Ports sind fr Nutzer unsichtbar. Sie werden
  # vom Befehl (P)orts nicht ausgegeben.
  hiddenports     rose netrom
  # Callserver
  # Wenn eingestellt, wird ein Callserver zur Verfgung gestellt
  callserver      zone.oh7rba.ampr.org
  # Node-Identifikation.
  # Dieser Text erscheint im Node-Prompt
  NodeId         LINUX:VK2KTJ-9
  # NetRom port
  # Name des fr vom Node ausgehende
  NetROM-Verbindungen verwendeten
  # NetROM-Ports
  NrPort         netrom
  # Node Idle Timeout
  # Gibt an, nach welcher Zeit der Inaktivitt eine Verbindung vom Node
  # beendet wird (in Sekunden)
  idletimout      1800
  # Connection Idle Timeout
  # Gibt an, nach welcher Zeit der Inaktivitt eine Verbindung, die ber
  # den Node luft, beendet wird (in Sekunden)
  conntimeout     1800
  # Reconnect
  # Gibt an, ob die Nutzer zum Node zurckverbunden werden sollen, wenn
  # die abgehende Verbindung getrennt wurde (reconnect) oder ob sie
  # vollstndig vom Node getrennt werden sollen
  reconnect       on
  # Command Aliases
  # Eine Mglichkeit, komplexe Befehle einfacher zu gestalten
  alias          CONV    "telnet vk1xwt.ampr.org 3600"
  alias          BBS     "connect radio vk2xsb"
  # External Command Aliases
  # Mglichkeit, externe Befehle unter node ausfhren zu knnen
  # extcmd
  # Nur Flag == 1 ist implementiert
  #  hat das gleiche Format wie in der Datei /etc/ax25/ax25d.conf
  extcmd         PMS     1      root    /usr/sbin/pms pms -u %U -o VK2KTJ
  # Logging
  # Mitschriften ins System-Log.
  # 3 - ausfhrlichste Form, 0 - ausgeschaltet
  loglevel        3





  13.2.  Die Datei /etc/ax25/node.perms


  Das Programm node erlaubt, einzelnen Nutzern Zugriffsrechte
  zuzuteilen. Diese erlauben festzulegen, welche Nutzer beispielsweise
  Befehle wie (T)elnet oder (C)onnect ausfhren drfen und welche nicht.

  Diese Information wird in der Datei /etc/ax25/node.perms abgelegt,
  welche fnf Felder enthlt. In allen Feldern ist der Stern * das
  Zeichen dafr, da alle mglichen Optionen fr das jeweilige Feld
  gelten sollen. Das ist ntzlich, wenn man Standard-Festlegungen
  treffen will. Die einzelnen Felder:



     user
        Das Rufzeichen des Nutzers, fr den die folgenden Regelungen
        gelten sollen. SSID-Werte werden ignoriert, man sollte also nur
        das Rufzeichen angeben.


     method
        Fr jedes Protokoll oder Zugriffsmethode gibt es auch
        Zugriffsrechte. Beispielsweise kann man Nutzern, die ber AX.25
        oder NetROM verbunden sind, erlauben, die (C)onnect-Option zu
        verwenden, diese aber anderen, die z.B. ber telnet eingeloggt
        sind, verwehren.

        Man kann hier also festlegen, fr welches Protokoll die
        Zugriffsrechte gelten sollen:



        ampr
           Nutzer ist ber eine AMPR-Adresse via Telnet verbunden


        ax25
           Nutzer ist ber AX.25 verbunden


        host
           Node wurde von der Kommandozeile gestartet


        inet
           Nutzer ist von einer nicht-lokalen, nicht- AMPR-Adresse aus
           verbunden


        local
           Nutzer ist von einem lokalen Rechner aus verbunden


        netrom
           Nutzer ist ber NetROM verbunden


        rose
           Nutzer ist ber ROSE verbunden


        *  Alle mglichen Verbindungsarten


     port
        Fr AX.25-Nutzer lassen sich Zugriffsrechte auch auf der Basis
        des verwendeten Ports festlegen. Damit kann man definieren, was
        AX.25-Nutzer in Abhngigkeit von dem Port, ber den sie
        verbunden sind, tun drfen.  Im dritten Feld steht bei dieser
        Mglichkeit dann der Portname. Das Ganze ist nur fr
        AX.25-Verbindungen sinnvoll.

     password
        Optional kann man den Node so einstellen, da er die Nutzer nach
        einem Pawort fragt. Das kann sinnvoll sein, um Nutzer mit
        vielen Zugriffsrechten zu schtzen. Das Pawort steht dann im
        vierten Feld der Datei.


     permissions
        Zugriffsrechte. Dieses Feld ist das letzte bei jedem Eintrag in
        /etc/ax25/node.perms.  Es ist als Bit-Feld codiert, wobei jede
        Option einem Bit entspricht, das diese einschaltet, wenn es
        gesetzt ist, und ausschaltet, wenn es nicht gesetzt ist.  Hier
        eine Liste der steuerbaren Optionen und ihrer Bitwerte:



          Wert         Beschreibung
          ------------------------------------------------------------
          1            Login erlaubt
          2            AX.25-(C)onnects erlaubt
          4            NetROM-(C)onnects erlaubt
          8            (T)elnet zu lokalen Rechnern erlaubt
          16           (T)elnet zu AMPR-Net-Rechnern (44.0.0.0)
                       erlaubt
          32           (T)elnet zu nicht-lokalen, nicht-AMPR-Net-
                       Rechnern erlaubt
          64           Versteckte Ports fr AX.25-(C)onnects erlaubt
          128          ROSE-(C)onnects erlaubt




     Um die Zugriffsrechte festzulegen, rechnet man die Werte fr alle
     Rechte des Users zusammen und schreibt die Summe in das fnfte
     Feld.

  Die Datei node.perms knnte also etwa so aussehen:



       # etc/ax25/node.perms
       #
       # Der Nodebetreiber ist VK2KTJ, sein Paort ist "secret"
       # und er hat alle Zugriffsrechte bei allen Verbindungsarten
       vk2ktj *      *       secret  255
       # Folgende Nutzer drfen keine Verbindungen aufbauen
       NOCALL *      *       0
       PK232  *      *       0
       PMS    *      *       0
       # INET-Nutzer drfen keine Verbindungen aufbauen
       *      inet   *       0
       # AX.25-, NetROM, lokale, Host- und AMPR-Nutzer knnen (C)onnects
       # und (T)elnet-Verbindungen zu anderen lokalen und AMPR-Rechnern,
       # jedoch nicht zu anderen IP-Adressen aufbauen
       *       ax25   *      *       159
       *       netrom *      *       159
       *       local  *      *       159
       *       host   *      *       159
       *       ampr   *      *       159







  13.3.  node vom ax25d aus starten


  Das Programm node wird normalerweise vom ax25d aus gestartet. Dazu
  mssen entsprechende Eintrge in der Datei /etc/ax25/ax25d.conf
  vorgenommen werden. In der Beispielkonfiguration haben die Nutzer die
  Wahl, ob sie eine Verbindung zum Node oder zu anderen Diensten
  aufbauen wollen.  Bei ax25d gibt es zu diesem Zweck sogenannte Port-
  Aliases. Beispiel: Bei der weiter oben angegebenen Konfiguration fr
  ax25d soll unter dem Rufzeichen VK2KTJ-1 der Node erreichbar sein.
  Dazu wird folgendes in der Datei /etc/ax25/ax25d.conf hinzugefgt:



       [vk2ktj-1 via radio] default *  *   *   *   *  0   root /usr/sbin/node node




  Damit wird festgelegt, da der Linux-Kernel-Code alle
  Verbindungsanforderungen fr das Rufzeichen VK2KTJ-1, die er auf dem
  AX.25-Port radio hrt, beantwortet und das Programm node startet.



  13.4.  node vom inetd aus starten


  Es ist leicht mglich, den Node auch von einer Telnet-Verbindung aus
  zu nutzen. Zunchst ist festzulegen, zu welchem Port die die Nutzer
  ihre Verbindung aufbauen sollen.

  Im Beispiel wurde willkrlich Port 3694 gewhlt, Informationen
  darber, wie man den Telnet-Daemon durch node ersetzen kann, finden
  sich in Tomis Dokumentation.

  Zwei Dateien sind anzupassen. Der Datei /etc/services fgt man hinzu:



       node   3694/tcp        # OH2BNS's Node-Programm




  und in /etc/inetd.conf kommt zustzlich:




       node    stream tcp     nowait  root    /usr/sbin/node node




  Nach einem Neustart des inetd (vorher ein kill -HUP 1) bekommen alle
  Nutzer, die eine Telnet-Verbindung zum Port 3694 aufgebaut haben, eine
  Abfrage nach Loginname und Pawort (wenn eingerichtet) und werden dann
  an node weitergegeben.







  14.  axspawn einrichten


  axspawn ist ein einfaches Programm, das anrufenden AX.25-Stationen den
  Login auf die eigene Maschine erlaubt.

  Es kann vom ax25d in gleicher Weise wie node gestartet werden. Um
  einem Nutzer ein Login auf die eigene Maschine zu erlauben, mu der
  Datei /etc/ax25/ax25d.conf eine Zeile hnlich dieser hinzugefgt
  werden:



       default *   *   *  *   *   1   root /usr/sbin/axspawn axspawn %u




  Endet diese Zeile mit einem +, so mu der jeweilige Nutzer Return
  drcken, bevor er sich einloggen darf. Voreingestellt ist, da nicht
  auf das Return gewartet wird.

  Fr alle dieser Zeile folgenden Konfigurationen wird axspawn
  gestartet. axspawn prft, ob das auf der Kommandozeile bergebene
  Rufzeichen gltig ist, entfernt dann eine etwaige SSID und schaut in
  /etc/passwd nach, ob der betreffende Nutzer einen Account besitzt.
  Gibt es einen Account , und das Pawort ist entweder  (nichts) oder
  +, dann ist der Nutzer eingeloggt, steht etwas im Pawort-Feld, so
  wird der Nutzer nach einem Pawort gefragt.

  Gibt es keinen Account fr den Nutzer, so kann axspawn so eingestellt
  werden, da es automatisch einen einrichtet.  Achtung: Bei
  Distributionen, die mit dem sogenannten Password-Shadowing arbeiten,
  bei denen das Pawort also nicht in /etc/passwd steht, kann es mit dem
  automatischen Anlegen von Nutzer-Accounts Probleme geben.

  In diesem Fall ist es gnstiger, fr alle nicht speziell definierten
  Nutzer eine Art Gast-Account vorzusehen, auf den jeder von ihnen
  zugreifen kann.



  14.1.  Die Datei /etc/ax25/axspawn.conf


  Das Verhalten von axspawn kann mit der Datei /etc/ax25/ax25spawn.conf
  in verschiedener Weise beeinflut werden.  Diese Datei hat folgendes
  Format:


















  # /etc/ax25/axspawn.conf
  #
  # Automatische Erzeugung von Accounts fr Nutzer?
  create   yes
  #
  # Gastzugang, wenn oben 'no' eingestellt ist - oder nichts geht
  # Gastzugang ausgeschaltet mit 'no'
  guest    no
  #
  # Gruppen-ID oder Name fr Auto-Account
  group    ax25
  #
  # Erste zu verwendende Nutzerkennung (User-ID)
  first_uid  2001
  #
  # Maximum fr User-ID
  max_uid    3000
  #
  # Home-Verzeichnis fr die neuen Nutzer
  home       home/ax25
  #
  # Shell fr die neuen Nutzer
  shell      /bin/bash
  #
  # User-ID mit Rufzeichen fr ausgehende Verbindungen verknpfen
  associate  yes




  Ein # in der Datei markiert einen Kommentar; der Rest der Zeile wird
  ignoriert.

  Folgende acht Charakteristika von axspawn knnen eingestellt werden:


     create
        Wenn auf yes gesetzt, versucht axspawn, einen Account fr alle
        Nutzer, die noch nicht in /etc/passwd aufgefhrt sind, zu
        erzeugen.


     guest
        Dieses Feld bezeichnet den Loginnamen, der verwendet wird, wenn
        create auf no gestellt ist. Im Normalfall ist das guest oder
        ax25.


     group
        Bezeichnet den Gruppennamen, der fr neu (create) angelegte
        Nutzer-Accounts verwendet wird.


     first_uid
        Nummer der ersten Benutzerkennung (User-ID), die fr mit create
        neu angelegte Nutzer-Accounts verwendet werden soll.


     max_uid
        Hchste fr Benutzerkennungen von mit create angelegten Accounts
        zu vergebende Zahl


     home
        Home-(Login-)Verzeichnis fr neu angelegte Nutzer-Accounts

     shell
        Die fr die neu angelegten Accounts zu verwendende Login-Shell


     associate
        Legt fest, ob abgehende Verbindungen unter dem Rufzeichen des
        ankommenden Nutzers oder dem der eigenen Station laufen sollen.




  15.  Das PMS (Personal Message System) einrichten


  Das Programm pms ist eine Implementation eines einfachen Personal
  Message Systems. Es wurde von Alan Cox geschrieben und von Dave Brown,
  NR2JT (dcb@vectorbd.com) weiter verbessert.

  Zur Zeit ist das Programm noch sehr einfach, es erlaubt nur,
  Mitteilungen an den Eigentmer des Systems zu richten und einige
  begrenzte Systeminformationen abzufragen. Dave arbeitet daran, die
  Mglichkeiten des Programms zu erweitern. Es gibt einige Dateien, die
  man erzeugen sollte, um den Nutzern einige Informationen ber das
  eigene System zu geben.

  Weiterhin mssen der Datei /etc/ax25/ax25d.conf die entsprechenden
  Eintrge hinzugefgt werden, um das PMS den Nutzern zur Verfgung zu
  stellen.



  15.1.  Die Datei /etc/ax25/pms.motd


  Diese Datei enthlt den Spruch des Tages (Message Of The Day), den
  die Nutzer nach Aufbau der Verbindung und Empfang des blichen BBS-ID-
  Headers lesen knnen.

  Es ist eine einfache Textdatei, deren Inhalt an die Nutzer gesendet
  wird.



  15.2.  Die Datei /etc/ax25/pms.info


  Diese ist ebenfalls eine einfache Textdatei, die detailliertere
  Informationen ber die eigene Systemkonfiguration oder Station
  enthlt. Sie wird als Antwort auf den info-Befehl ausgesendet, den die
  Nutzer am PMS> - Prompt eingeben knnen.


  15.3.  AX.25-Rufzeichen Systembenutzern zuordnen


  Sendet ein mit dem System verbundener Nutzer eine Mail an ein
  AX.25-Rufzeichen, so erwartet pms, da das Rufzeichen einem realen
  Systembenutzer auf der Maschine zugeordnet ist.

  Dies wird in einem gesonderten Abschnitt beschrieben.






  15.4.  PMS in die Datei /etc/ax25/ax25d.conf einbauen


  Dies ist sehr einfach. Eine Sache mu aber beachtet werden: Dave hat
  fr pms Kommandozeilenparameter vorgesehen, damit dieses verschiedene
  Konventionen fr die Zeilenendmarkierung verarbeiten kann. AX.25 und
  NetROM erwarten die Zeilenendmarkierung als Carriage Return+Linefeed
  (CR+LF), whrend unter Unix ein New Line Standard ist.

  Will man also beispielsweise einen Eintrag in /etc/ax25/ax25d.conf
  vorsehen, der fr jede auf einem AX.25-Port hereinkommende Verbindung
  das PMS startet, so fgt man etwa eine solche Zeile hinzu:



       default 1  10  5  100  5  0   root  /usr/sbin/pms pms -a -o vk2ktj




  Damit wird das PMS gestartet und ihm mitgeteilt, da es mit einer
  AX.25-Verbindung assoziiert ist und der Eigentmer des PMS VK2KTJ ist.
  Fr andere Verbindungsarten gibt die Hilfeseite weiterfhrende
  Ausknfte.



  15.5.  Das PMS testen



  Als Test fr das PMS eignet sich z.B. folgender Befehl, der auf der
  Kommandozeile eingegeben wird:



       /usr/sbin/pms -u vk2ktj -o vk2ktj




  An Stelle von vk2ktj gibt man sein eigenes Rufzeichen an.  PMS wird
  gestartet, es verwendet die unter UNIX bliche Zeilenendemarkierung
  und der eingeloggte Nutzer ist hier vk2ktj. Jetzt kann man alle
  Befehle, die den verbundenen Nutzern zur Verfgung stehen,
  ausprobieren.

  Zustzlich kann man eine andere Station bitten, sich mit der eigenen
  zu verbinden, um zu prfen, ob die Einstellungen in
  /etc/ax25/ax25d.conf funktionieren.



  16.  Die user_call - Programme einrichten


  Die user_call-Programme heien in Wirklichkeit ax25_call und
  netrom_call. Es sind sehr einfache Programme, die fr den Aufruf durch
  den ax25d vorgesehen sind und Netzwerkverbindungen zu entfernten
  Rechnern automatisieren sollen.  Natrlich knnen sie auch von
  Shellskripts oder anderen Programmen, wie node, aufgerufen werden.

  Die Programme sind hnlich wie das Programm call: Sie verndern die
  Daten nicht, man mu sich also selbst darum kmmern, wie
  beispielsweise das Zeilenende behandelt werden soll.

  Zunchst ein Beispiel fr die Verwendung. Angenommen, man habe ein
  kleines Netzwerk zu Hause und man habe eine Linux-Maschine als Funk-
  Gateway und einen BPQ-Node, ber Ethernet mit dieser verbunden.

  Im Normalfall mten Nutzer ber Funk die Linux-Maschine als
  Digipeater verwenden oder eine Verbindung zum Node-Programm aufbauen
  und sich von da aus weiterverbinden lassen, wenn sie den BPQ-Node
  erreichen wollten. Dies kann durch das Programm ax25_call erleichtert
  werden, wenn es durch ax25d aufgerufen wird.

  Angenommen, der BPQ-Node habe das Rufzeichen VK2KTJ-9 und die Linux-
  Maschine habe den AX.25/Ethernet-Port namens bpq sowie einen Funk-Port
  namens radio. Mit einem Eintrag in /etc/ax25/ax25d.conf



       [VK2KTJ-1 via radio] default *  *  *  *  *  *  * root /usr/sbin/ax25_call ax25_call bpq %u vk2ktj-9




  erlaubte man Nutzern eine direkte Verbindung zu VK2KTJ-1 und damit zum
  Linux-AX.25-Daemon, der sie dann automatisch auf eine AX.25-Verbindung
  zu VK2KTJ-9 ber das Interface bpq schalten wrde.

  Es gibt eine Menge mglicher Konfigurationen. Die Programme
  netrom_call und rose_call funktionieren analog zu ax25_call.

  Ein Funkamateur verwendete dieses Utility, um Verbindungen zu einer
  entfernten Mailbox leichter aufbauen zu knnen. Im Normalfall hatten
  die Nutzer eine lange Zeichenkette zum Aufbau der Verbindung
  einzugeben.

  Deshalb erzeugte er einen Eintrag, der die Box als im lokalen Netzwerk
  befindlich erscheinen lie und bertrug ax25d und ax25_call den
  weiteren Verbindungsaufbau (Proxy-Prinzip).



  17.  Die Befehle zum ROSE-Up- und -Downlink einrichten


  Wer sich mit der ROM-basierten ROSE-Implementation auskennt, wird auch
  die Art des Verbindungsaufbaus ber ein ROSE-Netzwerk kennen.  Hat ein
  lokaler ROSE-Node eines AX.25-Nutzers das Rufzeichen VK2KTJ-5 und der
  Nutzer will eine Verbindung zu VK5XXX auf dem entfernten Node
  5050882960, dann wird er folgenden Befehl eingeben:




       c vk5xxx v vk2ktj-5 5050 882960




  Die entfernte Station VK5XXX wrde dann eine unter dem Rufzeichen des
  lokalen Nutzers ber das Rufzeichen des entfernten ROSE-Nodes (via)
  hereinkommende Verbindung erkennen.

  Diese Funktionen werden bei der ROSE-Implementation unter Linux nicht
  vom Kernel untersttzt, es gibt zwei Programme namens rsuplnk und
  rsdownlnk dafr.



  17.1.  Einen ROSE-Downlink einrichten


  Damit die eigene Linux-Maschine hereinkommende ROSE-Verbindungen
  annimmt und entsprechend an das gewnschte Zielrufzeichen
  weiterleitet, mu der Datei /etc/ax25/ax25d.conf ein Eintrag
  hinzugefgt werden.

  Im Normalfall wird dieser als Voreinstellung fr alle hereinkommenden
  ROSE-Verbindungen eingerichtet. Beispielsweise kann man ROSE-Nutzer
  fr HEARD-0 oder NODE-0 lokal arbeiten lassen, fr alle anderen
  Zielrufzeichen rsdownlink aufrufen:




       #
       {* via rose}
       NOCALL  *  * *  *  *  *  L default *  *  *
       *  *  * - root /usr/sbin/rsdwnlnk rsdwnlnk 4800 vk2ktj-5
       #




  Bei dieser Einstellung wird jede ber die ROSE-Node-Adresse
  hereinkommende Verbindung in eine AX.25-Verbindung auf dem AX.25-Port
  mit Namen 4800 mit dem Digipeater-Pfad VK2KTJ-5 umgewandelt, sofern
  kein gesondert zu behandelndes Zielrufzeichen angegeben wurde.



  17.2.  Einen ROSE-Uplink einrichten


  Damit die eigene Linux-Maschine in gleicher Weise wie das ROM-basierte
  ROSE Verbindungen entgegennimmt, mu ein Eintrag in die Datei
  /etc/ax25/ax25d.conf eingefgt werden, etwa so:



       #
       [VK2KTJ-5* via 4800]
       NOCALL *  *  *  *  *  *  L default *
       *  *  *  *  * - root /usr/sbin/rsuplnk rsuplnk rose
       #




  Man beachte die spezielle Syntax fr das lokale Rufzeichen.  Das
  Zeichen * zeigt an, da die Anwendung (hier rsuplnk) gestartet
  werden soll, wenn das Rufzeichen im Digipeater-Pfad einer Verbindung
  auftaucht. Mit dieser Einstellung wrde man einem AX.25-Nutzer
  erlauben, ROSE-Verbindungen mit dem unter 18. einleitend angegebenen
  Befehl herzustellen.  Jeder Nutzer, der den Digipeater ber VK2KTJ-5
  auf dem AX.25-Port 4800 nutzen will, wird ber rsuplnk
  weiterverbunden.








  18.  AX.25-Rufzeichen Linux-Nutzern zuordnen


  In vielen Situationen ist es wnschenswert, ein Rufzeichen einem
  Linux-Nutzer-Account zuzuordnen.

  Beispielsweise knnten mehrere Funkamateure die gleiche Linux-Maschine
  nutzen und unter ihrem eigenen Rufzeichen Verbindungen aufbauen
  wollen. Oder Nutzer des PMS wollen einem bestimmten Linux-Nutzer eine
  Nachricht zukommen lassen.

  Die AX.25-Software stellt eine Mglichkeit zur Verfgung, die Account-
  Namen von Linux-Nutzern mit Rufzeichen zu verbinden.  Dies wurde im
  Abschnitt PMS bereits erwhnt, soll hier aber genauer dargestellt
  werden.

  Die Verknpfung wird mit dem Befehl axparms hergestellt,
  beispielsweise so:



       axparms -assoc vk2ktj terry




  Dieser Befehl verknpft einen User-Account namens terry auf der
  Maschine mit dem Funk-Rufzeichen vk2ktj. Jede Nachricht vom PMS an
  vk2ktj wird jetzt an den Account terry weitergeleitet.

  Nicht vergessen sollte man, diese Verknpfungen in das beim Starten
  des Systems ausgefhrte Skript einzubauen, damit sie bei jedem
  Neustart zur Verfgung stehen.

  Beachte: Man sollte nie den root-Account mit einem Rufzeichen
  verknpfen, da dies zu Konfigurationsproblemen in anderen Programmen
  fhren kann. In den meisten Fllen funktionieren diese dann nicht wie
  erwartet.



  19.  Die Eintrge im /proc-Dateisystem


  In dem Dateisystem unter /proc  finden sich eine Reihe fr die AX.25-
  und NetROM-Kernel-Software spezifische Dateien. Sie werden
  normalerweise von den AX.25-Utilities genutzt, sind aber einfach
  formatiert, so da es interessant sein kann, ihren Inhalt zu
  studieren. Da das Format so einfach ist, sollte keine spezielle
  Erklrung notwendig sein.


     /proc/net/arp
        Enthlt die Liste der Address Resolution Protocol-Mappings zu
        Adressen auf MAC-Protokollebene.  Diese knnen AX.25, Ethernet
        oder eine andere MAC-Protokollebene sein.


     /proc/net/ax25
        Enthlt eine Liste der geffneten AX.25-Sockets.  Dies knnen
        aktive Sitzungen oder solche, die auf eine Verbindung warten,
        sein.


     /proc/net/ax25_bpqether
        Enthlt die Mappings fr die Rufzeichen fr AX.25 ber BPQ-
        Ethernet.


     /proc/net/ax25_calls
        Enthlt die Zuordnungen von User-IDs zu Rufzeichen, wie sie mit
        axparms -assoc eingestellt wurden.


     /proc/net/ax25_route
        Enthlt den AX.25-Digipeater-Pfad


     /proc/net/nr
        Enthlt eine Liste der geffneten NetROM-Sockets.  Dies knnen
        aktive Sitzungen oder solche, die auf eine Verbindung warten,
        sein.


     /proc/net/nr_neigh
        Enthlt Informationen ber die der NetRom-Software bekannten
        benachbarten NetROM-Stationen.


     /proc/net/nr_nodes
        Enthlt Informationen ber die der NetRom-Software bekannten
        NetROM-Nodes.


     /proc/net/rose
        Enthlt eine Liste der geffneten ROSE-Sockets.  Dies knnen
        aktive Sitzungen oder solche, die auf eine Verbindung warten,
        sein.


     /proc/net/rose_neigh
        Enthlt Informationen ber die der ROSE-Software bekannten
        benachbarten ROSE-Stationen.


     /proc/net/rose_nodes
        Enthlt eine Zuordnung von ROSE-Zielen zu benachbarten ROSE-
        Stationen.


     /proc/net/rose_routes
        Enthlt eine Liste aller bestehenden ROSE-Verbindungen






  20.  AX.25-, NetROM- und ROSE-Programmierung


  Der vielleicht grte Vorteil bei der Nutzung der kernelbasierten
  Implementationen der Packet-Radio-Protokolle besteht in der
  Leichtigkeit, mit der Programme und Anwendungen zu ihrer Nutzung
  entwickelt werden knnen. Das Thema Netzwerk-Programmierung unter UNIX
  wrde den Rahmen dieses Textes sprengen; hier sollen die elementaren
  Details der Nutzung der AX.25-, NetROM- und ROSE-Protokolle in eigener
  Software besprochen werden.




  20.1.  Adrefamilien


  Die Netzwerkprogrammierung fr AX.25, NetROM und ROSE ist der TCP/IP-
  Programmierung unter Linux sehr hnlich.

  Die hauptschlichen Unterschiede ergeben sich aus den verwendenden
  Adrefamilien und -strukturen, die entsprechend angeordnet werden
  mssen. Die Adrefamilien tragen die Namen AF_AX25, AF_NETROM und
  AF_ROSE fr die jeweiligen Protokolle.



  20.2.  Headerdateien


  In eigenen Quelltexten mu immer ein include-Statement fr ax25.h,
  netrom.h oder rose.h vorgesehen werden, wenn man mit diesen
  Protokollen arbeitet.

  Fr AX.25:



       #include <ax25.h>
       int s, addrlen = sizeof(struct full_sockaddr_ax25);
       struct full_sockaddr_ax25 sockaddr;
       sockaddr.fsa_ax25.sax25_family = AF_AX25




  Fr NetRom:



       #include <ax25.h>
       #include <netrom.h>
       int s, addrlen = sizeof(struct full_sockaddr_ax25);
       struct full_sockaddr_ax25 sockaddr;
       sockaddr.fsa_ax25.sax25_family = AF_NETROM;





  Fr ROSE:



       #include <ax25.h>
       #include <rose.h>
       int s, addrlen = sizeof(struct sockaddr_rose);
       struct sockaddr_rose sockaddr;
       sockaddr.srose_family = AF_ROSE;






  20.3.  Rufzeichenhandhabung und Beispiele


  Die Rufzeichenumwandlungen werden von Routinen erledigt, welche in der
  zu den AX.25-Utilities gehrenden Bibliothek /lib/ax25.a stehen.
  Natrlich kann man sich auch seine eigenen schreiben. Die User_call-
  Programme sind ein gutes Beispiel, von dem man starten kann. Ihre
  Quelltexte sind im Paket der AX.25-Utilities mit enthalten.

  Wenn man sich ein wenig damit befat, wird man feststellen, da 90%
  der Arbeit in der Vorbereitung zum ffnen des Sockets bestehen. Die
  Herstellung einer Verbindung ist einfach, nur die Vorbereitung braucht
  Zeit.

  Diese Beispiele sollten so einfach sein, da sie nicht zu Verwirrungen
  fhren. Wer Fragen hat, sollte sie an die Linux-Hams-Mailingliste
  schicken. Es wird sich dann sicherlich jemand finden, der weiterhilft.





  21.  Einige Beispielkonfigurationen


  Im folgenden werden Beispiele fr einige der blichsten
  Konfigurationen vorgestellt.  Sie sollen als Anregung fr die eigene
  Konfiguration dienen.



  21.1.  Kleines Ethernet-LAN mit Linux als Router auf Funk-LAN




       ---                                .
        | Netzwerk       /---------\     .    Netzwerk
        | 44.136.8.96/29 |         |    .     44.136.8/24        \ | /
        |                | Linux   |   .                          \|/
        |                |         |  .                            |
        |          eth0  | Router  |  .  /-----\    /----------\   |
        |----------------|         |-----| TNC |----| Radio    |---/
        |   44.136.8.97  |  und    |  .  \-----/    \----------/
        |                |         | sl0
        |                | Server  | 44.136.8.5
        |                |         |    .
        |                |         |     .
        |                \_________/       .
       ---                                     .      .   .    .    . .





















  #!/bin/sh
  # /etc/rc.net
  # Diese Konfiguration stellt einen KISS basierten AX.25-Port und
  # ein Ethernet-Device zur Verfgung.
  echo "/etc/rc.net" echo "  Configuring:"
  echo -n "    loopback:"
  /sbin/ifconfig lo 127.0.0.1
  /sbin/route add 127.0.0.1
  echo " done."
  echo -n "    ethernet:"
  /sbin/ifconfig eth0 44.136.8.97 netmask 255.255.255.248 \
                   broadcast 44.136.8.103 up /sbin/route add 44.136.8.97 eth0
  /sbin/route add -net 44.136.8.96 netmask 255.255.255.248 eth0
  echo " done." echo -n "    AX.25: "
  kissattach -i 44.136.8.5 -m 512 /dev/ttyS1 4800
  ifconfig sl0 netmask 255.255.255.0 broadcast 44.136.8.255
  route add -host 44.136.8.5 sl0
  route add -net 44.136.8.0 window 1024 sl0
  echo -n "    Netrom: "
  nrattach -i 44.136.8.5 netrom echo "  Routing:"
  /sbin/route add default gw 44.136.8.68 window 1024 sl0
  echo "  default route."
  echo done.
  # end





  /etc/ax25/axports



       #
       name  callsign       speed   paclen  window  description
       4800  VK2KTJ-0       4800    256     2       144.800 MHz




  /etc/ax25/nrports


       # name
       callsign       alias   paclen  description netrom
       VK2KTJ-9       LINUX   235     Linux Switch Port




  /etc/ax25/nrbroadcast


       # ax25_name     min_obs def_qual       worst_qual      verbose
       4800            1       120            10              1





    IP_FORWARDING mu im Kernel eingeschaltet sein.

    Die AX.25-Konfigurationsdateien entsprechen weitestgehend den
     weiter oben aufgefhrten Beispielen, siehe auch dort.


    Fr den Funkport wurde eine IP-Adresse gewhlt, die nicht im
     Adreblock des eigenen Netzwerkes enthalten ist.  Das ist nicht
     unbedingt so notwendig, genausogut htte man auch 44.136.8.97 fr
     diesen Port vorsehen knnen.

    44.136.8.68 ist hier der lokale IPIP-gekapselte Gateway - daher
     wird die voreingestellte Route dorthin gesetzt.

    Jede der Maschinen im Ethernet-Netzwerk hat eine Route:



       route add -net 44.0.0.0 netmask 255.0.0.0 \
             gw 44.136.8.97 window 512 mss 512 eth0




  Mit der Verwendung der MSS und Window-Parameter erhlt man optimale
  Performance sowohl im Ethernet als auch bei den Funkverbindungen.

    Auf dem Router laufen ebenso die Daemonen smail, http, ftp und
     andere, so da sie die einzige Maschine ist, die anderen Nutzern
     Dienste anbietet.

    Der Router ist ein langsamer 386DX20 mit 20MB-Festplatte und
     minimaler Linux-Konfiguration.





  21.2.  IPIP-gekapselter Gateway


  Linux wird oft auch fr TCP/IP-gekapselte Gateways verwendet.  Der
  neue Tunnel-Treiber untersttzt mehrere gekapselte Routen und lst den
  veralteten ipip-Daemon ab. Eine typische Konfiguration wrde etwa so
  aussehen:



                                                 .      .   .    .    . .
         ---                                .
          | Netzwerk      /---------\     .    Netzwerk
          | 154.27.3/24   |         |    .     44.136.16/24       \ | /
          |               | Linux   |   .                          \|/
          |               |         |  .                            |
          |          eth0 | IPIP    |  .  /-----\    /----------\   |
       ---|---------------|         |-----| TNC |----| Radio    |---/
          |   154.27.3.20 | Gateway |  .  \-----/    \----------/
          |               |         | sl0
          |               |         | 44.136.16.1
          |               |         |    .
          |               |         |     .
          |               \_________/       .
         ---                                     .      .   .    .    . .




  Einige zu beachtende Punkte:


    Der neue Tunnel-Treiber nutzt das GW-Feld in der Routing-Tabelle an
     Stelle des pointopoint-Parameters, zur Angabe der Adresse des
     entfernten IPIP-Gateway. Auf diese Weise untersttzt er nun mehrere
     Routen pro Interface.

    Man kann zwei Netzwerk-Devices mit gleicher Adresse einrichten.  In
     diesem Beispiel wurden die Devices sl0 und tunl0 mit der IP-Adresse
     des Funkports konfiguriert.  Auf diese Weise erkennt der entfernte
     Gateway die korrekte Adresse des eigenen Gateways in den
     gekapselten Paketen, die an ihn gesendet wurden.

    Die Route-Befehle zur Angabe der gekapselten Routen knnen
     automatisch mit einer modifizierten Version des Munge-Skripts
     erzeugt werden, die weiter unten abgedruckt ist.  Die Route-Befehle
     werden dann in eine separate Datei geschrieben und mit dem Bash-
     Befehl



       source /etc/ipip.routes





  (angenommen, die Datei mit den Route-Befehlen heie /etc/ipip.routes)
  wie dargestellt eingelesen.  Die Quelldatei mu das NOS-Format fr
  Route-Befehle haben.

    Beachte die Verwendung des Window-Arguments bei dem Route-Befehl.
     Der richtige Wert fr diesen Parameter erhht die Performance der
     Funkverbindung.

  Das neue Tunnel-munge-Script:


































  #!/bin/sh
  #
  #  Von: Ron Atkinson
  #
  #  Dieses Skript basiert auf dem ursprnglich fr den IPIP-
  #  Daemon geschriebenen munge-Skript von Bdale N3EUA,
  #  es wurde von Ron Atkinson N8FOW modifiziert.
  #  Es dient zur Umwandlung einer Gateway-Route-Datei im KA9Q NOS-Format
  #  (blicherweise encap.txt) in das Format der Linux-Routing-Tabelle
  #  fr den IP -Tunnel-Treiber.
  #
  #  Aufruf: Gateway-Datei auf stdin, Linux -Routingtabelle auf stdout.
  #          z.B.  tunnel-munge < encap.txt > ampr-routes
  #
  #  ACHTUNG: Bevor das Skript nutzbar ist, mu folgendes berprft werden:
  #
  #     1) Trage fr Local routes und Misc user routes die im eigenen
  #        Gebiet gltigen Routen ein und entferne die Beispiele!
  #     2) Auf der fgrep-Zeile mu die EIGENE Internet-Gateway-Adresse
  #        eingetragen werden. Wird dies nicht getan, so entstehen
  #        ernsthafte Probleme durch Routing-Schleifen.
  #     3) Der voreingestellte Name des Interfaces ist tunl0.
  #        Es ist sicherzustellen, da dies auf dem eigene System zutrifft.
  echo "#"
  echo " # IP tunnel route table built by $LOGNAME on `date`"
  echo "# by tunnel-munge script v960307."
  echo "#"
  echo "# Local routes"   echo "
  route add -net 44.xxx.xxx.xxx netmask 255.mmm.mmm.mmm dev sl0"
  echo "#"   echo "# Misc user routes"
  echo "#"   echo "# remote routes"
  fgrep encap | grep "^route" | grep -v " XXX.XXX.XXX.XXX" | \
  awk '{
         split($3, s, "/")
         split(s[1], n,".")
         if      (n[1] == "")    n[1]="0"
         if      (n[2] == "")    n[2]="0"
         if      (n[3] == "")    n[3]="0"
         if      (n[4] == "")    n[4]="0"
         if      (s[2] == "1")   mask="128.0.0.0"
         else if (s[2] == "2")   mask="192.0.0.0"
         else if (s[2] == "3")   mask="224.0.0.0"
         else if (s[2] == "4")   mask="240.0.0.0"
         else if (s[2] == "5")   mask="248.0.0.0"
         else if (s[2] == "6")   mask="252.0.0.0"
         else if (s[2] == "7")   mask="254.0.0.0"
         else if (s[2] == "8")   mask="255.0.0.0"
         else if (s[2] == "9")   mask="255.128.0.0"
         else if (s[2] == "10")  mask="255.192.0.0"
         else if (s[2] == "11")  mask="255.224.0.0"
         else if (s[2] == "12")  mask="255.240.0.0"
         else if (s[2] == "13")  mask="255.248.0.0"
         else if (s[2] == "14")  mask="255.252.0.0"
         else if (s[2] == "15")  mask="255.254.0.0"
         else if (s[2] == "16")  mask="255.255.0.0"
         else if (s[2] == "17")  mask="255.255.128.0"
         else if (s[2] == "18")  mask="255.255.192.0"
         else if (s[2] == "19")  mask="255.255.224.0"
         else if (s[2] == "20")  mask="255.255.240.0"
         else if (s[2] == "21")  mask="255.255.248.0"
         else if (s[2] == "22")  mask="255.255.252.0"
         else if (s[2] == "23")  mask="255.255.254.0"
         else if (s[2] == "24")  mask="255.255.255.0"
         else if (s[2] == "25")  mask="255.255.255.128"
         else if (s[2] == "26")  mask="255.255.255.192"
         else if (s[2] == "27")  mask="255.255.255.224"
         else if (s[2] == "28")  mask="255.255.255.240"
         else if (s[2] == "29")  mask="255.255.255.248"
         else if (s[2] == "30")  mask="255.255.255.252"
         else if (s[2] == "31")  mask="255.255.255.254"
         else                    mask="255.255.255.255"

  if (mask == "255.255.255.255")
         printf "route add -host %s.%s.%s.%s gw %s dev tunl0\n"\
                 ,n[1],n[2],n[3],n[4],$5
  else
         printf "route add -net %s.%s.%s.%s gw %s netmask %s dev tunl0\n"\
                 ,n[1],n[2],n[3],n[4],$5,mask
  }'

  echo "#"
  echo "# default the rest of amprnet via mirrorshades.ucsd.edu"
  echo "route add -net 44.0.0.0 gw 128.54.16.18 netmask 255.0.0.0 dev tunl0"
  echo "#"
  echo "# the end"





  Fr den Kernel 2.2.x mit aktuellem AX.25-Subsystem gilt ein neues
  Skript:








































  #!/usr/bin/perl
  #
  #  Von: Ron Atkinson
  #
  #  Dieses Skript basiert auf dem ursprnglich fr den IPIP-
  #  Daemon geschriebenen munge-Skript von Bdale N3EUA,
  #  es wurde von Ron Atkinson N8FOW modifiziert.
  #  Es dient zur Umwandlung einer Gateway-Route-Datei im KA9Q NOS-Format
  #  (blicherweise encap.txt) in das Format der Linux-Routing-Tabelle
  #  fr den IP -Tunnel-Treiber.
  #
  # Verbesserte Perl-Version by Heikki Hannikainen
  #
  # Versionen:
  #
  #       2.1     hessu   Thu Jul  8 19:41:18 EEST 1999
  #               - Modifiziert fr /sbin/ip
  #
  #  Aufruf: z.B.    munge encap.txt rc.tun-routes
  #
  #  ACHTUNG: Bevor das Skript nutzbar ist, mu folgendes
  #  berprft werden:
  #
  #     1) Die @my_addresses-Liste mu STATT DER in diesem
  #        Text stehenden Adressen die IP-Adresse des eigenen
  #        Gateways (und Adressen, fr die manuell eingetragene
  #        statische Routen existieren) enthalten.
  #
  # verwendetes Tunnel-Device
  $tunnel_device = "tunl0";
  # Adressen lokaler Gateways (deren Routen werden bergangen)
  @my_addresses = ("193.167.178.112", "193.166.55.160", "195.148.207.30"); #
  route binary $routebin = "/sbin/ip"; # tcp window to set $window = 840;

  if ($#ARGV != 1) {
   print "Aufruf: $0 encap.txt rc.tun-routes\n";
   exit 1;
  }

  open(inf, @ARGV[0]) || die "Kann nicht oeffnen: @ARGV[0]: $!";
  open(upf, ">@ARGV[1]") or die "Kann nicht oeffnen: @ARGV[1]: $!";;

  $hdr = "#\n# IP tunnel route table\n#\n#\n";
  print upf $hdr;

  LOOP: while ($line = ) {

   @fields = ();
   @abytes = ();
   $bits = "";

   @fields = split(' ', $line);
   if (@fields[0] ne "route") { next LOOP; }

   $gw = @fields[4];
   $net = @fields[2];
   ($addr, $bits) = split('/', $net);
   if (!$bits) { $bits = 32; }
   @abytes = split('\.', $addr);

   for ($i = 0; $i < 4; $i++) {
    if (@abytes[$i] eq "") { @abytes[$i] = "0"; }
   }
   $addr = join('.', @abytes);

   foreach $my (@my_addresses) {
    if ($gw eq $my) {
     print "$addr/$bits > $gw blocked, local gw\n";
     next LOOP;
    }
   }

   if ($addr !~ /^44\./) {
    print "$addr/$bits > $gw blocked, non-amprnet address!\n";
    next LOOP;
   }

   if ($gw =~ /^44\./) {
    print "$addr/$bits > $gw blocked, inside amprnet!\n";
    next LOOP;
   }

   if ($bits < 16) {
    print "$addr/$bits > $gw  blocked, mask smaller than 16 bits!\n";
    next LOOP;
   }

   print upf "$routebin route add $addr/$bits via $gw dev $tunnel_device
   onlink 2>/dev/null\n";
  }

  print upf "#\n# the end\n#\n";

  close(inf);
  close(upf);





  Zum Schlu ist das Tunnel-Device mit



       ifconfig tunl0 44.139.39.66 mtu 250 up




  zu aktivieren, wobei fr 44.139.39.66 die eigene IP-Adresse
  einzusetzen ist.



  21.3.  Die Einrichtung des AXIP-encapsulated Gateway


  Auf vielen Internet-Gateways des Amateurfunks werden AX.25, NetRom und
  ROSE zustzlich zu TCP/IP gekapselt.

  Die Kapselung von AX.25-Frames innerhalb von IP-Datagrammen wird in
  RFC-1226 von Brian Kantor beschrieben.

  Mike Westerhof schrieb 1991 einen Daemon fr AX.25-Kapselung fr UNIX.
  Die AX-25-Utils enthalten eine leicht verbesserte Version fr Linux.
  Ein Programm zur AXIP-Kapselung nimmt an einem Ende AX.25-Frames
  entgegen, prft die AX.25-Empfngeradresse, um festzulegen, an welche
  IP-Adresse das gekapselte Paket weitergeleitet werden mu, kapselt es
  sodann in ein TCP/IP-Datagramm und sendet es schlielich an das
  passende Ziel.


  In umgekehrter Richtung nimmt es in TCP/IP-Datagrammen enthaltene
  AX.25-Frames entgegen, packt diese aus und behandelt sie weiter, als
  ob sie direkt von einem AX.25-Port empfangen worden wren.

  Um TCP/IP-Datagramme, die AX.25-Frames enthalten, von anderen ohne
  solchen Inhalt unterscheiden zu knnen, werden AXIP-Datagramme mit
  einer Protokoll-Identifizierung von 4 (oder frher 94) versehen.

  Dies wird in RFC-1226 beschrieben. Das in den AX-25-Utils enthaltene
  Programm ax25ipd stellt sich als KISS-Interface, ber das AX.25-Frames
  bertragen werden, und als Interface zu TCP/IP dar. Es wird mit einer
  einzigen Konfigurationsdatei, /etc/ax25/ax25ipd.conf, eingerichtet.



  21.3.1.  Einstellungsoptionen fr AXIP

  Das Programm ax25ipd kennt zwei hauptschliche Betriebsarten,
  Digipeater- und TNC-Modus.

  Im TNC-Modus wird der Daemon wie ein KISS-TNC verwendet, man schickt
  KISS-Pakete an das Programm und es sendet diese weiter - dies ist die
  bliche Konfiguration.

  Im Digipeater-Modus wird der Daemon wie ein AX.25-Digipeater
  behandelt. Es gibt einige feine Unterschiede zwischen diesen
  Betriebsarten. In der Konfigurationsdatei definiert man routes oder
  mappings zwischen den AX.25-Ziel-Rufzeichen und den IP-Adressen der
  Rechner, denen man die Pakete schicken will.

  Jede Route besitzt Optionen, die spter beschrieben werden.  Weiterhin
  kann man hier folgendes einrichten:


    die tty-Schnittstelle, die vom ax25ipd geffnet werden soll und
     deren  Geschwindigkeit (blicherweise ein Ende einer Pipe)

    das Rufzeichen, welches fr den Digipeater-Modus verwendet werden
     soll

    Bakenintervall und -text

    ob die AX.25-Frames in IP-Datagramme oder in UDP/IP-Datagramme
     gekapselt werden sollen.

  So gut wie alle AXIP-Gateways verwenden IP-Kapselung, doch einige
  befinden sich hinter Firewalls, die keine IP-Pakete mit der Protokoll-
  ID des AXIP durchlassen, und sind daher gezwungen, UDP/IP zu
  verwenden. Die hier getroffene Einstellung mu mit der des TCP/IP-
  Zielrechners bereinstimmen.


  21.3.2.  Eine typische Datei /etc/ax25/ax25ipd.conf













  #
  # ax25ipd -Konfigurationsdatei fr die Station floyd.vk5xxx.ampr.org
  #
  # Datentransportart whlen. ip fr die Kompatibilitt
  # mit den meisten anderen Gateways.
  socket ip
  #
  # Betriebsart des ax25ipd einstellen. (digi oder tnc)
  #
  mode tnc
  #
  # Wurde digi eingestellt, mu ein Rufzeichen angegeben werden.
  # Im tnc -Modus ist das rufzeichen zur Zeit optional, doch das kann
  # sich in Zukunft ndern! (2 Rufzeichen bei dual port kiss)
  #
  #mycall vk5xxx-4
  #mycall2 vk5xxx-5
  #
  # In digi -Modus knnen Aliases genutzt werden. (2 fr dual port)
  #
  #myalias svwdns
  #myalias2 svwdn2
  #
  # Aussenden einer Indentifikation aller 540 Sekunden ...
  #
  beacon after 540
  #
  btext ax25ip -- tncmode rob/vk5xxx -- Experimenteller AXIP Gateway
  #
  # Serielle Schnittstelle oder mit einem kissattach verbundene Pipe
  # in diesem Fall:
  device /dev/ttyq0
  #
  # Transferrate einstellen:
  #
  speed 9600
  #
  # loglevel 0 - keine Ausgabe
  # loglevel 1 - nur Konfigurationsinformationen
  # loglevel 2 - Schwerwiegende Ereignisse und Fehler
  # loglevel 3 - Schwerwiegende Ereignisse und Fehler, AX.25-Paketmitschnitt
  # loglevel 4 - Alle Ereignisse
  #
  loglevel 2
  #
  # im Digi-Modus mit einem echten TNC verwendet man param zur Einstellung
  # der TNC-Parameter...
  #
  #param 1 20
  #
  # Definition der Broadcast-Adresse . Jede der aufgefhrten Adressen
  # wird an jede als broadcastfhig markierte Route weitergeleitet
  #
  broadcast QST-0 NODES-0
  #
  # Definition der AX.25-Routen, soviele einstellbar, wie bentigt.
  # Format: Route (Rufzeichen/Wildcard) (Adresse des IP-Zielrechners)
  # ssid of 0 routes all ssid's
  #
  # route   [flags]
  #
  # Gltige Flags:
  #         b - Broadcasts drfen ber diese Route
  #             geschickt werden
  #         d - diese Route ist die standardm voreingestellte
  #   route vk2sut-0 44.136.8.68 b
  route vk5xxx 44.136.188.221 b   route vk2abc 44.1.1.1
  #
  #






  21.3.3.  ax25ipd starten


  Zunchst wird der Datei /etc/ax25/axports ein Eintrag hinzugefgt:



       # /etc/ax25/axports
       #
       axip   VK2KTJ-13      9600    256     AXIP port
       #




  Dann wird kissattach gestartet, um diesen Port zu erzeugen:




       /usr/sbin/kissattach /dev/ptyq0 axip




  Schlielich startet man ax25ipd:



       /usr/sbin/ax25ipd &




  Die AXIP-Verbindung testet man mit:



       call axip vk5xxx






  21.3.4.  Einige Bemerkungen zu Routen und Flags


  Mit dem route-Befehl gibt man an, wo die AX.25-Pakete gekapselt
  hingeschickt werden sollen. Empfngt ax25ipd ein Paket von seinem
  Interface, so vergleicht das Programm das Zielrufzeichen mit jedem
  Rufzeichen in seiner Routing-Tabelle.  Bei einer bereinstimmung wird
  das AX.25-Paket in ein IP-Datagramm gekapselt und an den Rechner mit
  der entsprechend angegebenen IP-Adresse geschickt. Zwei Flags knnen
  jedem route Befehl in der Datei /etc/ax25ipd.conf hinzugefgt
  werden. Es sind folgende:

     b  Pakete mit einer Zieladresse, die einer der mit dem
        Schlsselwort Broadcast definierten Adressen entspricht,
        sollen ber diese Route weitergeleitet werden.


     d  Pakete, die mit keiner festgelegten Route bereinstimmen, sollen
        ber diesen Weg weitergeleitet werden.

  Das Flag b (Broadcast) ist sehr ntzlich, da es ermglicht,
  Informationen, die normalerweise fr alle Stationen gedacht waren,
  auch einer bestimmten Anzahl AXIP-Stationen zukommen zu lassen.
  Normalerweise sind AXIP-Routen Punkt-zu-Punkt-Verbindungen und knnen
  nichts mit Broadcast-Paketen anfangen.




  21.4.  Wie verbindet man NOS und die Linux-Kernel-Netzwerk-Software


  Viele Leute verwenden eine NOS-Version unter Linux, da es alle von
  ihnen gewnschten Eigenschaften und Mglichkeiten bietet.  Die meisten
  von ihnen wrden gern das NOS mit dem Linux-Kernel verbinden, so da
  einige der Linux-Mglichkeiten fr Funk-Nutzer zur Verfgung stnden.



  21.4.1.  NOS und Linux mit einer Pipe verbinden


  Von Brandon S. Allbery, KF8NH, wurden die folgenden Informationen
  beigesteuert, die erklren, wie man das NOS mit dem Linux-Kernel-Code
  mittels einer Linux-Pipe verbindet.

  Da sowohl Linux als auch NOS das SLIP-Protokoll untersttzen, kann man
  beide ber SLIP miteinander verbinden. Man knnte dazu zwei serielle
  Schnittstellen mit einem Loopback-Kabel verwenden, doch das wre
  langsam und kostspielig. Linux stellt wie viele andere UNIX-hnliche
  Betriebssysteme sogenannte Pipes zur Verfgung. Dabei handelt es sich
  um Pseudo-Devices, die fr die Software wie TTY-Devices erscheinen,
  aber in Wirklichkeit eine Schleife (Loopback) auf ein anderes Pipe-
  Device darstellen.



  Um diese Pipes zu verwenden, mu das erste Programm das master-Ende
  und das zweite das slave-Ende der Pipe ffnen.  Siehe dazu auch den
  Absatz Dual-Port-TNCs einrichten unter dem Abschnitt 7.1. KISS.

  Sind beide Enden erffnet, so knnen die beiden Programme miteinander
  Daten austauschen, indem sie Zeichen in die Pipe wie in ein normales
  TTY-Device schreiben.

  Damit das Ganze genutzt werden kann, um den Linux-Kernel und NOS oder
  irgendein anderes Programm miteinander zu verbinden, mu zunchst das
  zu verwendende Pipe-Device aus dem /dev-Verzeichnis ausgewhlt werden.
  Die master-Enden der Pipes tragen die Namen ptyq1 bis ptyqf, die
  slave-Enden ttyq1 bis ttyqf. Zu jedem master gehrt immer ein
  slave, so da man ttyqf als slave verwenden mu, wenn ptyqf als
  master ausgewhlt wurde.

  Wenn man nun ein solches Device-Paar gewhlt hat, sollte man das
  master-Ende mit dem Linux-Kernel und das slave-Ende mit NOS
  verbinden, da der Linux-Kernel als erstes startet und das
  master-Ende immer vor dem slave-Ende geffnet werden mu.

  Ebenso mu der Linux-Kernel eine andere IP-Adresse als NOS haben, so
  da man diesem eine eigene IP-Adresse zuweisen sollte, wenn das nicht
  bereits geschehen ist.

  Die Pipe wird wie ein serielles Device eingerichtet, um eine SLIP-
  Verbindung vom Linux-Kernel aus zu erstellen, kann man etwa folgende
  Befehle verwenden:



       /sbin/slattach -s 38400 -p slip /dev/ptyqf &
       /sbin/ifconfig sl0 broadcast 44.255.255.255 \
                      pointopoint 44.70.248.67 mtu 1536 44.70.4.88
       /sbin/route add 44.70.248.67 sl0
       /sbin/route add -net 44.0.0.0 netmask 255.0.0.0 \
                   gw 44.70.248.67




  In diesem Beispiel hat der Linux-Kernel die IP-Adresse 44.70.4.88 und
  NOS die IP-Adresse 44.70.248.67.

  Der route-Befehl in der letzten Zeile veranlat den Linux-Kernel, alle
  Datagramme (Pakete) fr das AMPRNet (44.0.0.0) ber die SLIP-
  Verbindung, die mit slattach vorher erzeugt wurde, weiterzuleiten.

  Im Normalfall kommen diese Befehle in das Skript /etc/rc.d/rc.inet2
  (Slackware) nach die brige Netzwerkkonfiguration, damit die SLIP-
  Verbindung beim Neustart automatisch wiederhergestellt wird. Man
  beachte, da die Verwendung von CSLIP (compressed SLIP) hier keinen
  Vorteil bringt, da die Verbindung nur virtuell ist und durch das
  Komprimieren ein Performanceverlust eintreten wrde.

  Dadurch wrden die Pakete mit komprimiertem Header langsamer
  bertragen als die unkomprimierten Pakete. Um das NOS-seitige Ende der
  SLIP-Verbindung einzurichten, kann man diese Befehle verwenden:



       # Das Interface kann einen beliebigen Namen tragen; hier wird
       # wegen der Eindeutigkeit linux verwendet
       attach asy ttyqf - slip linux 1024 1024 38400 route \
              addprivate 44.70.4.88 linux




  Damit wird ein SLIP-Port mit Namen linux ber das slave-Ende der
  Pipe zum Linux-Kernel erzeugt. Der Route-Befehl aktiviert diesen dann.

  Wenn NOS gestartet wurde, sollte man jetzt in der Lage sein, ping und
  telnet von NOS nach Linux und umgekehrt ausfhren zu knnen.
  Funktioniert dies nicht, so mu man nochmals berprfen, ob kein
  Fehler, besonders beim Konfigurieren der Adressen, aufgetreten ist und
  die Pipe-Devices ordnungsgem verfgbar sind.



  22.  Wo finde ich Informationen zu ...?


  Da dieser Text einige Erfahrung mit Packet Radio voraussetzt und dies
  nicht immer der Fall ist, hat Terry einige Verweise zu ntzlichen
  Informationsquellen zusammengestellt.

  22.1.  Packet Radio


  Allgemeine Informationen zu Packet Radio findet man hier:


     American Radio Relay League
        http://www.arrl.org/


     Radio Amateur Teleprinter Society
        http://www.rats.org


     Tucson Amateur Packet Radio Group
        http://www.tapr.org/



  22.2.  Protokolldokumentation


  Jonathan Naylor hat eine Reihe von Dokumenten gesammelt, die sich mit
  den im Packet Radio verwendeten Protokollen beschftigen.  Sie wurden
  gepackt und sind hier zu finden:


       ftp.pspt.fi:/pub/ham/linux/ax25/ax25-doc-1.0.tar.gz




  22.3.  Hardware-Dokumentation


  Informationen zur PI2-Karte werden von der Ottawa Packet Radio Group,
  zur Verfgung gestellt. Informationen zur Baycom-Hardware ist auf der
  Baycom-WWW-Seite


       http://www.baycom.de/


  zu finden. Eine Seite mit vielen Links zum Thema Amateurfunk und
  Packet Radio findet man hier:


       http://www.ardos.de/gerd/ham.html





  23.  Diskussionsforen zu Amateurfunk und Linux


  Diskussionen zu Amateurfunk und Linux finden an vielen Stellen statt.
  Sowohl in den Newsgroups der comp.os.linux.*-Hierarchie, als auch in
  der HAM-Liste auf vger.rutgers.edu kann man an ihnen teilnehmen.
  Ebenso gibt es noch die tcp-group-Mailingliste auf ucsd.edu als Heimat
  fr die Diskussionen ber TCP/IP im Amateurfunk und ebenso den Channel
  #linpeople auf IRC. Die Mailingliste fr FPAC erreicht man unter
  fpac@qth.net.

  Um der Mailingliste linux-hams beizutreten, sendet man eine E-Mail an
  Majordomo@vger.rutgers.edu, die den Text
       subscribe linux-hams




  enthlt.

  Die Subject-Zeile wird ignoriert (freilassen).  Diese Mailingliste
  wird hier archiviert:


    http://hes.iki.fi/archive/

    http://zone.oh7rba.ampr.org/archive/linux-hams

  Fr den Anfang sollte man diese Archive verwenden, da viele hufige
  Fragen hier bereits beantwortet werden.

  Der tcp-Gruppe tritt man so bei: E-mail an listserver@ucsd.edu mit der
  Zeile



       subscribe tcp-group




  als Text schicken.

  Beachte: Die TCP/IP-Gruppe ist primr fr Diskussionen ber
  verbesserte Protokolle, wie TCP/IP, im Amateurfunk gedacht.  Linux-
  spezifische Fragen sollten mglichst nicht dort gestellt werden.



  24.  Danksagung


  Folgende Leute haben auf die eine oder andere Weise, wissentlich oder
  unwissentlich, zum Entstehen dieses Textes beigetragen.

  In ungeordneter Reihenfolge sind dies Jonathan Naylor, Thomas Sailer,
  Joerg Reuter, Ron Atkinson, Alan Cox, Craig Small, John Tanner,
  Brandon Allbery - und nicht zuletzt der Autor des englischen
  Originaltextes, Terry Dawson, dem ich an dieser Stelle fr seine
  geduldigen und kompetenten Antworten in der Linux-Ham-Mailingliste
  danken will.

  Bitte Fragen zur deutschen Version nicht an Terry Dawson oder in die
  Linux-Ham-Mailingliste sonder an Gerd Rthig (roetg@medizin.uni-
  leipzig.de) schicken.  Ich wrde mich freuen, wenn ich ber evtl.
  notwendige Vernderungen, Umformulierungen oder Korrekturen in
  Kenntnis gesetzt wrde.  Viel Freude also mit Linux und Packet Radio,
  55 & 73.



  25.  Copyright


  Dieses Dokument ist urheberrechtlich geschtzt. Das Copyright fr die
  englische AX25 HOWTO, auf der dieses Dokument basiert, liegt bei Terry
  Dawson. Das Copyright fr die deutsche Version liegt bei Gerd Rthig
  und Marco Budde.

  Das Dokument darf gem der GNU General Public License verbreitet
  werden. Insbesondere bedeutet dieses, da der Text sowohl ber
  elektronische wie auch physikalische Medien ohne die Zahlung von
  Lizenzgebhren verbreitet werden darf, solange dieser Copyright
  Hinweis nicht entfernt wird. Eine kommerzielle Verbreitung ist erlaubt
  und ausdrcklich erwnscht. Bei einer Publikation in Papierform ist
  das Deutsche Linux HOWTO Projekt hierber zu informieren.








  26.  ANHANG: Einige aus dem Englischen bernommene Fachbegriffe
  und deren Erklrung



     Broadcast
        Aussendungen, die nicht an eine bestimmte Adresse, sondern an
        alle gerichtet sind und daher unprotokolliert
        gesendet werden (Beispiel: Aussendung der Routing- Informationen
        durch NetROM, auch Baken knnen in diesem Sinne als Broadcast
        betrachtet werden)


     Device
        hier im Sinne eines sogenannten virtuellen Gerts gebraucht,
        d.h., ein Treiber (Driver) stellt ein Software-Interface zur
        Verfgung, das hnlich wie eine Gertedatei angesprochen werden
        kann. Auf diese Weise wird die Unterscheidung zwischen den
        Protokollen realisiert - jedem dieser Devices ist genau ein
        bertragungsprotokoll zugeordnet.  Sie knnen auf weiteren
        Devices aufsetzen, also deren Geladensein voraussetzen.


     Digipeater
        Station, die die eigenen Pakete, so wie sie sie empfngt,
        wiederholt (DIgital rePEATER), es erfolgt kein direkter
        Verbindungsaufbau zu diesem Rechner, sondern man baut einen Link
        "ber" (via) ihn auf


     Encapsulation
        svw. Kapselung (hier auch so bersetzt), bezeichnet einen Weg
        der bertragung ber mit TCP/IP arbeitende Netzwerke, indem
        AX.25-Pakete in spezielle IP-Datagramme hineingeschrieben
        werden. Die Protokoll-Informationen des IP wirken dann wie eine
        Kapsel um das AX.25-Frame herum, die dessen unbeschadeten
        Transport und Identifikation ermglicht


     Heard, MHeard
        Ausgabe, welche Stationen auf einem bestimmten Kanal gehrt
        (aufgenommen) werden konnten


     Gateway
        hier: mit mehreren Netzen gleichzeitig verbundener Rechner, an
        den alle Pakete gehen, die innerhalb eines Netzes nicht
        zugestellt werden knnen - diese Pakete werden dann in eines der
        anderen erreichbaren Netze weitergeleitet


     Nodes
        meist TNCs mit spezieller Node-Software ohne daran
        angeschlossenen Host-Rechner, aber auch PCs mit entsprechender
        Software (z.B. node oder BPQ), zu denen man im Unterschied zu
        den Digipeatern eine direkte Verbindung aufbaut und ihnen dann
        den Befehl zum Weiterverbinden gibt


     Obsolescence
        (svw. Alterung) NetROM-Begriff, der die Aktualitt einer
        Verbindung angibt, Zeitspanne, die seit der letzten gehrten
        Aktivitt der betreffenden Station vergangen ist, zur
        Beurteilung der Qualitt einer Funkverbindung hilfreich


     Routing
        Weiterleiten von Paketen/Daten auf einem vorgegebenen Weg/an
        einen in der Routing-Tabelle (routing table) festgelegten
        Rechner, evtl. auf einem dort definierten Weg (Routing-Path).


     Switching
        svw. Umschalten: Aussenden/Weiterleiten von Daten ber einen
        anderen Kanal/Port, netzwerktechnisch Schalten einer Punkt-zu-
        Punkt-Verbindung zwischen Sender und Empfnger fr die Zeitdauer
        der bertragung des entsprechenden Paketes






  Ein Wort zu Kernel 2.2 und dessen derzeitigem Entwicklungsstand
  Aktuelle Mitteilung: Das AX.25-Subsystem ist im Kernel 2.2.x noch
  unvollstndig. Wenn man beispielsweise ein AX.25-Netzwerk-Device bei
  einem noch laufenden Connect herunterfhrt, bekommt man einen
  Systemabsturz (Oops). Um das System wieder nutzbar zu machen, ist
  anschlieend ein Neustart fllig.

  Ich wurde gefragt, weshalb der aktuelle Kernel 2.2 momentan in diesem
  HOWTO keine ausfhrlichere Erwhnung findet. Meine persnliche Meinung
  dazu gibt folgendes Statement wieder:

  Zum derzeitigen Zeitpunkt ist ein Upgrade auf den Kernel 2.2 keine
  gute Wahl. Der Kernel verwendet in vielen Bereichen eine andere
  Treiberarchitektur, was zur Folge hat, da bestimmte Hardware neu
  eingerichtet werden mu. Was auf die Hardware-Treiber zutrifft, ist
  auch beim Kernel-AX.25 der Fall - eine vllige Neueinrichtung wird
  fllig.

  Da die Systemschnittstelle auch im AX.25-Bereich abgewandelt wurde,
  werden ltere Binrversionen der AX.25-Programme nicht mehr
  vollstndig funktionieren. Es kann nur geraten werden, abzuwarten, bis
  das neue AX.25-Subsystem und die Programmierschnittstelle
  fertiggestellt ist.

  Zu deren Neubersetzung siehe Bemerkung am Ende dieses Textes.  Fakt
  ist weiterhin, da der Kernel 2.2 hhere Speicheranforderungen als die
  2.0.x-Reihe stellt. Da aber als PR-Rechner meistens ltere und weniger
  gut ausgestattete Systeme zum Einsatz kommen, ist ein Upgrade auch aus
  diesem Grunde nicht ratsam.

  Hinzu kommt noch die Tatsache, da laut Alan Cox auch die Kernel der
  2.0.x-Reihe weiterentwickelt werden sollen. Man kann sich also die
  Upgrade-Orgie noch etwas aufsparen (neben den neuen Kernelsourcen wird
  die Aktualisierung einiger anderer Programmpakete fllig) und
  abwarten, bis es beispielsweise Version 2.2.30 gibt.  Nicht ohne Grund
  beobachtet man derzeit eine sehr rasche Folge neuer Versionen in der
  2.2.x-Reihe.































































