Linux AX25 HOWTO
 Terry Dawson ([email protected]) und
 Gerd R�thig ([email protected])
 v1.6-2, 8. Juli 1999

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


 1.  Einf�hrung


 Dieses HOWTO beschreibt, wie man die AX.25-, NetROM- und ROSE-
 Unterst�tzung unter Linux installiert und einrichtet.  Einige typische
 Konfigurationen sind beispielhaft aufgef�hrt und k�nnen als
 Ausgangsbasis dienen.

 Die Implementation der Amateurfunk-Protokolle unter Linux ist sehr
 flexibel.  F�r Neulinge wird die Konfiguration reichlich kompliziert
 und verwirrend erscheinen. Es braucht ein wenig Zeit, bis man
 versteht, wie alles zusammenpa�t. 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 Einf�hrung des Linux-Kernels 2.2.x auch das
 AX.25-Subsystem tiefgreifenden Ver�nderungen unterworfen. Dieses HOWTO
 wird darauf in kommenden Fassungen ausf�hrlicher eingehen, wenn erste
 Erfahrungen mit der neuen Software vorliegen.

 Die im folgenden beschriebenen Konfigurationshinweise und Beispiele
 beziehen sich daher, wenn nicht ausdr�cklich 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 ([email protected]) 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 w�rmstens
 empfohlen, diese zu lesen, da sie bei eigenen Bem�hungen helfen und
 Wege zu weiteren m�glichen 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 Tr�ger f�r 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 vollst�ndigen Netzwerkprotokolls und nutzt AX.25 auf
 seiner niedrigsten Ebene als Protokoll zum Datenaustausch. Es stellt
 eine Netzwerkebene zur Verf�gung, die eine angepa�te Form des AX.25
 darstellt. Das NetROM-Protokoll bietet dynamisches Routing und Aliases
 f�r 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 f�r das Zusammenwirken mit AX.25 als Datalink
 entworfen und stellt ebenfalls eine Netzwerk-Ebene zur Verf�gung.

 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 fr�he Kernel-Unterst�tzung f�r AX.25.
 Jonathan Naylor ([email protected]) entwickelte den Code weiter,
 f�gte NetROM- und ROSE-Unterst�tzung hinzu und ist jetzt der
 Entwickler des AX.25-Codes f�r den Kernel.

 Die Unterst�tzung f�r DAMA wurde von Joerg (DL1BKE,
 [email protected]) entwickelt.  Thomas Sailer
 ([email protected]) f�gte die Unterst�tzung f�r BayCom- und
 SoundModem hinzu.  Die AX-25-Utilities werden von Craig Small
 ([email protected]) betreut.  Der Linux-Code unterst�tzt 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 unterst�tzt den SoundBlaster
 und die Soundkarten auf der Basis des Crystal-Chipsatzes.  Die
 Anwenderprogramme enthalten ein einfaches PMS (Personal Message
 System), eine M�glichkeit, 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- Funktionalit�t �bernimmt,
 vorhanden.


 2.1.  Wie alles zusammenpa�t


 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 verh�lt, die Konfiguration ist jedoch
 vollkommen anders.   Um beim Verst�ndnis der Einrichtungsweise zu
 helfen, soll dieser Abschnitt einige strukturelle Eigenschaften
 beschreiben und darstellen, wie sie sich in die Systemstruktur von
 Linux einf�gen.

 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 f�r die Adre�familie jedes Protokolls, wie
 sie in den darauf aufsetzenden Programmen verwendet werden. Wichtig
 ist also die richtige Konfiguration der AX.25-Ger�te, 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 Ger�tetreibern untereinander verdeutlichen. In
 dieser Darstellung ist jeder Teil von dem, was darunter steht,
 abh�ngig, man mu� also von �unten� (Hardware) nach �oben� (Programme)
 alles der Reihe nach einrichten.  Beispiel: Will man das Programm
 �call� starten, so mu� man zun�chst die Hardware einrichten, dann
 sicherstellen, da� der Kernel den passenden Treiber geladen hat, das
 zugeh�rige Netzwerk-Device erzeugt wurde und das zur Nutzung durch
 �call� gew�nschte Protokoll im Kernel enthalten ist. Dieser Text wird
 sich im gro�en 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 f�r
 AX.25, NetROM, Z8530 SCC, PI-Karte und PacketTwin standardm��ig 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 erh�lt man, indem man den Landes-Suffix einf�gt; aus
 ftp.kernel.org wird f�r Deutschland demnach ftp.de.kernel.org (f�r
 Nutzer kommerzieller Onlinedienste ftp2.de.kernel.org).  Dort findet
 man die aktuellen Kernel-Archive unter /pub/linux/kernel/v2.2/.



 3.1.2.  Programme f�r die Netzwerkkonfiguration



 3.1.2.1.  Die Net-Tools


 Die aktuelle Version der Standard-Linux-Netzwerk-Tools unterst�tzt
 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) f�r den
 Kernel 2.0.37 kann hier bezogen werden:


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


 Wer eine aktuelle Distribution einsetzt, sollte vor dem Download
 pr�fen, ob diese Pakete nicht bereits installiert bzw. auf der
 Installations-CD enthalten sind. Wer auf seinem System eine Nettools-
 Version gr��er 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).

 F�r 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 f�r 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.  Bin�re 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 f�r diejenigen geeignet ist, die weder
 BayCom- noch SoundModem verwenden m�chten.

 Neue Version 0.0.1 F�r Kernel 2.2.10 gibt es eine komplett
 �berarbeitete Fassung der AX.25-Utilities und der ben�tigten
 Bibliotheken:


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


 Da sich sowohl Software als auch Bibliotheken in einer Alpha-Version
 befinden und in n�chster 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 vollst�ndig ben�tigt 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
 l��t.  Viele Dateien sind gespiegelt, d.h, sie befinden sich auf
 Servern, die schneller zu erreichen sind als die Originalserver.  Am
 leichtesten findet  man derartige M�glichkeiten mit FTPSearch.



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


 Um die AX.25-Unterst�tzung erfolgreich nutzen zu k�nnen, mu� man erst
 einen passenden Kernel und anschlie�end (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
 l�schen 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 l�scht:



      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. Hierf�r wird ein installiertes Tcl/Tk in einer
 aktuellen Version ben�tigt.

 Etwas archaisch, aber bew�hrt und stabil:



      make config




 Im folgenden soll die Vorgehensweise bei make menuconfig beschrieben
 werden. Selbstverst�ndlich lassen sich die beiden anderen
 M�glichkeiten 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 n�mlich auch als Module einrichten, um sie
 nur bei Bedarf nachzuladen und somit Speicher zu sparen. Der
 Einfachheit halber wird hier auf diese M�glichkeit nicht explizit
 eingegangen. Wer Module erstellen will, mu� selbst die entsprechenden
 Ver�nderungen vornehmen. Weitere Informationen findet man im Module
 HOWTO, das zur Zeit leider nicht mehr betreut wird.


 Folgende Optionen sind f�r 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)


 F�r Kernel 2.2.x zus�tzlich:



      [*] 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, m�ssen eingeschaltet (mit
 �y� beantwortet) werden, die mit einem [?] markierten h�ngen von der
 zu verwendenden Hardware ab und welche weiteren Optionen einbezogen
 werden sollen.  Einiges davon wird sp�ter noch genauer beschrieben, so
 da� es sinnvoll ist, bei Unklarheiten erst mal weiterzulesen und
 anschlie�end wieder zu diesem Abschnitt zur�ckzukehren.  Nachdem die
 Konfiguration vervollst�ndigt wurde, sollte es m�glich 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 erw�hnten 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 n�chsten 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




 aufr�umen. 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 h�ngt von passenden Eintr�gen in
 der Datei System.map ab. Bekommt man beim Laden von Modulen
 Fehlermeldungen bez�glich �unresolved symbols�, so gibt es daf�r 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 selbstverst�ndlich ebenfalls nach der Erstellung
 eines neuen Kernels f�llig. Anschlie�end aktualisiert man die
 Abh�ngigkeiten der einzelnen Module untereinander mit:



      depmod -a




 Weiterhin ist es notwendig, einige Eintr�ge in der Datei
 /etc/conf.modules hinzuzuf�gen, damit die Module im Bedarfsfall durch
 den kerneld automatisch geladen werden k�nnen. Der kerneld mu� daf�r
 gestartet sein, ein



      ps fax | grep kerneld




 sollte das auch anzeigen.

 Hier also ein Beispiel:












 #/etc/conf.modules
 #
 # Konfigurationsdatei f�r den kerneld
 #
 # WICHTIG: Alle genannten Treiber m�ssen als gleichnamige
 # Module in /lib/modules/{Kernelversion} vorliegen!
 #
 alias net-pf3           ax25
 #
 # Suche nach einem Treiber unterdr�cken:
 # (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
 #
 # F�r jedes Device mu� einzeln ein Alias-Eintrag erfolgen:
 #
 alias bc0               baycom
 alias bc1               baycom

 alias nr0               netrom
 alias pi0a              pi2
 alias pt0a              pt
 #
 # F�r die n�chste Zeile den jeweils passenden
 # Treiber ausw�hlen:
 alias scc0              optoscc
 #
 alias sm0               soundmodem
 alias tun10             newtunnel
 #
 # Wichtig f�r 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 Eintr�ge werden nur f�r Kernel
 # ab 2.2.0 ben�tigt!
 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 sp�ter noch weitere Erkl�rungen.




 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 w�nscht. Damit reduzieren sich die Speicheranforderungen des
       Kernels f�r 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
       hinzugef�gt. 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 Ver�nderungen an
 der Konfiguration der Netzwerk-Devices und das Hinzuf�gen 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 ([email protected]) betreut, Bernd
 Eckenfels ([email protected]) 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 m�ssen 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 k�nnen 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-M�glichkeiten nutzen will, ben�tigt 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
 m�ssen 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 ben�tigen an Stelle des ipfwadm
 das Programm ipchains. Wenn die Datei /proc/net/ip_fwchains existiert,
 dann ist der Kernel mit ipchains funktionsf�hig.  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
 nat�rlich 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, m�ssen 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 m�ssen 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 f�r die eigene Konfiguration dienen k�nnen.
 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 �berpr�fen, 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 erh�lt, kann die Bibliotheken mit



      make installib




 korrekt installieren.



 4.3.1.  Hinweis f�r 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 erw�hnten 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 f�r 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 ben�tigt, 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 M�glichkeit stellt das auf der Homepage von Patrick
 Ouellette ([email protected]) verf�gbare 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
 zusammengefa�t hat.  Dieser Patch sollte mit dem Standardarchiv
 ax25-utils-2.1.42a.tar.gz funktionieren. Patrick weist jedoch
 ausdr�cklich darauf hin, da� es sich hierbei um Testversionen handelt.
 Da zun�chst nur Wert auf Kompilierbarkeit gelegt wurde, sind manche
 Programme evtl. nicht funktionsf�hig.


 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 Gr�nden ist das unter Linux nicht
 m�glich.  In der Praxis ist das nicht so ein gro�es Problem, wie es
 zun�chst scheint.  Das bedeutet, da� es einige Dinge gibt, die bei der
 Konfiguration beachtet werden m�ssen:


 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 m�ssen,
    wenn sie den Node rufen wollen. Mehr dazu sp�ter.

 4. ROSE nutzt standardm��ig 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, k�nnen zum Mith�ren jedes
    Rufzeichen verwenden, das sie wollen, und diese k�nnen auch f�r
    verschiedene Ports genutzt werden.

 6. Wenn man das Routing sorgf�ltig 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 erw�hnt werden.




























 +--------------+--------------+----------+----------------------------------+
 |   Linux      |   TAPR TNC   |   TNC2   |   Beschreibung                   |
 +--------------+--------------+----------+----------------------------------+
 |   T1         |   FRACK      |   F      | (Frame Acknowledgement Timer)    |
 |              |              |          | Gibt an, wie lange gewartet wird,|
 |              |              |          | bevor ein unbest�tigtes Paket    |
 |              |              |          | noch mal ausgesendet wird        |
 +--------------+--------------+----------+----------------------------------+
 |   T2         |   RESPTIME   |   @T2    | Minimale Zeit, die auf ein       |
 |              |              |          | weiteres Paket gewartet wird,    |
 |              |              |          | bevor Empfangsbest�tigung        |
 |              |              |          | gesendet wird                    |
 +--------------+--------------+----------+----------------------------------+
 |   T3         |   CHECK      |   @T3    | Zeit, die gewartet wird, bevor   |
 |              |              |          | der Link �berpr�ft 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 unbest�tigter    |
 |              |              |          | 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 selbsterkl�renden Namen finden, die
 verschiedene Parameter der Netzwerkkonfiguration beschreiben.  Jedes
 der Verzeichnisse unter /proc/sys/net/ax25 repr�sentiert einen
 AX.25-Port, wobei dessen Name vom Portnamen abh�ngt.  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-Paketl�nge         1 <=L�nge<= 512   256
 -----------------------------------------------------------------------------




 In dieser Tabelle sind die Werte f�r T1, T2 und T3 in Sekunden, f�r
 den idle-Timer (Link-Timeout) in Minuten angegeben, es mu� aber
 beachtet werden, da� die Werte in dem sysctl-Interface in internen
 Einheiten gez�hlt werden. Diese entsprechen der Zeit in Sekunden * 10,
 so da� eine Schrittweite von 1/10 Sekunde m�glich 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 gew�nschten Wert in die
 entsprechende Datei schreiben, um zum Beispiel die Maxframe-Anzahl f�r
 ROSE zu pr�fen 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 f�r die
 verschiedenen AX.25-Ports aus einer speziellen Konfigurationsdatei.
 F�r reine AX.25-Ports ist dies die Datei /etc/ax25/axports. Sie mu�
 f�r 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 empf�ngt.  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 Ger�tetreiber.  Der Linux-AX.25-Code enth�lt einige
 Ger�tetreiber. Der gebr�uchlichste 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 f�r 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 h�ufigste 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 h�ngt an /dev/ttyS0 (COM1) und der
 vorgesehene Port in /etc/ax25/axports hei�t 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 zugeh�rige 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. Anschlie�end 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 pr�fen, 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-Unterst�tzung (siehe Abschnitt
 ``Den Kernel kompilieren'') ebenfalls fest einkompiliert wurde.
 Andernfalls mu� er als Modul kompiliert werden, oder die Erstellung
 des neuen Kernels w�rde 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 anschlie�ende Konfiguration l��t ihn
 dann als mehrere einzelne seriell angeschlossene TNCs erscheinen.

 Das Ganze mu� vor der AX.25-Konfiguration durchgef�hrt werden.  Die
 Ger�te, die dann einzurichten sind, sind Pseudo-TTY-Interfaces,
 (/dev/ttyq*) und nicht die eigentliche serielle Schnittstelle. Mit
 Pseudo-TTY wird eine Art R�hre (Pipe) erzeugt, durch die Programme,
 die mit TTY-Ger�ten Daten austauschen, mit anderen Programmen, die
 ebenfalls f�r Datenaustausch mit TTY-Ger�ten entwickelt wurden,
 kommunizieren k�nnen.

 Jede dieser R�hren hat ein �Master�- und ein �Slave�-Ende.  Die
 �Master�-Enden hei�en /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
 hei�t, man verwendet kissattach wie oben beschrieben, f�r 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 Pr�fsumme f�r jedes KISS-Paket ein.
       Die meisten KISS-Implementationen, au�er dem G8BPG KISS-ROM,
       unterst�tzen 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 unterst�tzt.

    -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





 F�r erste Tests sollte der Treiber mit �m� als Modul kompiliert
 werden. Thomas Sailer ([email protected]) entwickelte trotz des
 weitverbreiteten Glaubens, es w�rde nicht sonderlich gut
 funktionieren, eine BayCom-Unterst�tzung f�r Linux.

 Sein Treiber unterst�tzt die seriellen Ser12, die parallelen Par96 und
 die verbesserten PicPar-Modems. Informationen �ber diese Modems erh�lt
 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 f�r das
 Baycom-Modul und die von ihm erzeugten Devices ge�ndert. Es gibt hier
 f�r Half- und Fullduplex getrennte Treiber:















 Modul-Name           Funktion                                  Device
 ------------------------------------------------------------------------------
 baycom_ser_fdx       serielles BayCom-Modem, Fullduplex und    bcsf0..bcsf3
                      Halfduplex, umschaltbar,
                      w�hlbare 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





 Ausf�hrlichere Informationen zu den neuen Treibern k�nnen in der Datei
 /usr/src/linux/Documentation/networking/baycom.txt nachgelesen werden.

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

 Als Beispiel eine einfache Konfiguration. Zun�chst wird der normale
 serielle Treiber f�r die erste Schnittstelle (COM1) abgeschaltet, dann
 der BayCom-Treiber f�r 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 k�nnen 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 zus�tzliche Schnittstellenkarte mit 8250 oder 16450 UART
 vorsehen will, der sollte vor die erste setserial-Zeile des Beispiels
 einf�gen:



      setserial /dev/ttyS0 uart 16550A skip_test




 Weiterhin st�rt der Linux-Treiber f�r 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
 nachpr�fen kann. Der Wert hinter dbg2 sollte etwa 2000-3000 sein und
 sich st�ndig �ndern.  Die Probleme mit dem Schnittstellenbaustein sind
 ausschlie�lich auf Schwierigkeiten des Linux-BayCom-Treibers bei der
 Hardwareinitialisierung zur�ckzuf�hren und deshalb von der
 eingesetzten Modemschaltung weitestgehend unabh�ngig. F�r 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-Unterst�tzung des Kernels f�r 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. Zun�chst gibt man dem BayCom-
 Device ein Rufzeichen:



      /sbin/ifconfig bc0 hw ax25 VK2KTJ up




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




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




 Als n�chstes wird in der Datei /etc/ax25/axports ein Eintrag f�r
 BayCom hinzugef�gt. Die Verbindung des Eintrags zum entsprechenden
 Netzwerk-Device geschieht �ber das eingestellte Rufzeichen.

 Verwendet ein Programm den Eintrag mit dem f�r BayCom vergebenen
 Rufzeichen, so wird das BayCom-Device angesprochen.  Das neue
 AX.25-Device kann nun ganz normal verwendet werden, es l��t sich  f�r
 TCP/IP einrichten, man kann es dem ax25d hinzuf�gen und NetROM oder
 ROSE dar�ber 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 ([email protected]) entwickelte einen neuen Treiber
 f�r den Kernel, mit dem man die Soundkarte als Modem nutzen kann.
 Schlie�t das Funkger�t 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 unterst�tzt. 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 unterst�tzt
 werden, sollten unter DOS initialisiert werden. Dazu startet man ein
 Minimal-DOS, in dessen Konfigurationsdateien lediglich die
 Soundkartentreiber aufgerufen werden, und l�dt anschlie�end Linux via
 LOADLIN.  PCI-Soundkarten (z.B. SoundBlaster PCI64) werden derzeit
 noch nicht unterst�tzt.

 Die Soundkarten ben�tigen 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 M�glichkeiten f�r die PTT-Schaltung: die Soundausgabe
 von der Karte auswerten oder die Ausgabe von der seriellen, parallelen
 oder MIDI- Schnittstelle zu nutzen. Die Webseite bietet f�r jede
 Option Beispielschaltungen.

 Wer die �2400 baud� Betriebsarten nutzen will, beachte eine kleine
 Besonderheit: Urspr�nglich kam man auf 2400 baud, indem man den
 herk�mmlichen 1200 baud-Modems auf der Basis des TCM3105 (siehe dazu
 auch http://www.ardos.de/gerd/tcm3105.html) einen Quarz mit h�herer
 Frequenz verpa�te. Zwei Quarzfrequenzen sind �blich: 7.3728 und 8.0
 MHz. Bevor man sich f�r eine davon entscheidet, sollte man in
 Erfahrung bringen, womit die Gegenstationen arbeiten, da die Wahl der
 falschen Frequenz die Verbindung stark beeintr�chtigen bzw.  unm�glich
 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 m�chte, d�rfen sowohl der Linux-Sound-Treiber als auch der
 Treiber f�r die parallele Schnittstelle nicht geladen sein. Nat�rlich
 lassen sich all diese als Module kompilieren, so da� sie mit insmod
 und rmmod nach Belieben geladen und entfernt werden k�nnen.

 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 sp�ter)






 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 f�r 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 f�r 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 k�nnen mit sethdlc
 vorgenommen werden, ebenso k�nnen die erforderlichen Parameter dem
 SoundModem-Modul auf der insmod-Kommandozeile mitgegeben werden.

 Als Beispiel eine einfache Konfiguration f�r 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: Zun�chst mu� auch hier das Modul
 geladen



      insmod hdlcdrv
      insmod soundmodem




 oder die SoundModem-Unterst�tzung 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. erw�hnte 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 f�r die Funktion jedes Funkmodems sehr wichtig, da� die
 Audiopegel korrekt eingestellt sind. Dies gilt ebenso f�r 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� f�r das SoundModem-Device sm0 zu starten:



      smdiag -i sm0 -e




 smmixer wird f�r sm0 so gestartet:




      smmixer -i sm0




 Beide Programme zeigen die aktuellen Einstellungen f�r die Pegel an
 den Aus- und Eing�ngen der Karte an. Um diese zu ver�ndern, gibt es
 zwei Wege:


 1. (bei von Linux unterst�tzten 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.  G�nstig sind kommandozeilenorien�
 tierte Programme wie cmix, da sie in das Startskript eingebunden wer�
 den k�nnen und so immer die gleichen Einstellungen gegeben sind.
 2. bei nicht von Linux unterst�tzten Soundkarten, die �ber DOS-Treiber
    initialisiert werden m�ssen, sollte man das der Karte meist
    beiliegende Mixer-Utility f�r DOS nutzen.  Dies trifft auf einen
    Gro�teil der Onboard-Soundkarten zu.  Siehe dazu auch das Sound
    HOWTO.



 6.1.3.4.  Die AX.25-Unterst�tzung des Kernels             f�r 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.
 Zun�chst gibt man dem SoundModem-Device ein Rufzeichen:



      /sbin/ifconfig sm0 hw ax25 VK2KTJ up




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




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




 Als n�chstes wird in der Datei /etc/ax25/axports ein Eintrag f�r
 SoundModem hinzugef�gt. Die Verbindung des Eintrags zum entsprechenden
 Netzwerk-Device geschieht �ber das eingestellte Rufzeichen. Verwendet
 ein Programm den Eintrag mit dem f�r SoundModem vergebenen Rufzeichen,
 so wird das SoundModem-Device angesprochen.

 Das neue AX.25-Device kann nun ganz normal verwendet werden, es l��t
 sich  f�r TCP/IP einrichten, man kann es dem ax25d hinzuf�gen und
 NetROM oder ROSE dar�ber 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
 �berpr�fen.




 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, l��t 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 ([email protected]) 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, l��t 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 ([email protected])
 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 ([email protected]) entwickelte die
 allgemeine Unterst�tzung f�r SCC-Karten. Sein Treiber ist f�r eine
 Vielzahl Karten konfigurierbar und stellt wie die anderen Netzwerk-
 Device zur Verf�gung, so da� man die SCC-Karte wie eine Netzwerkkarte
 ansprechen kann.



 6.1.6.1.  Die Konfigurations-Tools finden und installieren


 W�hrend 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 f�r 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 l��t 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 f�r 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 f�r die verwendete Karte einrichten


 Der Z8530-SCC-Treiber ist so flexibel entwickelt worden, da� er
 m�glichst viele verschiedene SCC-Karten unterst�tzt. Der Preis daf�r
 ist eine etwas kompliziertere Konfiguration.  In dem Treiber-Archiv
 findet sich eine ausf�hrliche 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 gro�e Abschnitte
 gegliedert, Hardware-Parameter und Kanal-Konfiguration. Nachdem diese
 Datei entsprechend editiert wurde, mu� nur der Aufruf sccinit in das
 Skript, welches die Netzwerkkonfiguration w�hrend des Systemstarts
 vornimmt, eingetragen werden.  Der Treiber l��t sich erst nach einem
 Aufruf von sccinit nutzen.



 6.1.6.2.1.  Konfiguration der Hardware-Parameter


 Der erste Abschnitt ist in Abs�tze unterteilt, von denen jeder einen
 Z8530-Chip repr�sentiert. Jeder Absatz besteht aus einer Liste mit
 Schl�sselw�rtern und den zugeordneten Werten.  Standardm��ig 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 Schl�sselworte 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 f�r den SCC-Kanal �A�
       verwendet. Argument ist eine Hexadezimalzahl, zum Beispiel
       0x300.


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


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


    ctrl_b
       Wird zur Angabe der Adresse des Steuerports f�r 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 Schl�sselwort 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 Unterst�tzung f�r 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) f�r die PA0HZP-Karten an. Es gibt nur ein Vector-
       Latch f�r alle Chips. Voreinstellung: 0.


    special
       Optional, gibt die Adresse eines speziellen Funktionsregisters
       f�r 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
 f�r die Konfigurationsdatei des Z8530-Treibers nutzbare Form bringen.
 gencfg wird genau so wie f�r den PE1CHL-Treiber von NOS aufgerufen:
 Zum Beispiel erstellt




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


 eine Grundkonfiguration f�r die OptoSCC-Karte.




 6.1.6.3.  Kanal-Konfiguration


 Im Abschnitt Kanal-Konfiguration werden alle anderen f�r den
 jeweiligen Port relevanten Parameter eingestellt. Auch dieser
 Abschnitt ist in einzelne Abs�tze unterteilt. Jeder dieser Abs�tze
 steht f�r einen logischen Port, da jede SCC-Karte zwei Ports
 bereitstellt, gibt es f�r jeden Hardware-Absatz zwei solcher Abs�tze.
 Die dazu notwendigen Schl�sselworte und Werte m�ssen 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 Schl�sselw�rter und Werte gibt es hier:


    device
       Mu� in der ersten Zeile einer Port-Definition stehen und gibt
       den Namen der speziellen Ger�tedatei 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. M�gliche 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 Gr��e der Sende-/Empfangspuffer vor. Der Wert wird in
       Bytes angegeben und stellt die Gesamtl�nge eines Paketes dar, es
       mu� also die L�nge der AX.25-Header zum Datenfeld hinzugerechnet
       werden. Dieses Schl�sselwort ist optional, die Voreinstellung
       384.


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


    persist
       Der Wert f�r 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 f�r
       Vollduplex oder 0 f�r 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 f�r SoftDCD (Software-Rauschsperre), ganzzahlig.


    slip
       Das Slip-Flag bei KISS, ganzzahlig.


 6.1.6.4.  Den Treiber verwenden


 Man verwendet die scc*-Ger�te 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
 ver�ndern. Die Syntax ist an den NOS-Befehl param angelehnt, zum
 Setzen des TXTail-Wertes auf 100 ms w�rde 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 Kompatibilit�t 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 geh�rt zu eth0, bpq1
 zu eth1 usw..  Die Konfiguration ist sehr offen.

 Zun�chst mu� das Ethernet-Device eingerichtet sein. Das hei�t, der
 Kernel mu� mit Ethernet-Unterst�tzung kompiliert sein und diese mu�
 auch funktionieren. Im Ethernet HOWTO findet man dazu weiterf�hrende
 Informationen.

 Um die BPQ-Unterst�tzung 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 f�r diesem Port gelten soll.




 6.1.8.  BPQ-Node mit Linux-AX.25-Unterst�tzung 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 f�r den
 BPQ-ODI-Treiber wie folgt ge�ndert 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  ; f�r BPQ erforderlich - kann die PID
                                    ; ver�ndern
      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  Paketl�nge   Maxframe   Beschreibung




 wobei gilt:


    Portname
       Bezeichner f�r den Port


    Rufzeichen
       Rufzeichen, welches dem Port zugeordnet werden soll


    Baudrate
       Baudrate zum TNC


    Paketl�nge
       L�nge des Datenfeldes eines Paketes in Bytes


    Maxframe
       maximale Anzahl unbest�tigter 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 Eintr�ge in der Datei sind mit den Netzwerk-Devices �ber
 das Rufzeichen/SSID verbunden.  Das ist nicht zuletzt ein Grund daf�r,
 da� jeder Port ein eigenes Rufzeichen/SSID verlangt.



 6.3.  Das AX.25-Routing einrichten


 Es ist sowohl f�r normale AX.25- als auch f�r IP-Verbindungen
 sinnvoll, voreingestellte Digipeaterpfade f�r 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 f�r VK2XLZ via VK2SUT
 auf den AX.25-Port mit dem Namen radio.  Weiterf�hrende Informationen
 sind in der Hilfeseite zu axparms zu finden.




 7.  Ein AX.25-Interface f�r TCP/IP einrichten


 Es ist sehr einfach, einen AX.25-Port f�r TCP/IP einzurichten. F�r
 KISS-Interfaces gibt es zwei M�glichkeiten, eine IP-Adresse
 einzurichten. Die konventionellere Methode mit dem Befehl ifconfig
 funktioniert mit allen Interface-Typen.

 F�r 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 Gr��e des ausgesendeten
 Datenpakets) von 512 Bytes erzeugt. Wenn notwendig, k�nnen mit dem
 ifconfig-Befehl weitere Parameter eingestellt werden.

 Die anderen Interfaces k�nnen wie die Netzwerkkarte mit ifconfig auf
 IP-Adresse und Netzmaske eingestellt werden, ebenso wird die Route wie
 f�r eine Netzwerkkarte festgesetzt (man route). Das folgende Beispiel
 ist f�r 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 aufgef�hrten Befehle sind typisch f�r diese Konfigurationen,
 vielen werden sie von NOS oder anderer TCP/IP-Software her bekannt
 sein.  Beachten mu� man, da� die Default-Route m�glicherweise 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 veranla�t, 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, m�ssen zwei
 Dateien angepa�t werden. Die eine Datei beschreibt die NetROM-
 Interfaces, und die andere, auf welche AX.25-Ports NetROM aufsetzt.

 Man kann mehrere NetROM-Ports einrichten, f�r jeden ist die
 Vorgehensweise die gleiche.


 8.1.  Die Datei /etc/ax25/nrports


 Die erste der beiden Dateien hei�t /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   Paketl�nge  Beschreibung






    Name
       Der Bezeichner f�r den Port.


    Rufzeichen
       Das Rufzeichen, welches f�r den NetROM-Verkehr verwendet wird.
       Dies ist nicht das Rufzeichen, das andere Stationen als Nodecall
       verwenden k�nnen. Zu dem Node-Programm sp�ter. Es sollte nicht
       noch einmal in /etc/ax25/axports oder /etc/ax25/nrports
       auftauchen.


    Alias
       Der NetROM-Alias f�r diesen Port.


    Paketl�nge
       Die maximale Gr��e der NetROM-Pakete.


    Beschreibung
       Eine kurze Beschreibung f�r den Port.

 Ein Beispiel s�he 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
 k�nnen viele Eintr�ge enthalten sein.  Normalerweise gibt es f�r 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 durchgef�hrt wird und alle empfangenen NetROM-
       Broadcasts auf diesem Port ignoriert werden.


    min_obs
       Minimalwert f�r die Obsolescence.


    def_qual
       Voreingestellte Qualit�t f�r den Port.


    worst_qual
       Wert f�r die schlechteste Verbindungsqualit�t, 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 s�he so aus: radio   1    200    100    1





 8.3.  Das Netzwerk-Device f�r NetROM erstellen


 Sind die beiden Konfigurationsdateien vervollst�ndigt, 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 f�r 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
 f�llt:



      cat /proc/net/nr_neigh




 Man sollte den netromd-Aufruf in die w�hrend des Startens ausgef�hrten
 (rc-)Skripte einf�gen, damit er automatisch beim Booten gestartet
 wird.


 8.5.  Das NetROM-Routing einrichten


 Manchmal ist es w�nschenswert, feste (statische) Routen f�r spezielle
 Rechner einzurichten. Dazu gibt es den Befehl nrparms.  Eine
 vollst�ndige 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 Eintr�ge f�r benachbarte Stationen vornehmen:



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




 Damit wird VK2SUT-9 als benachbarte NetROM-Station mit einer fest
 eingestellten Qualit�t von 120 eingetragen, die nicht automatisch
 gel�scht bzw. ge�ndert wird.




 9.  Ein NetROM-Interface f�r TCP/IP einrichten


 Ein TCP/IP-Interface f�r NetROM wird fast genau so wie f�r AX.25
 eingerichtet.  Man kann entweder die IP-Adresse und MTU auf der
 Kommandozeile f�r nrattach angeben oder ifconfig und route benutzen.
 Es m�ssen jedoch per Hand die arp-Eintr�ge f�r die Rechner, zu denen
 geroutet werden soll, erg�nzt 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 f�r 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




 Anschlie�end m�ssen f�r jeden IP-Rechner, der �ber NetROM erreichbar
 sein soll, die Eintr�ge f�r 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 f�r die NetROM-
 Qualit�t 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-Unterst�tzung 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, f�r 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 f�r den jeweiligen Port


    Adresse
       10stellige ROSE-Adresse f�r den Port


    Beschreibung
       kurze, frei w�hlbare Beschreibung



 Ein Beispiel:




      rose     5050294760    ROSE-Port




 Beachte, da� ROSE das f�r jeden AX.25-Port voreingestellte Rufzeichen
 verwendet, wenn nichts anderes angegeben wird.  Um ein eigenes
 Rufzeichen/SSID f�r 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 f�r
 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 f�r ROSE einrichten


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



      rsparms -nodes add 5050295502 radio vk2xlz




 Damit w�rde 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 hinzugef�gt.

 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 erfa�t, 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 m�glich sein, Test-Verbindungen zu starten.
 In den AX.25-Utilities ist das Programm call enthalten, das ein
 Terminal mit geteiltem Bildschirm f�r AX.25, NetROM und ROSE
 darstellt. Ein einfacher AX.25-Verbindungsaufbau s�he so aus:



      /usr/bin/call radio VK2DAY via VK2SUT




 Ein einfacher NetROM-Verbindungsaufbau zu einem Node mit dem Alias
 �SUNBBS� s�he so aus:



      /usr/bin/call netrom SUNBBS




 Ein einfacher ROSE-Verbindungsaufbau an HEARD auf dem Node 5050882960
 s�he so aus:



      /usr/bin/call rose HEARD 5050882960




 Beachte: Man mu� call mitteilen, auf welchem Port gerufen werden soll,
 da der Zielrechner m�glicherweise 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. Weiterf�hrende Informationen findet man in der Hilfeseite
 zu call.



 12.  Linux f�r ankommende Packet-Verbindungen einrichten


 Linux ist ein m�chtiges Betriebssystem und bietet gro�e Flexibilit�t
 bei der Konfiguration. Dadurch wird es etwas langwieriger, es so
 einzurichten, da� es das tut, was man will.  Wenn man eine Linux-
 Maschine f�r 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 h�bsche kleine Anwendungen entwickelt, die dazu verwendet
 werden k�nnen, 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 k�nnen, oder man hat sogar ein eigenes
 Programm, wie eine Datenbank oder ein Spiel, geschrieben, mit dem sich
 die Nutzer verbinden k�nnen. Was auch immer gew�nscht 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 hierf�r 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 f�r die Entgegennahme von AX.25-,
 NetROM- und ROSE-Verbindungen ist, soll hier die Konfiguration
 erl�utert werden.



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


 Sie ist die Konfigurationsdatei f�r 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
       g�ltig.


    window
       Der AX.25-Window-Parameter (Maxframe) f�r 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 Empfangsbest�tigung 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 f�r ein bestimmtes Zugriffsrecht steht.
       Die Buchstaben d�rfen gro�- oder klein geschrieben werden und
       d�rfen nicht durch Leerzeichen getrennt werden.

       Folgende Zeichen sind m�glich:


       u/U
          UTMP - zur Zeit nicht unterst�tzt


       v/V
          Validiere alles - zur Zeit nicht unterst�tzt


       q/Q
          Quiet - schreibe Verbindung nicht mit


       n/N
          �berpr�fe NetROM-Nachbar - zur Zeit nicht unterst�tzt


       d/D
          Digipeater nicht erlaubt, Verbindungen m�ssen 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 f�r 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 Proze�status)
       erscheinen soll, normalerweise dasselbe wie cmd, aber ohne die
       Pfadangabe


    arguments
       Kommandozeilenparameter, die der in cmd angegebenen Anwendung
       beim Start �bergeben werden. Folgende K�rzel k�nnen dazu
       verwendet werden:


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


       %U AX.25-Rufzeichen der verbundenen Station ohne SSID, in
          Gro�buchstaben.


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


       %S AX.25-Rufzeichen der verbundenen Station mit SSID, in
          Gro�buchstaben.


       %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 Gro�buchstaben.


       %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 Gro�buchstaben.


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

 F�r 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 d�rfte klar sein, diese Zeile enth�lt die
 Parameter, die auf alle Stationen zutreffen, f�r die keine speziellen
 Parameter definiert wurden. Wird keine default-Zeile angegeben, so
 werden alle Verbindungen, f�r die keine speziellen Voreinstellungen
 getroffen wurden, sofort wieder getrennt.

 Die parameters-Zeile ist ein wenig kritischer, hier ist auch die
 vorhin erw�hnte Falle. In jedem der Felder f�r alle aufgef�hrten
 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 f�r die
 darunterliegenden Zeilen gelten, nicht f�r die dar�berstehenden.  Man
 kann mehrere parameters-Zeilen pro Interface-Definition haben und
 somit Gruppen von Stationen mit gleichen Voreinstellungen einrichten.


 12.2.  Ein einfaches Beispiel f�r /etc/ax25/ax25d.conf


































 # ax25d.conf f�r 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 f�r jede Station, die eine Verbindung mit
 dem Rufzeichen VK2KTJ-0 aufbauen will und auf dem AX.25-Port �radio�
 geh�rt 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 f�r die Nutzer. Alle auf diese
 Weise gestarteten axspawn erscheinen in der Ausgabe des Befehls ps als
 �axspawn� zum besseren Verst�ndnis. Die n�chsten beiden Zeilen
 definieren f�r zwei Stationen, da� f�r sie diese Einstellungen gelten.

 Die defaults-Zeile dient als �Sammelbecken� f�r 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 Eigent�mers
 VK2KTJ ist.  (Siehe den Abschnitt ``Das PMS (Personal Message System)
 einrichten'' f�r weitere Details.)

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

 Anschlie�end 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� f�r 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 f�r Stationen, die VK2KTJ-0 gerufen haben,
 und die zweite f�r 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 M�glichkeiten der Syntax der Konfigurationsdatei
 aufzeigen. In der Hilfeseite zu ax25d wird die Konfigurationsdatei
 vollst�ndig erkl�rt. Ein detaillierteres und sicher ebenfalls
 n�tzliches Beispiel ist in dem Archiv der AX.25-Utilities enthalten.



 12.3.  Den ax25d starten


 Ist die Konfigurationsdatei vervollst�ndigt, startet man den ax25d:



      /usr/sbin/ax25d




 Nun sollten andere Stationen Verbindungen zu unserer Maschine aufbauen
 k�nnen. Der Aufruf des ax25d sollte in die beim Systemstart
 ausgef�hrten Skripts eingef�gt werden, damit dieser automatisch nach
 dem Booten zur Verf�gung steht.



 13.  Die Node-Software einrichten


 Die Node-Software wurde von Tomi Manninen ([email protected])
 entwickelt und basiert auf dem Original-PMS-Programm. Es stellt eine
 vollst�ndige und flexible Node-Funktion zur Verf�gung, 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 lauff�hig.
 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
 gew�nschte Linux-Kommando ausf�hren kann. Das Programm node wird
 normalerweise vom ax25d aufgerufen, kann aber auch vom inetd gestartet
 werden, um Nutzern Zugriff via Telnet zu erm�glichen. Auch ein Aufruf
 von der Kommandozeile ist m�glich.



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


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





 #/etc/ax25/node.conf
 # Konfigurationsdatei f�r 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 f�r
 # Zugriffsrechte in node.perms
 localnet       44.136.8.96/29
 # Hidden Ports
 # Die hier angegebenen Ports sind f�r Nutzer unsichtbar. Sie werden
 # vom Befehl (P)orts nicht ausgegeben.
 hiddenports     rose netrom
 # Callserver
 # Wenn eingestellt, wird ein Callserver zur Verf�gung gestellt
 callserver      zone.oh7rba.ampr.org
 # Node-Identifikation.
 # Dieser Text erscheint im Node-Prompt
 NodeId         LINUX:VK2KTJ-9
 # NetRom port
 # Name des f�r vom Node ausgehende
 NetROM-Verbindungen verwendeten
 # NetROM-Ports
 NrPort         netrom
 # Node Idle Timeout
 # Gibt an, nach welcher Zeit der Inaktivit�t eine Verbindung vom Node
 # beendet wird (in Sekunden)
 idletimout      1800
 # Connection Idle Timeout
 # Gibt an, nach welcher Zeit der Inaktivit�t eine Verbindung, die �ber
 # den Node l�uft, beendet wird (in Sekunden)
 conntimeout     1800
 # Reconnect
 # Gibt an, ob die Nutzer zum Node zur�ckverbunden werden sollen, wenn
 # die abgehende Verbindung getrennt wurde (reconnect) oder ob sie
 # vollst�ndig vom Node getrennt werden sollen
 reconnect       on
 # Command Aliases
 # Eine M�glichkeit, komplexe Befehle einfacher zu gestalten
 alias          CONV    "telnet vk1xwt.ampr.org 3600"
 alias          BBS     "connect radio vk2xsb"
 # External Command Aliases
 # M�glichkeit, externe Befehle unter node ausf�hren zu k�nnen
 # 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 - ausf�hrlichste 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 ausf�hren d�rfen und welche nicht.

 Diese Information wird in der Datei /etc/ax25/node.perms abgelegt,
 welche f�nf Felder enth�lt. In allen Feldern ist der Stern �*� das
 Zeichen daf�r, da� alle m�glichen Optionen f�r das jeweilige Feld
 gelten sollen. Das ist n�tzlich, wenn man Standard-Festlegungen
 treffen will. Die einzelnen Felder:



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


    method
       F�r 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, f�r 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 m�glichen Verbindungsarten


    port
       F�r AX.25-Nutzer lassen sich Zugriffsrechte auch auf der Basis
       des verwendeten Ports festlegen. Damit kann man definieren, was
       AX.25-Nutzer in Abh�ngigkeit von dem Port, �ber den sie
       verbunden sind, tun d�rfen.  Im dritten Feld steht bei dieser
       M�glichkeit dann der Portname. Das Ganze ist nur f�r
       AX.25-Verbindungen sinnvoll.

    password
       Optional kann man den Node so einstellen, da� er die Nutzer nach
       einem Pa�wort fragt. Das kann sinnvoll sein, um Nutzer mit
       vielen Zugriffsrechten zu sch�tzen. Das Pa�wort 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 f�r AX.25-(C)onnects erlaubt
         128          ROSE-(C)onnects erlaubt




    Um die Zugriffsrechte festzulegen, rechnet man die Werte f�r alle
    Rechte des Users zusammen und schreibt die Summe in das f�nfte
    Feld.

 Die Datei node.perms k�nnte also etwa so aussehen:



      # etc/ax25/node.perms
      #
      # Der Nodebetreiber ist VK2KTJ, sein Pa�ort ist "secret"
      # und er hat alle Zugriffsrechte bei allen Verbindungsarten
      vk2ktj *      *       secret  255
      # Folgende Nutzer d�rfen keine Verbindungen aufbauen
      NOCALL *      *       0
      PK232  *      *       0
      PMS    *      *       0
      # INET-Nutzer d�rfen keine Verbindungen aufbauen
      *      inet   *       0
      # AX.25-, NetROM, lokale, Host- und AMPR-Nutzer k�nnen (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
 m�ssen entsprechende Eintr�ge 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 f�r
 ax25d soll unter dem Rufzeichen VK2KTJ-1 der Node erreichbar sein.
 Dazu wird folgendes in der Datei /etc/ax25/ax25d.conf hinzugef�gt:



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




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



 13.4.  node vom inetd aus starten


 Es ist leicht m�glich, den Node auch von einer Telnet-Verbindung aus
 zu nutzen. Zun�chst ist festzulegen, zu welchem Port die die Nutzer
 ihre Verbindung aufbauen sollen.

 Im Beispiel wurde willk�rlich Port 3694 gew�hlt, Informationen
 dar�ber, wie man den Telnet-Daemon durch node ersetzen kann, finden
 sich in Tomis Dokumentation.

 Zwei Dateien sind anzupassen. Der Datei /etc/services f�gt man hinzu:



      node   3694/tcp        # OH2BNS's Node-Programm




 und in /etc/inetd.conf kommt zus�tzlich:




      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 Pa�wort (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 hinzugef�gt
 werden:



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




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

 F�r alle dieser Zeile folgenden Konfigurationen wird axspawn
 gestartet. axspawn pr�ft, ob das auf der Kommandozeile �bergebene
 Rufzeichen g�ltig 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 Pa�wort ist entweder �� (nichts) oder
 �+�, dann ist der Nutzer eingeloggt, steht etwas im Pa�wort-Feld, so
 wird der Nutzer nach einem Pa�wort gefragt.

 Gibt es keinen Account f�r 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 Pa�wort also nicht in /etc/passwd steht, kann es mit dem
 automatischen Anlegen von Nutzer-Accounts Probleme geben.

 In diesem Fall ist es g�nstiger, f�r 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 beeinflu�t werden.  Diese Datei hat folgendes
 Format:


















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




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

 Folgende acht Charakteristika von axspawn k�nnen eingestellt werden:


    create
       Wenn auf �yes� gesetzt, versucht axspawn, einen Account f�r alle
       Nutzer, die noch nicht in /etc/passwd aufgef�hrt 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 f�r neu (create) angelegte
       Nutzer-Accounts verwendet wird.


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


    max_uid
       H�chste f�r Benutzerkennungen von mit create angelegten Accounts
       zu vergebende Zahl


    home
       Home-(Login-)Verzeichnis f�r neu angelegte Nutzer-Accounts

    shell
       Die f�r 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 ([email protected]) weiter verbessert.

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

 Weiterhin m�ssen der Datei /etc/ax25/ax25d.conf die entsprechenden
 Eintr�ge hinzugef�gt werden, um das PMS den Nutzern zur Verf�gung zu
 stellen.



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


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

 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
 enth�lt. Sie wird als Antwort auf den info-Befehl ausgesendet, den die
 Nutzer am PMS> - Prompt eingeben k�nnen.


 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
 f�r pms Kommandozeilenparameter vorgesehen, damit dieses verschiedene
 Konventionen f�r die Zeilenendmarkierung verarbeiten kann. AX.25 und
 NetROM erwarten die Zeilenendmarkierung als Carriage Return+Linefeed
 (CR+LF), w�hrend unter Unix ein New Line Standard ist.

 Will man also beispielsweise einen Eintrag in /etc/ax25/ax25d.conf
 vorsehen, der f�r jede auf einem AX.25-Port hereinkommende Verbindung
 das PMS startet, so f�gt 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 Eigent�mer des PMS VK2KTJ ist.
 F�r andere Verbindungsarten gibt die Hilfeseite weiterf�hrende
 Ausk�nfte.



 15.5.  Das PMS testen



 Als Test f�r 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 Verf�gung stehen,
 ausprobieren.

 Zus�tzlich kann man eine andere Station bitten, sich mit der eigenen
 zu verbinden, um zu pr�fen, ob die Einstellungen in
 /etc/ax25/ax25d.conf funktionieren.



 16.  Die user_call - Programme einrichten


 Die user_call-Programme hei�en in Wirklichkeit ax25_call und
 netrom_call. Es sind sehr einfache Programme, die f�r den Aufruf durch
 den ax25d vorgesehen sind und Netzwerkverbindungen zu entfernten
 Rechnern automatisieren sollen.  Nat�rlich k�nnen sie auch von
 Shellskripts oder anderen Programmen, wie node, aufgerufen werden.

 Die Programme sind �hnlich wie das Programm call: Sie ver�ndern die
 Daten nicht, man mu� sich also selbst darum k�mmern, wie
 beispielsweise das Zeilenende behandelt werden soll.

 Zun�chst ein Beispiel f�r 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 m��ten 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 w�rde.

 Es gibt eine Menge m�glicher 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 k�nnen. 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 w�rde 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 unterst�tzt, es gibt zwei Programme namens rsuplnk und
 rsdownlnk daf�r.



 17.1.  Einen ROSE-Downlink einrichten


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

 Im Normalfall wird dieser als Voreinstellung f�r alle hereinkommenden
 ROSE-Verbindungen eingerichtet. Beispielsweise kann man ROSE-Nutzer
 f�r HEARD-0 oder NODE-0 lokal arbeiten lassen, f�r 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 eingef�gt werden, etwa so:



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




 Man beachte die spezielle Syntax f�r 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 w�rde 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 w�nschenswert, ein Rufzeichen einem
 Linux-Nutzer-Account zuzuordnen.

 Beispielsweise k�nnten 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 M�glichkeit zur Verf�gung, die Account-
 Namen von Linux-Nutzern mit Rufzeichen zu verbinden.  Dies wurde im
 Abschnitt PMS bereits erw�hnt, soll hier aber genauer dargestellt
 werden.

 Die Verkn�pfung wird mit dem Befehl axparms hergestellt,
 beispielsweise so:



      axparms -assoc vk2ktj terry




 Dieser Befehl verkn�pft 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 Verkn�pfungen in das beim Starten
 des Systems ausgef�hrte Skript einzubauen, damit sie bei jedem
 Neustart zur Verf�gung stehen.

 Beachte: Man sollte nie den root-Account mit einem Rufzeichen
 verkn�pfen, da dies zu Konfigurationsproblemen in anderen Programmen
 f�hren kann. In den meisten F�llen funktionieren diese dann nicht wie
 erwartet.



 19.  Die Eintr�ge im /proc-Dateisystem


 In dem Dateisystem unter /proc  finden sich eine Reihe f�r 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
 Erkl�rung notwendig sein.


    /proc/net/arp
       Enth�lt die Liste der Address Resolution Protocol-Mappings zu
       Adressen auf MAC-Protokollebene.  Diese k�nnen AX.25, Ethernet
       oder eine andere MAC-Protokollebene sein.


    /proc/net/ax25
       Enth�lt eine Liste der ge�ffneten AX.25-Sockets.  Dies k�nnen
       aktive Sitzungen oder solche, die auf eine Verbindung warten,
       sein.


    /proc/net/ax25_bpqether
       Enth�lt die Mappings f�r die Rufzeichen f�r AX.25 �ber BPQ-
       Ethernet.


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


    /proc/net/ax25_route
       Enth�lt den AX.25-Digipeater-Pfad


    /proc/net/nr
       Enth�lt eine Liste der ge�ffneten NetROM-Sockets.  Dies k�nnen
       aktive Sitzungen oder solche, die auf eine Verbindung warten,
       sein.


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


    /proc/net/nr_nodes
       Enth�lt Informationen �ber die der NetRom-Software bekannten
       NetROM-Nodes.


    /proc/net/rose
       Enth�lt eine Liste der ge�ffneten ROSE-Sockets.  Dies k�nnen
       aktive Sitzungen oder solche, die auf eine Verbindung warten,
       sein.


    /proc/net/rose_neigh
       Enth�lt Informationen �ber die der ROSE-Software bekannten
       benachbarten ROSE-Stationen.


    /proc/net/rose_nodes
       Enth�lt eine Zuordnung von ROSE-Zielen zu benachbarten ROSE-
       Stationen.


    /proc/net/rose_routes
       Enth�lt eine Liste aller bestehenden ROSE-Verbindungen






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


 Der vielleicht gr��te 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 k�nnen. Das Thema Netzwerk-Programmierung unter UNIX
 w�rde 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.  Adre�familien


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

 Die haupts�chlichen Unterschiede ergeben sich aus den verwendenden
 Adre�familien und -strukturen, die entsprechend angeordnet werden
 m�ssen. Die Adre�familien tragen die Namen AF_AX25, AF_NETROM und
 AF_ROSE f�r die jeweiligen Protokolle.



 20.2.  Headerdateien


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

 F�r 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




 F�r 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;





 F�r 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 geh�renden Bibliothek /lib/ax25.a stehen.
 Nat�rlich 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 befa�t, 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
 f�hren. 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 f�r einige der �blichsten
 Konfigurationen vorgestellt.  Sie sollen als Anregung f�r 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 Verf�gung.
 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 aufgef�hrten Beispielen, siehe auch dort.


 �  F�r den Funkport wurde eine IP-Adresse gew�hlt, die nicht im
    Adre�block des eigenen Netzwerkes enthalten ist.  Das ist nicht
    unbedingt so notwendig, genausogut h�tte man auch 44.136.8.97 f�r
    diesen Port vorsehen k�nnen.

 �  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 erh�lt 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 f�r TCP/IP-gekapselte Gateways verwendet.  Der
 neue Tunnel-Treiber unterst�tzt mehrere gekapselte Routen und l�st den
 veralteten ipip-Daemon ab. Eine typische Konfiguration w�rde 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 unterst�tzt 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 k�nnen
    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 hei�e /etc/ipip.routes)
 wie dargestellt eingelesen.  Die Quelldatei mu� das NOS-Format f�r
 Route-Befehle haben.

 �  Beachte die Verwendung des Window-Arguments bei dem Route-Befehl.
    Der richtige Wert f�r diesen Parameter erh�ht die Performance der
    Funkverbindung.

 Das neue Tunnel-munge-Script:


































 #!/bin/sh
 #
 #  Von: Ron Atkinson
 #
 #  Dieses Skript basiert auf dem urspr�nglich f�r 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
 #  f�r 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 �berpr�ft werden:
 #
 #     1) Trage f�r �Local routes� und �Misc user routes� die im eigenen
 #        Gebiet g�ltigen 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"





 F�r 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 urspr�nglich f�r 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
 #  f�r den IP -Tunnel-Treiber.
 #
 # Verbesserte Perl-Version by Heikki Hannikainen
 #
 # Versionen:
 #
 #       2.1     hessu   Thu Jul  8 19:41:18 EEST 1999
 #               - Modifiziert f�r /sbin/ip
 #
 #  Aufruf: z.B.    munge encap.txt rc.tun-routes
 #
 #  ACHTUNG: Bevor das Skript nutzbar ist, mu� folgendes
 #  �berpr�ft werden:
 #
 #     1) Die @my_addresses-Liste mu� STATT DER in diesem
 #        Text stehenden Adressen die IP-Adresse des eigenen
 #        Gateways (und Adressen, f�r 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 f�r 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 zus�tzlich 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 f�r AX.25-Kapselung f�r UNIX.
 Die AX-25-Utils enthalten eine leicht verbesserte Version f�r Linux.
 Ein Programm zur AXIP-Kapselung nimmt an einem Ende AX.25-Frames
 entgegen, pr�ft die AX.25-Empf�ngeradresse, um festzulegen, an welche
 IP-Adresse das gekapselte Paket weitergeleitet werden mu�, kapselt es
 sodann in ein TCP/IP-Datagramm und sendet es schlie�lich 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 w�ren.

 Um TCP/IP-Datagramme, die AX.25-Frames enthalten, von anderen ohne
 solchen Inhalt unterscheiden zu k�nnen, werden AXIP-Datagramme mit
 einer Protokoll-Identifizierung von 4 (oder fr�her 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 f�r AXIP

 Das Programm ax25ipd kennt zwei haupts�chliche 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 sp�ter beschrieben werden.  Weiterhin
 kann man hier folgendes einrichten:


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

 �  das Rufzeichen, welches f�r 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 f�r die Station floyd.vk5xxx.ampr.org
 #
 # Datentransportart w�hlen. �ip� f�r die Kompatibilit�t
 # 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 k�nnen Aliases genutzt werden. (2 f�r 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 aufgef�hrten Adressen
 # wird an jede als broadcastf�hig markierte Route weitergeleitet
 #
 broadcast QST-0 NODES-0
 #
 # Definition der AX.25-Routen, soviele einstellbar, wie ben�tigt.
 # Format: Route (Rufzeichen/Wildcard) (Adresse des IP-Zielrechners)
 # ssid of 0 routes all ssid's
 #
 # route   [flags]
 #
 # G�ltige Flags:
 #         b - Broadcasts d�rfen �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


 Zun�chst wird der Datei /etc/ax25/axports ein Eintrag hinzugef�gt:



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




 Schlie�lich 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. Empf�ngt 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 k�nnen
 jedem �route� Befehl in der Datei /etc/ax25ipd.conf hinzugef�gt
 werden. Es sind folgende:

    b  Pakete mit einer Zieladresse, die einer der mit dem
       Schl�sselwort �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 n�tzlich, da es erm�glicht,
 Informationen, die normalerweise f�r alle Stationen gedacht waren,
 auch einer bestimmten Anzahl AXIP-Stationen zukommen zu lassen.
 Normalerweise sind AXIP-Routen Punkt-zu-Punkt-Verbindungen und k�nnen
 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 gew�nschten Eigenschaften und M�glichkeiten bietet.  Die meisten
 von ihnen w�rden gern das NOS mit dem Linux-Kernel verbinden, so da�
 einige der Linux-M�glichkeiten f�r Funk-Nutzer zur Verf�gung st�nden.



 21.4.1.  NOS und Linux mit einer Pipe verbinden


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

 Da sowohl Linux als auch NOS das SLIP-Protokoll unterst�tzen, kann man
 beide �ber SLIP miteinander verbinden. Man k�nnte dazu zwei serielle
 Schnittstellen mit einem Loopback-Kabel verwenden, doch das w�re
 langsam und kostspielig. Linux stellt wie viele andere UNIX-�hnliche
 Betriebssysteme sogenannte Pipes zur Verf�gung. Dabei handelt es sich
 um Pseudo-Devices, die f�r 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 er�ffnet, so k�nnen 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� zun�chst das
 zu verwendende Pipe-Device aus dem /dev-Verzeichnis ausgew�hlt werden.
 Die �master�-Enden der Pipes tragen die Namen ptyq1 bis ptyqf, die
 �slave�-Enden ttyq1 bis ttyqf. Zu jedem �master� geh�rt immer ein
 �slave�, so da� man ttyqf als �slave� verwenden mu�, wenn ptyqf als
 �master� ausgew�hlt wurde.

 Wenn man nun ein solches Device-Paar gew�hlt 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 ge�ffnet 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 veranla�t den Linux-Kernel, alle
 Datagramme (Pakete) f�r 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 w�rde.

 Dadurch w�rden 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 ausf�hren zu k�nnen.
 Funktioniert dies nicht, so mu� man nochmals �berpr�fen, ob kein
 Fehler, besonders beim Konfigurieren der Adressen, aufgetreten ist und
 die Pipe-Devices ordnungsgem�� verf�gbar 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 n�tzlichen
 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 besch�ftigen.  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 Verf�gung 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
 f�r die Diskussionen �ber TCP/IP im Amateurfunk und ebenso den Channel
 #linpeople auf IRC. Die Mailingliste f�r FPAC erreicht man unter
 [email protected].

 Um der Mailingliste linux-hams beizutreten, sendet man eine E-Mail an
 [email protected], die den Text
      subscribe linux-hams




 enth�lt.

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


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

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

 F�r den Anfang sollte man diese Archive verwenden, da viele h�ufige
 Fragen hier bereits beantwortet werden.

 Der tcp-Gruppe tritt man so bei: E-mail an [email protected] mit der
 Zeile



      subscribe tcp-group




 als Text schicken.

 Beachte: Die TCP/IP-Gruppe ist prim�r f�r Diskussionen �ber
 verbesserte Protokolle, wie TCP/IP, im Amateurfunk gedacht.  Linux-
 spezifische Fragen sollten m�glichst 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 f�r 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 R�thig ([email protected]
 leipzig.de) schicken.  Ich w�rde mich freuen, wenn ich �ber evtl.
 notwendige Ver�nderungen, Umformulierungen oder Korrekturen in
 Kenntnis gesetzt w�rde.  Viel Freude also mit Linux und Packet Radio,
 55 & 73.



 25.  Copyright


 Dieses Dokument ist urheberrechtlich gesch�tzt. Das Copyright f�r die
 englische AX25 HOWTO, auf der dieses Dokument basiert, liegt bei Terry
 Dawson. Das Copyright f�r die deutsche Version liegt bei Gerd R�thig
 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
 Lizenzgeb�hren verbreitet werden darf, solange dieser Copyright
 Hinweis nicht entfernt wird. Eine kommerzielle Verbreitung ist erlaubt
 und ausdr�cklich erw�nscht. Bei einer Publikation in Papierform ist
 das Deutsche Linux HOWTO Projekt hier�ber zu informieren.








 26.  ANHANG: Einige aus dem Englischen �bernommene Fachbegriffe
 und deren Erkl�rung



    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 k�nnen in diesem Sinne als Broadcast
       betrachtet werden)


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


    Digipeater
       Station, die die eigenen Pakete, so wie sie sie empf�ngt,
       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 erm�glicht


    Heard, MHeard
       Ausgabe, welche Stationen auf einem bestimmten Kanal geh�rt
       (aufgenommen) werden konnten


    Gateway
       hier: mit mehreren Netzen gleichzeitig verbundener Rechner, an
       den alle Pakete gehen, die innerhalb eines Netzes nicht
       zugestellt werden k�nnen - 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 Aktualit�t einer
       Verbindung angibt, Zeitspanne, die seit der letzten geh�rten
       Aktivit�t der betreffenden Station vergangen ist, zur
       Beurteilung der Qualit�t 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 Empf�nger f�r 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
 unvollst�ndig. Wenn man beispielsweise ein AX.25-Netzwerk-Device bei
 einem noch laufenden Connect herunterf�hrt, bekommt man einen
 Systemabsturz (�Oops�). Um das System wieder nutzbar zu machen, ist
 anschlie�end ein Neustart f�llig.

 Ich wurde gefragt, weshalb der aktuelle Kernel 2.2 momentan in diesem
 HOWTO keine ausf�hrlichere Erw�hnung findet. Meine pers�nliche 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 v�llige Neueinrichtung wird
 f�llig.

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

 Zu deren Neu�bersetzung siehe Bemerkung am Ende dieses Textes.  Fakt
 ist weiterhin, da� der Kernel 2.2 h�here 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 f�llig) 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.