LinuX AX25-Howto, Packet Radio

Original von Terry Dawson, VK2KTJ, terry@perf.no.itg.telstra.com.au
Deutsche Fassung von Gerd Rthig, gerd@ardos.de

Zugrundeliegende Version: 1.5 vom Oktober 1997

Das Betriebssystem LinuX ist vielleicht das einzige, das eine eingebaute
Untersttzung fr das im Packet Radio verwendete AX.25-Protokoll bietet.
Dieser Text beschreibt, wie man diese Untersttzung installiert und
einrichtet.

Inhalt

 1  Einfhrung

        1.1. Vernderungen gegenber vorherigen Versionen
        1.2. Wo bekommt man neue Versionen dieses Textes
        1.3. Weitere Informationen zu diesem und verwandten Themen

 2  Die Protokolle bei Packet Radio und LinuX

        2.1 Wie alles zusammenpat

 3  Die Software zu AX.25/NetROM/Rose

        3.1. Woher bekommt man den passenden Kernel und die Software
                4.1.1. Der Kernel-Quelltext
                4.1.2. Die Netzwerk-Tools
                4.1.3. Die AX.25-Utilities

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

        4.1. Den Kernel compilieren
                4.1.1. Ein Wort zu den Kernel-Modulen
                4.1.2. Was ist neu in den verschiedenen Kernel-Versionen?

        4.2. Die Tools zur Netzwerkkonfiguration
                4.2.1. Ein Patch fr Rose-Untersttzung
                       und Beseitigung einiger Fehler
                4.2.2. Die Standardfassung der Net-Tools erstellen

        4.3. Die Anwender- und Utilityprogramme zu AX.25

 5  Ein Hinweis zu Rufzeichen, Adressen und all diesen Dingen

        5.1. Was sind all diese T1, T2, N2 -Sachen?
        5.2. Zur Laufzeit konfigurierbare Parameter

 6  Einen AX.25-Port einrichten

        6.1. Das AX.25-Netzwerk-Device erstellen
                6.1.1. Kiss
                6.1.2. BayCom
                6.1.3. AX.25-Kanalzugriffsparameter 
                6.1.4. Soundmodem
                6.1.5. PI-Card
                6.1.6. PacketTwin
                6.1.7. SCC, allgemein
                6.1.8. BPQ-Ethernet
                6.1.9. BPQ-Node mit LinuX-AX.25-Untersttzung
        6.2. Die Datei /etc/ax25/ax25ports
        6.3. Das AX.25-Routing einrichten

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

 8  Einen NetROM-Port einrichten

        8.1. Die Datei /etc/ax25/nrports 
        8.2. Die Datei /etc/ax25/nrbroadcast
        8.3. Das Netzwerk-Device fr NetROM erstellen
        8.4. Den NetROM-Daemon starten
        8.5. Das NetROM-Routing einrichten                        

 9  Ein NetROM-Interface fr TCP/IP einrichten

10  Einen Rose-Port konfigurieren

        10.1. Die Datei /etc/ax25/rsports einrichten
        10.2. Das Rose-Netzwerk-Device erstellen
        10.3. Das Routing fr Rose einrichten

11  AX.25/NetROM/Rose-Rufe

12  LinuX fr ankommende Packet-Verbindungen einrichten

        12.1. Die Datei /etc/ax15/ax25d.conf
        12.2. Ein einfaches Beispiel fr /etc/ax25/ax25d.conf
        12.3. Den ax25d starten

13  Die Node-Software einrichten

        13.1. Die Datei /etc/ax25/node.conf
        13.2. Die Datei /etc/ax25/node.perms
        13.3. node vom ax25d aus starten
        13.4. node vom inetd aus starten

14  axspawn einrichten

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

15  Das PMS (Personal Message System) einrichten

        15.1. Die Datei /etc/ax25/pms.motd
        15.2. Die Datei /etc/ax25/pms.info
        15.3. AX.25-Rufzeichen Systembenutzern zuordnen
        15.4. PMS in die Datei /etc/ax25/ax25d.conf einbauen
        15.5. Das PMS testen

16  Die user_call - Programme einrichten

17  Die Befehle zum Rose-Up- und -Downlink einrichten

        17.1. Einen Rose-Downlink einrichten
        17.2. Einen Rose-Uplink einrichten

18  AX.25-Rufzeichen LinuX-Nutzern zuordnen

19  Die Eintrge im /proc-Dateisystem 

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

        20.1. Adrefamilien
        20.2. Headerdateien
        20.3. Rufzeichenhandhabung und Beispiele

21  Einige Beispielkonfigurationen

        21.1. Kleines Ethernet-LAN mit LinuX als Router auf Funk-LAN
        21.2. IPIP-Gateway
        21.3. Die Einrichtung des AXIP-encapsulated Gateway
        21.4  Wie verbindet man NOS und die LinuX-Kernel-Netzwerk-Software

22  Wo finde ich Informationen zu ...?

23  Diskussionsforen zu Amateurfunk und LinuX

24  Danksagung

25  Copyright

ANHANG:

Einige aus dem Englischen bernommene Fachbegriffe und deren Erklrung

------------------------------------------------------------------------------

1  Einfhrung

Dieser Text war anfangs ein Zusatz zum HAM-HOWTO, wurde aber mit der Zeit so
gro, da er so nicht mehr optimal gepflegt werden konnte.
Dieses HOWTO beschreibt, wie man die AX.25-, NetROM- und Rose-
Untersttzung unter LinuX installiert und einrichtet.
Es werden einige typische Konfigurationen beschrieben, die als
Ausgangsbasis dienen knnen.
Die Implementation der Amateurfunk-Protokolle unter LinuX ist sehr flexibel.
Fr Neulinge wird die Konfiguration reichlich kompliziert und verwirrend
erscheinen. Es braucht ein wenig Zeit, bis man versteht, wie alles
zusammenpat. Die Konfiguration wird sich als schwierig erweisen, wenn man
sich nicht entsprechend vorbereitet und sich ber LinuX im allgemeinen
informiert hat.

1.1. Vernderungen gegenber der Vorversion

Zustze:
        - Verweis auf Joerg Reuters WWW-Seite hinzugefgt
        - Abschnitt "Weitere Informationen"
        - Konfiguration des ax25ipd

Korrekturen/Aktualisierungen:
        - Pseudo-Gerte /dev/pty in sicheren Bereich verlegt, um mgliche
          Konflikte zu vermeiden (jetzt /dev/ptyq)
        - Aktuelle Versionsnummern fr ax25-module und ax25-utils
        - Deutsche Version: E-Mail-Adresse durch gltige ersetzt
        - Fehler in der Gliederung beseitigt
        - WWW - Seite mit neuer Adresse zum Download eingerichtet

Was noch zu tun ist:
        - SCC-Abschnitt berarbeiten, mglicherweise fehlerhaft
        - Abschnitt Programmierung erweitern
        - Verweise zur AX.25- und NetROM- Dokumentation einbauen

1.2.  Wo bekommt man neue Versionen dieses Textes

Die beste Stelle dafr ist das Archiv des LinuX-Dokumentation-Projektes.
Dieses betreibt einen Web-Server, auf dem dieser Text als

<http://sunsite.unc.edu/LDP/HOWTO/AX25-HOWTO.html> erscheint.

Ebenso ist es mglich, direkt mit Terry Dawson
(terry@perf.no.itg.telstra.com.au) in Kontakt zu treten, er wird jedoch
neue Versionen sofort dem Koordinator des LDP schicken, so da man immer
erst bei Sunsite nachsehen sollte, gibt es dort keine neue Version, so
ist es wahrscheinlich, da sie noch nicht fertig ist.

Die deutsche Version findet man bis auf weiteres (ab 30.3.1998) unter

<http://www.ardos.de/gerd/axhowto.html>.

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

Es sind:

das HAM-HOWTO      <http://sunsite.unc.edu/LDP/HOWTO/HAM-HOWTO.html>
das NET-3-HOWTO    <http://sunsite.unc.edu/LDP/HOWTO/NET-3-HOWTO.html>
das Ethernet-HOWTO <http://sunsite.unc.edu/LDP/HOWTO/Ethernet-HOWTO.html>
und
das Firewall-HOWTO <http://sunsite.unc.edu/LDP/HOWTO/Firewall-HOWTO.html>

Allgemeinere Informationen zu LinuX findet man in den anderen LinuX-
HOWTO-Dokumenten <http://sunsite.unc.edu/LDP/HOWTO/>.

2  Die Protokolle bei Packet Radio und LinuX  

Das AX.25-Protokoll kann sowohl mit Verbindungen als auch ohne diese
betrieben werden und wird entweder selbst zur Herstellung von Punkt-zu-Punkt-
Verbindungen oder als Trger fr andere Protokolle wie TCP/IP oder NET/ROM
eingesetzt.
Es entspricht in seinem Aufbau dem X.25-Protokoll, fr den Amateurfunk wurden
einige Erweiterungen hinzugefgt.

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

Das Rose-Protokoll wurde von TOM Moulton, W2VY, entwickelt und implementiert.
Es stellt eine Implementation des X.25-Packet-Layer-Protokolls dar und
wurde fr Zusammenwirken mit AX.25 als Datalink entworfen.
Es stellt ebenfalls eine Netzwerk-Ebene zur Verfgung.
Rose-Adressen sind zehnstellige Nummern. Die ersten vier sind der sog.
Data Network Identification Code (DNIC) und stammen aus dem Zusatz B der
CCITT X.121-Empfehlung. Mehr Informationen zum Rose-Protokoll gibt es auf
dem RATS-Web-Server <http://www.rats.org/>.

Alan Cox entwickelte die frhe Kernel-Untersttzung fr AX.25. Jonathan
Naylor (g4klx@g4klx.demon.co.uk) entwickelte den Code weiter, fgte
NetROM- und Rose-Untersttzung hinzu und ist jetzt der Entwickler des
AX.25-Codes fr den Kernel. Die Untersttzung fr DAMA wurde von
Joerg, DL1BKE, jreuter@lykos.tng.oche.de, entwickelt.
Thomas Sailer, (sailer@ife.ee.ethz.ch) fgte die Untersttzung fr
BayCom- und SoundModem hinzu. Die AX-25-Utilities werden von Terry Dawson
(VK2KTJ, terry@perf.no.itg.telstra.com.au) betreut.

Der LinuX-Code untersttzt KISS-basierte TNCs (Terminal Node Controllers),
die Ottawa PI-Card, die Gracilis PacketTwin-Karte und andere SCC-Karten
auf der Basis des Z8530 mit dem allgemeinen SCC-Treiber sowie parallele
und serielle BayCom-Modems. Der SoundModem-Treiber von Thomas Sailer
untersttzt SoundBlaster und Soundkarten auf der Basis des Crystal-
Chipsatzes.

Die Anwenderprogramme enthalten ein einfaches PMS (Personal Message System),
eine Mglichkeit, Baken auszusenden, ein zeilenorientiertes Programm zum
Verbindungsaufbau, 'listen', ein Beispiel, wie man alle AX.25-Pakete an
einem Interface mitlesen kann und Programme zur Einrichtung des NetROM-
Protokolls. Ebenso sind ein AX.25-Server-Programm zur Verwaltung
eintreffender Verbindungen und ein NetROM-Daemon, der die schwierige
Arbeit bei NetROM bernimmt, vorhanden.

2.1. Wie alles zusammenpat

Die AX.25-Implementation bei LinuX ist noch sehr neu. Obwohl sie an vielen
Stellen NOS, BPQ oder anderen Implementationen hnelt, ist sie keine von
diesen. Man kann sie so einrichten, da sie sich fast wie andere
Implementationen verhlt, die Konfiguration ist jedoch vollkommen anders.

Um beim Verstndnis der Einrichtungsweise zu helfen, soll dieser Abschnitt
einige strukturelle Eigenschaften beschreiben und darstellen, wie sie sich
in die Systemstruktur von LinuX einfgen.

Vereinfachte Zeichnung der Protokoll-Ebenen

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

Diese Darstellung soll zeigen, da NetROM, Rose und TCP/IP alle direkt
auf AX.25 aufgesetzt laufen, aber jedes Protokoll als einzelnes Protokoll
an der Programmierschnittstelle behandelt wird. Die 'AF_'-Namen sind die
Namen, die der Adrefamilie jedes Protokolls gegeben werden, wenn man
Programme schreibt, die es nutzen.
Wichtig ist also die richtige Konfiguration der AX.25-Gerte, bevor man
die NetROM-, TCP/IP- oder Rose- Devices einrichten kann.

Darstellung der LinuX-Netzwerk-Implementation

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

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


3  Die Software zu AX.25/NetROM/Rose

Die AX.25-Software besteht aus drei Komponenten:

- dem Kernel-Quelltext
- den Netzwerk-Konfigurationsprogrammen
- den Utilities.

In den 2.0.xx-Kernels sind die Treiber fr AX.25, NetROM, Z8530 SCC,
PI-Karte und PacketTwin standardmig enthalten.
Sie wurden in den 2.1.xx-Kernels bedeutend verbessert. Leider macht der
Rest die 2.1.xx-Kernel ziemlich instabil im Moment (Entwicklungsversionen!)
und sie sind deshalb keine gute Wahl fr ein stabil nutzbares System.
Als Lsung dieses Problems gibt es von Jonathan Naylor einen Patch, der
die AX.25-Untersttzung der 2.0.33-Kernel auf das Niveau der 2.1.xx-Kernel
bringt. Er ist sehr einfach zu installieren und stellt eine Reihe von
im Standard-Kernel nicht vorhandenen Mglichkeiten zur Verfgung, wie die
Untersttzung fr Rose.

4.1. Woher bekommt man den passenden Kernel und die Software

4.1.1. Die Kernel-Quelltexte

Diese sind an der blichen Stelle bei

ftp.funet.fi

im Verzeichnis

/pub/Linux/PEOPLE/Linus/v2.0/ als linux-2.0.33.tar.gz zu finden.

Die aktuelle Version des Patches von Jonathan Naylor findet man auf

ftp.pspt.fi

unter

/pub/linux/ham/ax25 als ax25-module-14f.tar.gz .

4.1.2. Die Netzwerk-Tools

Die neueste Alpha-Fassung der Standard-LinuX-Netzwerk-Tools untersttzt
AX.25 und NetROM und findet sich auf

ftp.inka.de

im Verzeichnis

/pub/comp/Linux/networking/net-tools/ als net-tools-1.33.tar.gz .

Die neueste Version des ipfwadm (IP Firewall Administrator) kann von

ftp.xos.nl

im Verzeichnis

/pub/linux/ipfwadm

gefunden werden.

4.1.3. Die AX.25-Utilities

Es gibt zwei verschiedene Versionsreihen fr die AX.25-Utilities.
Die eine arbeitet mit 2.0.xx-Kernels zusammen, whrend die andere fr
2.1.xx-Kernel oder 2.0.xx-Kernel mit installiertem Module-Patch von
Jonathan Naylor gedacht ist.
Die Versionsnummer entspricht der Versionsnummer des ltesten Kernels,
mit dem die jeweiligen ax25-utils funktionieren.
Im folgenden sind funktionierende Kombinationen angegeben. Man mu eine
von ihnen verwenden, da alle anderen Kombinationen nicht oder nicht
optimal funktionieren.

LinuX Kernel                                 AX.25-Utilities
------------------------------------------------------------------------
linux-2.0.29                                 ax25-utils-2.0.12c.tar.gz *
linux-2.0.28 mit module12-Patch              ax25-utils-2.1.22b.tar.gz *
linux-2.0.33 mit module14f-Patch             ax25-utils-2.1.42a.tar.gz
linux-2.1.22 und hher                       ax25-utils-2.1.22b.tar.gz
linux-2.1.42 und hher                       ax25-utils-2.1.42a.tar.gz

Man findet die Programme unter

ftp://ftp.pspt.fi/pub/linux/ham/ax25/ oder bei SunSite:
ftp://ftp.sunsite.unc.edu/pub/LInux/apps/ham/ .

Zu bechten ist, da die mit einem '*' markierten Versionen
nicht mehr weiterentwickelt werden und als veraltet zu betrachten sind.
Im vorliegenden Text werden die oben dargestellten Versionen behandelt, die
Darstellung ist jedoch weitestgehend auch fr frhere Versionen gltig.

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

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

4.1. Den Kernel compilieren

Wer sich mit dem Erstellen eines neuen Kernels auskennt, kann diesen
Abschnitt berspringen. Wichtig ist die Auswahl der richtigen Optionen beim
Compilieren.
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
mv linux linux.old (falls man bereits ein Linux-Verzeichnis besitzt und
dieses nicht lschen will).
Da die ausgepackten Quelltexte etwa 20-30 MB auf der Platte belegen, sollte
man sich berlegen, ob man das Verzeichnis nicht doch lscht:
rm -r linux

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

cd /usr/src
tar zxvf /tmp/linux-2.0.33.tar.gz (angenommen, das Archiv liegt in /tmp)
tar zxvf /tmp/ax23-module-14a.tar.gz
patch -p0 -s < /usr/src/ax25-module-14b/ax25-2.0.31-2.1.47-2.diff
               (bzw. enstprechender Name des Patches)
cd linux

Die Dateinamen knnen sich mit der Zeit etwas ndern, insbesondere die
Entwicklung des Module-Patches befindet sich noch etwas im Flu.

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

make menuconfig (ein menbasiertes Skript im Textmodus)

oder

make xconfig (Skript fr die X-Window-Oberflche, luft jedoch nicht auf
              allen Systemen)

Etwas archaisch, aber bewhrt und stabil:

make config

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

<http://sunsite.unc.edu/LDP/HOWTO/Module-HOWTO.html> .

Folgende Optionen sind fr AX.25 wichtig:

Code maturity level options

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

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 Radio AX.25 Level 2
[?] Amateur Radio Net/ROM
[?] Amateur Radio X.25 PLP (Rose)

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 4800 baud HAPN-1 modulation
[?] Soundmodem support 9600 baud FSK G3RUH modulation
[?] Serial port KISS driver for AX.25
[?] BPQ Ethernet driver for AX.25
[?] Gracilis PacketTwin support for AX.25
[?] Ottawa PI and PI/2 support for AX.25
[?] Z8530 SCC KISS emulation driver for AX.25
...
Optionen, die mit einem '[*]' markiert sind, mssen eingeschaltet
(mit 'y' beantwortet) werden, die mit einem '[?]' markierten hngen von
der zu verwendenden Hardware ab und welche weiteren Optionen einbezogen
werden sollen.
Einiges davon wird spter noch genauer beschrieben, so da es sinnvoll ist,
bei Unklarheiten erst mal weiterzulesen und anschlieend wieder zu diesem
Abschnitt zurckzukehren.

Nachdem die Konfiguration vervollstndigt wurde, sollte es mglich sein, den
Kernel problemlos zu compilieren.
Anmerkung: Besonders, wenn man einen der neuen 2.1.xx-Kernels verwendet,
ist es wichtig, VOR dem Kompilieren die Datei
/usr/src/linux/Documentation/CHANGES zu lesen und sicherzustellen, da
die die dort erwhnten Programmpakete mindestens in der angegebenen
Version installiert sind.
Compiliert 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 compiliert, kann man ihn dorthin bringen,
wo er hin mu:

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

Wer Lilo installiert hat, mu diesen starten:

lilo

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

make zlilo

automatisiert die Schritte zImage, Kernelkopie und LILO-Installation.
Da hierbei gleichzeitig die Datei System.map aktualisiert wird, ist dieser
Befehl von Vorteil. Wer sich aber nicht sicher ist, ob der neue Kernel auch
wirklich startet, sollte dann aber eine Bootdiskette bereithalten.
Weitere Informationen zu diesem Thema gibt das Kernel-HOWTO
<http://sunsite.unc.edu/LDP/HOWTO/Kernel-HOWTO.html>

4.1.1. Ein Wort zu den Kernel-Modulen

Es kann nicht empfohlen werden, die Treiber als Module zu compilieren.
Fast immer hat man nichts davon auer, da die ganze Sache noch komplexer
wird. Viele Leute haben Probleme, die Module zum Funktionieren zu bewegen,
nicht weil die Software schlecht wre, sondern weil Module nicht einfach
zu installieren und zu konfigurieren sind.

Wer sich entschlossen hat, einige der Komponenten als Module zu compilieren,
mu nach Fertigstellung des Kernels noch

make modules
make modules_install

eingeben. Auch hier knnen die beiden Befehle zu einem zusammengefat werden:

make modules modules_install

Weiterhin ist es notwendig, einige Eintrge in der Datei /etc/conf.modules
hinzuzufgen, damit das Programm kerneld wei, was es mit den Modulen
anfangen soll:

alias net-pf3           ax25
alias net-pf6           netrom
alias net-pf-11         rose
alias tty-ldisc-1       slip
alias tty-ldisc-3       ppp
alias tty-ldisc-5       mkiss
alias bc0               baycom
alias nr0               netrom
alias pi0a              pi2
alias pt0a              pt
alias scc0              optoscc (oder einer der anderen SCC-Treiber)
alias sm0               soundmodem
alias tun10             newtunnel
alias char-major-4      serial
alias char-major-5      serial
alias char-major-6      lp

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


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

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

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

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

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


4.2. Die Tools zur Netzwerkkonfiguration

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

4.2.1.  Ein Patch fr Rose-Untersttzung und Beseitigung einiger Fehler

In dem Standard-Paket net-tools-1.33.tar.gz finden sich einige kleinere
Fehler, die sich auf die Untersttzung fr AX.25 und NET/ROM auswirken.
Terry Dawson entwickelte einen kleinen Patch, der die Fehler korrigiert und
die Untersttzung fr Rose hinzufgt.

Der Patch ist erhltlich bei

ftp://zone.pspt.fi/pub/linux/ham/ax25/net-tools-1.33.rose.tjd.diff.gz .

4.2.2. Die Standardfassung der Net-Tools erstellen

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

cd /usr/src
tar zxvf /tmp/net-tools-1.33.tar.gz
zcat net-tools-1.33.rose.tjd.diff.gz | patch -p0
cd net-tools-1.33
make config

An dieser Stelle werden, hnlich wie bei der Kernel-Konfiguration,
einige Fragen gestellt. Man mu nun sicherstellen, alle Protokolle und
Typen von Netzwerk-Devices einzubinden, die genutzt werden sollen.
Fragen, auf die man keine Antwort wei, sollte man mit 'y' beantworten.
(Wichtig: Die Protokolle mssen vorher auch bei der Kernel-Konfiguration
eingeschaltet worden sein. Hat man zum Beispiel 'AppleTalk' beim Kernel
deaktiviert, so darf man die entsprechende Frage bei den Net-Tools nicht
mit 'y' beantworten. Beachtet man dies nicht, so knnen die Tools nicht
compiliert werden.)
Wenn man die erste Zeile "usage und man page, info text von alexey" aus
der Datei arp.c entfernt hat, sollten sich die Net-Tools problemlos
compilieren lassen.
Nach beendeter Compilierung werden die Programme mit

make install

an passender Stelle installiert.
Wer die IP-Firewall-Mglichkeiten nutzen will, bentigt das neueste Tool
ipfwadm zur Administration der Firewalls. Das ltere Programm ipfw
arbeitet mit den neueren Kernels nicht zusammen und wird daher durch
ipfwadm ersetzt.
Mit folgenden Befehlen wird ipfwadm compiliert:

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


5.3. Die Anwender- und Utilityprogramme zu AX.25

Nachdem der neue Kernel erfolgreich compiliert und mit diesem neu gestartet
wurde, mssen jetzt die Anwenderprogramme compiliert 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

Die Dateien werden in das /usr - Verzeichnis in die Unterverzeichnisse
bin, sbin und man istalliert.
Werden die AX.25-Utilities zum allerersten Mal installiert, d.h., sie waren
noch niemals vorher installiert, so verwendet man auch den Befehl

make installconf ,

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

Erscheinen Bildschirmmeldungen wie

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

sollte man doppelt berprfen, ob das ncurses-Paket installiert ist.
Das Konfigurationsskript versucht, ncurses an den blichen Stellen
zu finden, doch auf manchen Systemen ist ncurses nicht richtig installiert
und es kann dann das Paket nicht finden.


5  Ein Hinweis zu Rufzeichen, Adressen und all diesen Dingen

Jeder AX.25- oder NetROM-Port mu ein eigenes Rufzeichen/SSID besitzen.
Diese werden in den weiter unten beschriebenen Konfigurationsdateien
eingestellt.
Bei manchen AX.25-Implementationen wie NOS und BPQ kann man jedem AX.25-
und NetROM-Port das gleiche Rufzeichen zuteilen. Aus etwas komplizierten
technischen Grnden ist das unter LinuX nicht mglich.
In der Praxis ist das nicht so ein groes Problem, wie es zunchst scheint.

Das bedeutet, da es einige Dinge gibt, die bei der Konfiguration beachtet
werden mssen:

1. Jeder AX.25- und NetROM-Port mu sein eigenes Rufzeichen/SSID bekommen.
2. TCP/IP nutzt das Rufzeichen des Ports, ber den es ausgesendet oder
   empfangen wird, d.h., das in Punkt 1. angegebene Rufzeichen.
3. NetROM nutzt das in seiner speziellen Konfigurationsdatei eingestellte
   Rufzeichen, dieses wird allerdings NUR dann verwendet, wenn eine
   Verbindung zu einer anderen NetROM-Station besteht, es ist NICHT das
   Rufzeichen, welches AX.25-Nutzer verwenden mssen, wenn sie den Node
   rufen wollen. Mehr dazu spter.
4. Rose nutzt standardmig das Rufzeichen des AX.25-Ports, es sei denn,
   es wurde mit dem rsparms-Befehl ein anderes Rufzeichen eingestellt.
   Wurde mit rsparms ein Rufzeichen vergeben, dann verwendet Rose dieses
   auf allen (Rose-)Ports.
5. Andere Programme, wie der ax25d, knnen zum Mithren jedes Rufzeichen
   verwenden, das sie wollen, und diese knnen auch fr verschiedene Ports
   genutzt werden.
6. Wenn man das Routing sorgfltig einstellt, kann man allen Ports dieselbe
   IP-Adresse zuordnen.

5.1. Was sind all diese T1, T2, N2 -Sachen?

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

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

5.2. Zur Laufzeit konfigurierbare Parameter

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

Dateiname             Bedeutung                Wert            Voreinstellung
-----------------------------------------------------------------------------
ip_default_mode       voreingestellter IP-     0=DG 1=VC         0
                      Modus
ax25_default_mode     voreingestellter AX.25-  0=Normal,         0
                      Modus                    1=Erweitert  
backoff_type          Backoff                  0=Linear,         1  
                                               1=Exponentiell
connect_mode          Verbindungsstatus        0=nein,           1
                                               1=ja
standard_window_size  Standard-Maxframe        1 <= O <= 7       2
extended_window_size  Erweitertes Maxframe     1 <= O <= 63      32
t1_timeout            T1-Timer                 1s <=T1<= 30s     10 s
t2_timeout            T2-Timer                 1s <=T2<= 20s     3 s
t3_timeout            T3-Timer                 0s <=T3<= 3600s   300 s
idle_timeout          Link-Timeout             0min <=idle       20 min
maximum_retry_count   Anzahl Retries (N)       1 <= N <= 31      10
maximum_packet_length AX.25-Paketlnge         1 <=Lnge<= 512   256
-----------------------------------------------------------------------------
In dieser Tabelle sind die Werte fr T1, T2 und T3 in Sekunden, fr
den idle-Timer (Link-Timeout) in Minuten angegeben, es mu aber beachtet
werden, da die Werte in dem sysctl-Interface in internen Einheiten
gezhlt werden. Diese entsprechen der Zeit in Sekunden * 10, so da eine
Schrittweite von 1/10 Sekunde mglich wird. Bei Zeitgebern, die einen Wert
von 0 erlauben (z.B. T3 und idle), bedeutet 0, da sie ausgeschaltet sind.

In /proc/sys/net/netrom finden sich folgende Dateien:

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

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

Dateiname                                     Wert             Voreinstellung
-----------------------------------------------------------------------------
acknowledge_hold_back_timeout                                  50
call_request_timeout                                           2000
clear_request_timeout                                          1800
link_fail_timeout                                              1200
maximum_virtual_circuits                                       50
reset_request_timeout                                          1800
restart_request_timeout                                        1800
routing_control                                                1
window_size                                                    3
-----------------------------------------------------------------------------
Um einen Parameter einzustellen, mu man den gewnschten Wert in die
entsprechende Datei schreiben, um zum Beispiel die Maxframe-Anzahl fr Rose
zu prfen und einzustellen, geht man so vor:

cat /proc/sys/net/rose/window_size

Bildschirmausgabe:

3

echo 4 > /proc/sys/net/rose/window_size
cat /proc/sys/net/rose/window_size

Bildschirmausgabe:

4


6  Einen AX.25-Port einrichten

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

6.1. Das AX.25-Netzwerk-Device erstellen

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

7.1.1. KISS

Optionen bei der Kernel-Compilierung:

General Setup

[*] Networking support

Network Device Support

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

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

Um ein KISS-Device zu erzeugen, wird das Programm kissattach verwendet:

(Annahmen: TNC hngt an /dev/ttyS0 (COM1) und der vorgesehene Port
in /etc/ax25/axports heit radio)

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

Damit wird ein KISS-Netzwerk-Device erzeugt. Diese Devices erhalten die
Namen ax0 - ax9. Beim ersten Aufruf erzeugt kissattach ax0, beim zweiten
ax1 usw. Jedes Kiss-Device hat eine zugehrige serielle Schnittstelle.
Mit 'kissparms' lassen sich verschiedene Parameter des Kiss-Device
einstellen.

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

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 sehr
einfach. Es wird eine serielle Schnittstelle mit dem Multiport-TNC
verbunden und anschlieend so eingerichtet, da sie als mehrere serielle
Schnittstellen, an denen jeweils ein einzelner TNC hngt, erscheint.
Das Ganze mu VOR der AX.25-Konfiguration durchgefhrt werden.
Die Gerte, die dann einzurichten sind, sind Pseudo-TTY-Interfaces,
(/dev/ttyq*) und nicht die eigentliche serielle Schnittstelle.
Mit Pseudo-TTY wird eine Art Rhre (Pipe) erzeugt, durch die Programme, die
mit TTY-Gerten Daten austauschen, mit anderen Programmen, die ebenfalls
fr Datenaustausch mit TTY-Gerten entwickelt wurden, kommunizieren knnen.
Jede dieser Rhren hat ein "Master"- und ein "Slave"-Ende. Die "Master"-Enden
heien /dev/ptyq*, die "Slave"-Enden /dev/ttyq* . Jeder Master hat einen
Slave, /dev/ptyq0 ist also der Master einer Pipe, deren Slave /dev/ttyq0 ist.
Man mu das "Master"-Ende einer Pipe vor dem "Slave"-Ende ffnen.
mkiss nutzt diesen Mechanismus, um ein einzelnes serielles Device in mehrere
aufzuteilen.

Beispiel: Hat man einen Dual-Port-TNC an eine serielle Schnittstelle 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 TNCs behandeln.
Das heit, man verwendet kissattach wie oben beschrieben, fr die
AX.25-Ports port1 und port2. Auf die serielle Schnittstelle selbst kann
kein kissattach angewendet werden, da mkiss diese ja bereits nutzt.
Der Befehl mkiss kennt einige Optionen:

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

-s <Baudrate> stellt die Baudrate der seriellen Schnittstelle ein.
-h  schaltet den Hardware-Handshake ein (Voreinstellung: Aus).
    Wird von den meisten KISS-Implementationen nicht untersttzt.
-l  schaltet eine Mitschrift (logging) in die syslog-Logdatei ein.

6.1.2. BayCom

Folgende Optionen zur Kernel-Compilierung sind wichtig:

Code maturity level options

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

General Setup

[*] Networking support

...
Network Device Support

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

Anmerkung: Fr erste Tests sollte der Treiber mit 'm' als Modul
compiliert werden.

Thomas Sailer (sailer@ife.ee.ethz.ch) entwickelte trotz des weitverbreiteten
Glaubens, es wrde nicht sonderlich gut funktionieren, eine
BayCom-Untersttzung fr LinuX.
Sein Treiber untersttzt die seriellen Ser12, die parallelen Par96 und
die verbesserten PicPar-Modems. Informationen ber diese Modems erhlt man
auf der WWW-Seite des BayCom-Teams <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.
Mit dem Utility sethdlc knnen diese Parameter eingestellt werden, hat man
nur ein BayCom-Modem installiert, so kann man die Parameter auf der
Kommandozeile fr insmod angeben, wenn der als Modul eingerichtete
Treiber geladen wird.
Als Beispiel eine einfache Konfiguration. Zunchst wird der normale
serielle Treiber fr die erste Schnittstelle (COM1) abgeschaltet, dann
der BayCom-Treiber fr ein serielles 1200-Baud-Modem an COM1 eingerichtet
und die Software-DCD eingeschaltet:

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

WICHTIG: Einige Schnittstellenbausteine bereiten Probleme im Zusammenhang
         mit dem BayCom-Treiber. Dieser wird zwar geladen, kann aber nicht
         auf die Schnittstelle zugreifen. Dies betrifft insbesondere viele
         der neueren 16550A-UARTs, wie sie auf Pentium-Motherboards oft
         eingebaut sind. Wer nun keine zustzliche Schnittstellenkarte
         mit 8250 oder 16450 UART vorsehen will, der sollte vor die
         erste setserial-Zeile des Beispiels einfgen:

setserial /dev/ttyS0 uart 16550A skip_test

Damit sollte der Treiber funktionieren, was man mit

sethdlc -d

einfach nachprfen kann. Der Wert hinter 'dbg2' sollte etwa 2000-3000 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 eincompiliert.
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:

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


6.1.3. 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.
Den BayCom-Treiber mit TXDelay 200 ms, SlotTime 100 ms PPersist 40 und
Half-Duplex einrichten:

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

Alle Zeitwerte werden in Millisekunden angegeben.

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

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

/sbin/ifconfig bc0 hw ax25 VK2KTJ up

oder (einige Versionen von ifconfig untersttzen den eben angegebenen Weg
nicht):
/sbin/ifconfig bc0 up
axparms -setcall bc0 VK2KTJ up

Als nchstes wird in der Datei /etc/ax25/axports ein Eintrag fr BayCom
hinzugefgt. Die Verbindung des Eintrags zum entsprechenden Netzwerk-Device
geschieht ber das eingestellte Rufzeichen.
Verwendet ein Programm den Eintrag mit dem fr BayCom vergebenen Rufzeichen,
so wird das BayCom-Device angesprochen.
Das neue AX.25-Device kann nun ganz normal verwendet werden, es lt sich 
fr TCP/IP einrichten, man kann es dem ax25d hinzufgen und NetROM oder
Rose darber laufen lassen.

7.1.4. SoundModem

Folgende Optionen bei der Kernel-Compilierung sind wichtig:

Code maturity level options

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

General Setup

[*] Networking support

Network Device 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 4800 baud HAPN-1 modulation
[?] Soundmodem support 9600 baud FSK G3RUH modulation

Thomas Sailer (sailer@ife.ee.ethz.ch) entwickelte einen neuen Treiber fr den
Kernel, mit dem man die Soundkarte als Modem nutzen kann.
Schliet das Funkgert an die Soundkarte an, um damit Packet zu spielen!
Thomas empfiehlt mindestens einen 486DX2/66, wenn man diese Software
verwenden will, da die gesamte digitale Signalverarbeitung von der CPU
bernommen wird.
Der Treiber kann im Moment 1200 bps AFSK, 4800 bps HAPN und 9600bps FSK
(G3RUH-kompatibel) Modems emulieren. Zur Zeit werden nur SoundBlaster und
Windows Sound System-kompatible Karten untersttzt.
Die Soundkarten bentigen eine kleine Zusatzschaltung zur Ansteuerung der
PTT, Informationen dazu findet man auf Thomas' Soundmodem-PTT-Seite
<http://www.ife.ee.ethz.ch/~sailer/pcf/ptt_circ/ptt.html>.
Es gibt einige Mglichkeiten fr die PTT-Schaltung: die Soundausgabe von der
Karte auswerten oder die Ausgabe von der seriellen, parallelen oder MIDI-
Schnittstelle zu nutzen. Die Webseite bietet fr jede Option
Beispielschaltungen.
Der SoundModem-Treiber erzeugt Netzwerk-Devices mit Namen sm0, sm1, sm2 usw.,
wenn er eingerichtet wurde.
Beachte: Der SoundModem-Treiber beansprucht die gleichen Ressourcen wie der
LinuX-Sound-Treiber. Wenn man also den SoundModem-Treiber verwenden mchte,
darf der LinuX-Sound-Treiber nicht geladen sein. Natrlich lassen sich beide
als Module compilieren, so da sie mit insmod und rmmod nach Belieben geladen
und entfernt werden knnen.
Einige OMs laden zuerst den LinuX-Sound-Treiber, um die Soundkarte zu
initialisieren, enfernen diesen dann wieder und laden dann den SoundModem-
Treiber:

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

6.1.4.1. Die Soundkarte einrichten

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

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

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

setcrystal -s 0x388 -i 10 -d 1

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

setcrystal -w 0x534 -i 5 -d 3

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

6.1.4.2. Den SoundModem-Treiber konfigurieren

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

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

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

Aber es geht auch genau so gut mit sethdlc, das sowohl mit einer Karte als
auch mit mehreren funktioniert:

Zunchst mu auch hier das Modul geladen 

insmod hdlcdrv
insmod soundmodem

oder die SoundModem-Untersttzung in den Kernel eincompiliert 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 schon oben eingerichtete 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.
Beispiel: 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.4.3. Die Audiopegel einstellen und den Treiber feinabstimmen

Es ist fr die Funktion jedes Funkmodems sehr wichtig, da die Audiopegel
korrekt eingestellt sind. Dies gilt ebenso fr das SoundModem.
Thomas hat einige Utilities entwickelt, die diese Aufgabe erleichtern.
Es sind die Programme smdiag und smmixer.

Smdiag bietet zwei Anzeigearten, einmal als Oszilloskop, zum zweiten als
Augenmuster an.
Mit Smmixer kann man die Sende-und Empfangspegel abgleichen.

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

smdiag -i sm0 -e

Smmixer wird fr sm0 so gestartet:

smmixer -i sm0

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

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

/sbin/ifconfig sm0 hw ax25 VK2KTJ up

oder (einige Versionen von ifconfig untersttzen den eben angegebenen Weg
nicht):
/sbin/ifconfig sm0 up
axparms -setcall sm0 VK2KTJ up

Als nchstes wird in der Datei /etc/ax25/axports ein Eintrag fr SoundModem
hinzugefgt. Die Verbindung des Eintrags zum entsprechenden Netzwerk-Device
geschieht ber das eingestellte Rufzeichen.
Verwendet ein Programm den Eintrag mit dem fr SoundModem vergebenen
Rufzeichen, so wird das SoundModem-Device angesprochen.
Das neue AX.25-Device kann nun ganz normal verwendet werden, es lt sich 
fr TCP/IP einrichten, man kann es dem ax25d hinzufgen und NetROM oder
Rose darber laufen lassen.

6.1.5. PI-Karte

Folgende Optionen sind bei der Kernel-Compilierung wichtig:

General Setup

[*] Networking support
               
Network Device 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 compiliert und hat er die Karte korrekt
erkannt, lt er sich einrichten:

/sbin/ifconfig pi0a hw ax25 VK2KTJ up

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

6.1.6. PacketTwin

Folgende Optionen beim Kernelcompilieren:

General Setup

[*] Networking support

Network Device 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 compiliert und hat er die Karte korrekt
erkannt, lt er sich einrichten:

/sbin/ifconfig pt0a hw ax25 VK2KTJ up

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

6.1.7. SCC, allgemein

Wichtige Kernel-Compilier-Optionen:

General Setup

[*] Networking support

Network Device Support

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

Joerg Reuter, DL1BKE (jreuter@lykos.tng.oche.de) entwickelte die allgemeine
Untersttzung fr SCC-Karten. Sein Treiber ist fr eine Vielzahl Karten
konfigurierbar und stellt ein KISS-Interface zur Verfgung, so da man
ihn wie einen KISS-TNC ansprechen kann.

6.1.7.1. Die Konfigurations-Tools finden und installieren

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

db0bm.automation.fh-aachen.de

im Verzeichnis

/incoming/dl1bke/

oder auf

insl1.etc.uni-karlsruhe.de

im Verzeichnis

/pub/hamradio/linux/z8530/

oder bei

ftp.ucsd.edu

in den Verzeichnissen

/hamradio/packet/tcpip/linux
/hamradio/packet/tcpip/incoming

Es gibt verschiedene Versionen, man mu sich die fr seinen Kernel passende
heraussuchen.
Fr Kernel 2.0.xx :          z8530drv-2.4a.dl1bke.tar.gz
Fr Kernel 2.1.6 oder hher: z8530drv-utils-3.0.tar.gz

Mit folgenden Befehlen lt sich das Paket installieren:

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

Nach dem erfolgreichen Compilieren sollten sich drei neue Programme im
Verzeichnis /sbin finden:
gencfg, sccinit und sccstat.
Diese Programme dienen zur Einrichtung des Treibers fr die SCC-Karte.
Weiterhin finden sich im Verzeichnis /dev neue Gertedateien namens scc0 -
scc7. Das sind die KISS-Devices, die man spter nutzt.
Hat man vorhin

make for_kernel

eingegeben, so mu der Kernel neu compiliert 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 compilieren
('make module'), so wurde ein Modul namens scc.o in das entsprechende
Verzeichnis /lib/modules/ kopiert, welches mit insmod geladen werden kann.

6.1.7.2. Den Treiber fr die verwendete Karte einrichten

Der Z8530-SCC-Treiber ist so flexibel entwickelt worden, da er mglichst
viele verschiedene SCC-Karten untersttzt. Der Preis dafr ist eine etwas
kompliziertere Konfiguration.
In dem Treiber-Archiv findet sich eine ausfhrliche Dokumentation, wer
Probleme hat, sollte diese lesen. Insbesondere doc/scc_eng.doc bzw.
doc/scc_ger.doc bieten detailliertere Informationen, die nicht in diesem
HOWTO enthalten sind.
Das Programm sccinit liest die Datei /etc/z8530drv.conf als Haupt-
Konfigurationsdatei aus. Sie ist in zwei groe Abschnitte gegliedert,
Hardware-Parameter und Kanal-Konfiguration.
Nachdem diese Datei entsprechend editiert wurde, mu nur der Aufruf

sccinit

in das Skript, welches die Netzwerkkonfiguration whrend des Systemstarts
vornimmt, eingetragen werden.
Der Treiber lt sich erst nach einem Aufruf von sccinit nutzen.

6.1.7.2.1. Konfiguration der Hardware-Parameter

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

#define MAXSCC 4

entsprechend anpassen.
Erlaubte Schlsselworte und Argumente:

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

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

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

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

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

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

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

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

                PA0HZP          - die PA0HZP-SCC-Karte
                EAGLE           - die EAGLE-SCC-Karte
                PRIMUS          - die PRIMUS-PC (DG9BL-)Karte
                BAYCOM          - die BayCom-(U)SCC-Karte

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

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

special         optional, gibt die Adresse eines speziellen Funktions-
                registers fr manche Karten an. Voreinstellung: 0 .

Einige Beispielkonfigurationen:

BayCom USCC

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

PA0HZP SCC-Karte

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

DRSI-SCC-Karte

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

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

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

eine Grundkonfiguration fr die OptoSCC-Karte.

6.1.7.3. Kanal-Konfiguration

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

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

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

clock           gibt an, aus welcher Quelle der Datentakt stammt.
                Erlaubte Werte sind:
                dpll            normaler Halbduplexbetrieb
                external        Das Modem hat einen eigenen Sende-/
                                Empfangstakt
                divider         verwendet den Fullduplex-Teiler, wenn
                                installiert

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

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

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

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

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

persist         Der Wert fr die Persistence, ganzzahlig.

slot            KISS-Slottime, ganzzahlig, in Millisekunden.

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

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

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

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

maxkey          die maximale Sendezeit bei KISS ganzzahlig, in Sekunden.

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

maxdef          Der Maxdef-Wert bei Kiss, ganzzahlig.

group           Der group-Wert bei KISS, ganzzahlig.

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

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

slip            Das Slip-Flag bei KISS, ganzzahlig.

6.1.7.4. Den Treiber verwenden

Man verwendet die /dev/scc* - Gerte wie serielle Schnittstellen mit
angeschlossenen KISS-TNCs. Beispielsweise kann man das Netzwerk so
fr die SCC-Karte konfigurieren:

kissattach -s 4800 /dev/scc0 VK2KTJ

Ebenso kann man NOS damit verbinden:

attach asy scc0 ax25 scc0 256 256 4800

6.1.7.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 /dev/scc0

Es werden viele Informationen zur Einstellung und Funktion des SCC-Ports
/dev/scc0 angezeigt.
Mit dem Programm sccparam kann man nach dem Booten die Konfiguration
verndern. Die Syntax ist an den NOS-Befehl param angelehnt, zum Setzen des
TXTail-Wertes auf 100 ms wrde man eingeben:

sccparam /dev/scc0 txtail 0x8

6.1.8. BPQ-Ethernet

Folgende Optionen sind bei der Kernel-Compilierung wichtig:

General Setup

[*] Networking support

Network Device Support

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

Linux bietet Kompatibilitt mit BPQ-Ethernet. Damit kann man
das AX.25-Protokoll ber Ethernet im lokalen Netzwerk verwenden, um mit
anderen BPQ-Maschinen im Netzwerk zusammenzuarbeiten.
Die BPQ-Devices tragen die Namen bpq1..bpq9. Das Device bpq0 gehrt zu
eth0, bpq1 zu eth1 usw.
Die Konfiguration ist sehr offen. Zunchst mu das Ethernet-Device
eingerichtet sein. Das heit, der Kernel mu mit Ethernet-Untersttzung
compiliert sein und diese mu auch funktionieren. Im Ethernet-HOWTO
<http://sunsite.unc.edu/LDP/HOWTO/Ethernet-HOWTO.html> findet man dazu
weiterfhrende Informationen.
Um die BPQ-Untersttzung einzurichten, mu das Ethernet-Device mit einem
Rufzeichen versehen werden:

/sbin/ifconfig bpq hw ax25 VK2KTJ up

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


6.1.9. BPQ-Node mit LinuX-AX.25-Untersttzung

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

LINK SUPPORT

        MAX STACKS 1
        MAX BOARDS 1

LINK DRIVER E2000               ; oder anderer Bezeichner, passend zur Karte

        INT  10                 ; entsprechend den Einstellungen der
        PORT 300                ; Netzwerkkarte


        FRAME ETHERNET_II

        PROTOCOL BPQ 8FF ETHERNET_II  ; fr BPQ erforderlich - kann die PID
                                      ; verndern

BPQPARAMS                             ; optional, nur gebraucht, wenn
                                      ; die voreingestellte Zieladresse
                                      ; berschrieben werden soll
        ETH_ADDR FF:FF:FF:FF:FF:FF    ; Zieladresse


6.2. Die Datei /etc/ax25/axports

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

Portname      Rufzeichen    Baudrate   Paketlnge   Maxframe   Beschreibung

Portname        - Bezeichner fr den Port
Rufzeichen      - Rufzeichen, welches dem Port zugeordnet werden soll
Baudrate        - Baudrate zum TNC
Paketlnge      - Lnge des Datenfeldes eines Paketes in Bytes
Maxframe        - maximale Anzahl unbesttigter Pakete (AX.25-Window)
Beschreibung    - kurzer beschreibender Text

Beispieldatei von Terry Dawson:

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

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

6.3. Das AX.25-Routing einrichten

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

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

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


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

Es ist sehr einfach, einen AX.25-Port fr TCP/IP einzurichten. Fr KISS-
Interfaces gibt es zwei Mglichkeiten, eine IP-Adresse einzurichten.
Die konventionellere Methode mit dem Befehl ifconfig funktioniert mit allen
Interface-Typen.
Fr KISS als 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
von 512 Bytes erzeugt. Wenn notwendig, knnen mit dem ifconfig-Befehl
weitere Parameter eingestellt werden.
Wer ein anderes Interface verwendet, nutzt ifconfig zum Einstellen von
IP-Adresse und Netmask und fgt die Route ber den Port hinzu, wie fr
jedes andere TCP/IP-Interface auch. Das folgende Beispiel ist fr eine
PI-Karte gedacht, funktioniert aber auch mit jedem anderen
AX.25-Netzwerk-Device:

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

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

ping -i 5 44.136.8.58

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

8  Einen NetROM-Port einrichten

NetROM basiert auf den vorher erstellten AX.25-Ports. Es setzt auf
dem AX.25-Protokoll auf. Um ein NetROM-Interface auf einem AX.25-Port
einzurichten, mssen zwei Dateien angepat werden.
Eine Datei beschreibt die NetROM-Interfaces, und die andere, auf welche
AX.25-Ports NetROM aufsetzt.
Man kann mehrere NetROM-Ports einrichten, fr jeden ist die Vorgehensweise
die gleiche.

8.1. Die Datei /etc/ax25/nrports

Die erste der beiden Dateien heit /etc/ax25/nrports. Sie beschreibt die
NetROM-Ports in etwa der gleichen Art wie /etc/ax25/axports die AX.25-Ports.
Jedes NetROM-Device braucht seinen Eintrag in /etc/ax25/nrports .
Normalerweise wird es auf einer LinuX-Maschine nur ein NetROM-Device geben,
das eine definierte Anzahl von AX.25-Ports nutzt. Manchmal will man aber
einem besonderen Programm, wie einer Mailbox, ein separates NetROM-Alias
vergeben. Dann kann man auch mehrere NetROM-Devices einrichten.

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

Name   Rufzeichen   Alias   Paketlnge   Beschreibung

Name            - Der Bezeichner fr den Port.
Rufzeichen      - Das Rufzeichen, welches fr den NetROM-Verkehr verwendet
                  wird. Dies ist NICHT das Rufzeichen, das andere Stationen
                  als Nodecall verwenden knnen. (Zu dem Node-Programm
                  spter.) Es sollte nicht noch einmal in /etc/ax25/axports
                  oder /etc/ax25/nrports auftauchen.
Alias           - der NetROM-Alias fr diesen Port.
Paketlnge      - Die maximale Gre der NetROM-Pakete.
Beschreibung    - Eine kurze Beschreibung fr den Port.

Ein Beispiel she so aus:

netrom  VK2KTJ-9    LINUX   236   Linux Packet Switch

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

8.2. Die Datei /etc/ax25/nrbroadcast

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

axport   min_obs  def_qual  worst_qual  verbose

Wobei gilt:

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

min_obs         - Minimalwert fr die Obsolescence.
def_qual        - Voreingestellte Qualitt fr den Port.
worst_qual      - Wert fr die schlechteste Verbindungsqualitt, Verbindungen
                  mit schlechteren Werten werden ignoriert.
verbose         - Legt fest, ob NetROM auf diesem Port Routing-Broadcasts
                  sendet oder nur auf sich selbst hinweist.

Ein Beispiel she so aus:

radio  1  200  100  1


8.3. Das Netzwerk-Device fr NetROM erstellen

Sind die beiden Konfigurationsdateien vervollstndigt, dann mu das
NetROM-Netzwerk-Device genau so wie die anderen AX.25-Devices erstellt
werden. Diesmal wird dazu der Befehl nrattach verwendet. Dieser arbeitet
wie axattach, im Unterschied zu diesem erzeugt er NetROM-Netzwerk-Devices
mit den Namen nr0 .. nr9. Beim ersten Aufruf erzeugt nrattach das Device nr0,
beim zweiten nr1 usw. Um das Netzwerk-Device fr den von uns definierten
NetROM-Port zu erzeugen, geben wir ein:

nrattach netrom

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

8.4. Den NetROM-Daemon starten

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

/usr/bin/netromd -i

Schon bald darauf sollte man sehen, wie sich die Datei /proc/net/nr_neigh
mit den Namen der benachbarten NetROM-Stationen fllt
('cat /proc/net/nr_neigh').
Man sollte den netromd-Aufruf in die whrend des Startens ausgefhrten
Skripte einfgen, damit er automatisch beim Booten gestartet wird.

8.5. Das NetROM-Routing einrichten

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

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

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

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

Damit wird VK2SUT-9 als benachbarte NetROM-Station mit einer Qualitt von
120 eingetragen, was fixiert und nicht automatisch gelscht wird.

9  Ein NetROM-Interface fr TCP/IP einrichten

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

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

Oder man benutzt die folgenden Befehle:

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

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

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

Die Werte '120' und '6' beim nrparms-Befehl sind die Werte fr die NetROM-
Qualitt und Obsolescence fr diese Route.


10  Einen Rose-Port einrichten

Die Rose-Protokollebene entspricht der Ebene 3 der X.25-Spezifikation.
Die im Kernel enthaltene Rose-Untersttzung ist eine modifizierte Version
der FPAC-Rose-Implementation <http://fpac.lmi.ecp.fr/f1oat/f1oat.html>.
Das Rose-Protokoll setzt auf den vorher erstellten AX.25-Ports auf.
Um Rose einzurichten, mu man eine Konfigurationsdatei erstellen, die die
zu verwendenden Rose-Ports definiert. Man kann mehrere Rose-Ports erstellen,
fr jeden gilt die gleiche Vorgehensweise.

10.1. Die Datei /etc/ax25/rsports

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

Name   Adresse   Beschreibung

Wobei gilt:

Name            - Text-Bezeichner fr den jeweiligen Port
Adresse         - 10 stellige Rose-Adresse fr den Port
Beschreibung    - kurze, frei whlbare Beschreibung

Ein Beispiel:

rose  5050294760  Rose-Port

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

/usr/sbin/rsparms -call VK2KTJ-10

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

10.2. Das Rose-Netzwerk-Device einrichten

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

rsattach rose

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

10.3. Das Routing fr Rose einrichten

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

rsparms -nodes add 5050295502 radio vk2xlz

Damit wrde eine Route zum Rose-Node 5050295502 ber den AX.25-Port mit dem
Bezeichner 'radio' laut /etc/ax25/axports zu einer benachbarten Station
mit dem Rufzeichen VK2XLZ hinzugefgt.
Es kann auch eine Maske angegeben werden, um mehrere Rose-Zielrechner in
einem Routing-Eintrag zu erfassen:

rsparms -nodes add 5050295502/4 radio vk2xlz

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

rsparms -nodes add 5050/4 radio vk1xlz

11  AX.25/NetROM/Rose-Rufe

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

/usr/bin/call radio VK2DAY via VK2SUT

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

/usr/bin/call netrom SUNBBS

Ein einfacher Rose-Ruf an HEARD auf dem Node 5050882960 she so aus:

/usr/bin/call rose HEARD 5050882960

Beachte: Man mu call mitteilen, auf welchem Port gerufen werden soll, da
der Zielrechner mglicherweise auf allen eingerichteten Ports erreichbar ist.
Das Programm call ist ein zeilenbasiertes Terminalprogramm, mit dem man
AX.25-Stationen rufen kann. Zeilen, die mit einem '~' beginnen, werden als
Befehle interpretiert. Mit Eingabe von '~.' am Beginn einer neuen Zeile
beendet man die Verbindung.
Weiterfhrende Informationen findet man in der Hilfeseite zu call.


12  LinuX fr ankommende Packet-Verbindungen einrichten

LinuX ist ein mchtiges Betriebssystem und bietet groe Flexibilitt bei der
Konfiguration. Dadurch wird es etwas langwieriger, es so einzurichten, da
es das tut, was man will.
Wenn man eine LinuX-Maschine fr die Entgegennahme von ankommenden AX.25-
NetROM- und Rose-Rufen einrichtet, mu man sich einige Fragen stellen.
Die wichtigste davon ist: "Was sollen die Nutzer zu sehen bekommen, wenn
sie verbunden sind?"
Es werden hbsche kleine Anwendungen entwickelt, die dazu verwendet werden
knnen, den Anrufern bestimmte Dienste anzubieten. Ein einfaches Beispiel
ist das in den AX.25-Utilities enthaltene Programm pms, etwas komplexer ist
das ebenfalls dort vorhandene node-Programm. Als Alternative kann man den
Nutzern einen Login-Prompt geben, so da sie einen Shell-Account nutzen
knnen, oder man hat sogar ein eigenes Programm, wie eine Datenbank oder
ein Spiel, geschrieben, mit dem sich die Nutzer verbinden knnen.
Was auch immer gewnscht wird, man mu es der AX.25-Software mitteilen,
damit diese wei, welches Programm bei einer hereinkommenden Verbindung
gestartet werden soll.
Das Programm ax25d entspricht dem blicherweise zur Entgegennahme von
TCP/IP-Verbindungen auf UNIX-Maschinen eingesetzten inetd.
Es wartet auf hereinkommende Verbindungen, wenn es eine erkennt,
schaut es in einer Konfigurationsdatei nach, welches Programm zu starten
und mit dieser Verbindung zu assoziieren ist.
Da der ax25d das Standardwerkzeug fr die Entgegennahme von AX.25-, NetROM-
und Rose-Verbindungen ist, soll hier die Konfiguration erlutert werden.

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

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

# Dieser Kommentar wird vom ax25d ignoriert.
[port_name] || <port_name> || {port_name}
<peer1>  window T1 T2 T3 idle N2 <mode> <uid> <cmd> <cmd_name> <arguments>
<peer2>  window T1 T2 T3 idle N2 <mode> <uid> <cmd> <cmd_name> <arguments>
parameters window T1 T2 T3 idle N2 <mode>
<peer3>  window T1 T2 T3 idle N2 <mode> <uid> <cmd> <cmd_name> <arguments>
...
default  window T1 T2 T3 idle N2 <mode> <uid> <cmd> <cmd_name> <arguments>

Wobei gilt:

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

port_name       - der Name des AX.25-, NetROM- oder Rose-Ports, wie er in
                  /etc/ax25/axports, /etc/ax25/nrports respektive
                  /etc/ax25/rsports definiert ist.
peer            - Das Rufzeichen der Station, auf die sich die
                  Konfiguration bezieht. Wird hier keine SSID angegeben, so
                  sind alle SSID gltig.
window          - Der AX.25-Window-Parameter (Maxframe) fr diese
                  Konfiguration.
T1              - Der Timer T1 (Zeit bis zum Wiederaussenden eines Paketes)
                  in halben Sekunden.
T2              - Der Timer T2 (Zeit, die auf eine weiteres Paket gewartet
                  wird, bevor Empfangsbesttigung gesendet wird) in Sekunden.
T3              - Zeit, die die Verbindung inaktiv sein darf, bevor sie
                  getrennt wird in Sekunden.
idle            - Der Idle-Timer-Wert in Sekunden
N2              - Anzahl Versuche (retries), bevor eine Verbindung als
                  gescheitert betrachtet wird.
mode            - legt einige allgemeine Zugriffsrechte fest. Die Modes
                  werden ein-/ausgeschaltet, indem eine Reihe von Zeichen
                  angegeben werden, von denen jedes fr ein bestimmtes
                  Zugriffsrecht steht. Die Buchstaben drfen gro- oder
                  klein geschrieben werden und drfen nicht durch Leerzeichen
                  getrennt werden.
                  Folgende Zeichen sind mglich:
                  u/U   - UTMP - zur Zeit nicht untersttzt
                  v/V   - Validiere alles - zur Zeit nicht untersttzt
                  q/Q   - Quiet - schreibe Verbindung nicht mit
                  n/N   - berprfe NetROM-Nachbar - zur Zeit nicht
                          untersttzt
                  d/D   - Digipeater nicht erlaubt, Verbindungen mssen
                          direkt erfolgen, nicht ber Digipeater.
                  l/L   - Aussperren (Lockout) - keine Verbindung erlaubt.
                  */0   - Marker - Platzhalter, kein Mode gesetzt
uid             - Die Nutzerkennung (User ID) unter der das fr die
                  Verbindung aufgerufene Programm laufen soll.
cmd             - der volle Pfadname des aufzurufenden Programms, ohne
                  Kommandozeilenparameter
cmd_name        - Text, der beim Aufrufen von ps (Anzeige des Prozestatus)
                  erscheinen soll, normalerweise dasselbe wie cmd, aber
                  ohne die Pfadangabe
arguments       - Kommandozeilenparameter, die der in cmd angegebenen
                  Anwendung beim Start bergeben werden. Folgende Krzel
                  knnen dazu verwendet werden:
                  %d    - Name des Ports, auf dem die Verbindung eingegangen
                          ist
                  %U    - AX.25-Rufzeichen der verbundenen Station ohne SSID,
                          in Grobuchstaben.
                  %u    - AX.25-Rufzeichen der verbundenen Station ohne SSID,
                          in Kleinbuchstaben.
                  %S    - AX.25-Rufzeichen der verbundenen Station mit SSID,
                          in Grobuchstaben.
                  %s    - AX.25-Rufzeichen der verbundenen Station mit SSID,
                          in Kleinbuchstaben.
                  %P    - AX.25-Rufzeichen des Nodes, von dem die Verbindung
                          kam ohne SSID, in Grobuchstaben.
                  %p    - AX.25-Rufzeichen des Nodes, von dem die Verbindung
                          kam ohne SSID, in Kleinbuchstaben.
                  %R    - AX.25-Rufzeichen des Nodes, von dem die Verbindung
                          kam mit SSID, in Grobuchstaben.
                  %r    - AX.25-Rufzeichen des Nodes, von dem die Verbindung
                          kam mit SSID, in Kleinbuchstaben.

Fr jedes AX.25-, NetROM- oder Rose-Interface, auf dem Verbindungen
entgegengenommen werden sollen, mu ein Abschnitt in diesem Format
vorgesehen werden.
In jedem Abschnitt gibt es zwei besondere Zeilen, eine beginnt mit dem
Wort 'parameters', die andere mit 'default'. (Ja, das ist ein Unterschied.)
Diese Zeilen dienen speziellen Funktionen.
Der Zweck der default-Zeile drfte klar sein, diese Zeile enthlt die
Parameter, die auf alle Stationen zutreffen, fr die keine speziellen
Parameter definiert wurden. Wird keine default-Zeile angegeben, so werden
alle Verbindungen, fr die keine speziellen Voreinstellungen getroffen
wurden, sofort wieder getrennt.
Die parameters-Zeile ist ein wenig kritischer, hier ist auch die vorhin
erwhnte Falle. In jedem der Felder fr alle aufgefhrten Stationen kann
das '*'-Zeichen benutzt werden, um den voreingestellten Wert zu bernehmen.
Die parameters-Zeile setzt diese Voreinstellungen. Die Kernel-Software
selbst hat einige Voreinstellungen, die dann verwendet werden, wenn die
keine Voreinstellungen unter 'parameters' angegeben sind.
Die Falle besteht nun darin, da die Parameters-Werte nur fr die
darunterliegenden Zeilen gelten, nicht fr die darberstehenden.
Man kann mehrere parameters-Zeilen pro Interface-Definition haben und
somit Gruppen von Stationen mit gleichen Voreinstellungen einrichten.

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


# ax25d.conf for VK2KTJ - 02/03/97
# Diese Konfiguration nutzt den vorher definierten AX.25-Port.

# <peer> Win T1  T2  T3  idl N2 <mode> <uid> <exec> <argv[0]>[<args....>]

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

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


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

Jeder, dessen Rufzeichen auf 'NOCALL' eingestellt ist, soll ausgesperrt
bleiben, beachte die Verwendung des Mode 'L'.
Die parameters-Zeile ndert zwei der Kernel-Voreinstellungen (Window und T1)
und startet das axspawn-Programm fr die Nutzer.
Alle auf diese Weise gestarteten axspawn erscheinen in der Ausgabe des
Befehls ps als "axspawn" zum besseren Verstndnis. Die nchsten beiden
Zeilen definieren fr zwei Stationen, da fr sie diese Einstellungen
gelten.
Die defaults-Zeile dient als "Sammelbecken" fr alle anderen Stationen
(auch VK2XLZ und VK2DAY, wenn sie eine andere SSID als -1 verwenden).
Hier werden alle Parameter implizit gesetzt und das Programm pms mit einer
Kommandozeile aufgerufen, die anzeigt, da es von einer AX.25-Verbindung
aufgerufen wurde und das Rufzeichen des Eigentmers VK2KTJ ist.
(Siehe den Abschnitt 'Das PMS (Personal Message System) einrichten' fr
weitere Details.)
Die nchste Konfiguration nimmt Rufe an VK2KTJ-1 ber den Port 'radio'
entgegen.
Sie startet das Programm node fr alle Stationen, die eine Verbindung zu
VK1KTJ-1 aufbauen.
Anschlieend folgt eine NetROM-Konfiguration, man beachte die Verwendung
der '<>'-Klammern anstelle eckiger Klammern '[]'. Damit wird eine
NetROM-Konfiguration markiert. Sie ist einfacher, da nur festgelegt wird,
da fr jede Station, die eine Verbindung zu dem Port 'netrom' aufgebaut hat,
das Programm node gestartet wird. Stationen mit Rufzeichen NOCALL werden
ausgesperrt.
Die letzten beiden Konfigurationen betreffen hereinkommende Rose-
Verbindungen. Die erste ist fr Stationen, die VK2KTJ-0 gerufen haben, und
die zweite fr Verbindungen mit VK2KTJ-1, dem Rose-Node. Sie funktionieren
genau gleich. Man beachte die Verwendung von geschweiften Klammern '{}',
um die Konfiguration als Rose-Konfiguration zu kennzeichnen.
Das Beispiel hier ist frei erfunden, doch es sollte die wichtigen
Eigenschaften und Mglichkeiten der Syntax der Konfigurationsdatei aufzeigen.
In der Hilfeseite zu ax25d wird die Konfigurationsdatei vollstndig erklrt.
Ein detaillierteres und sicher ebenfalls ntzliches Beispiel ist in dem
Archiv der AX.25-Utilities enthalten.

12.3. Den ax25d starten

Ist die Konfigurationsdatei vervollstndigt, startet man den ax25d:

/usr/sbin/ax25d

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

13  Die Node-Software einrichten

Die Node-Software wurde von Tomi Manninen (tomi.manninen@hut.fi) entwickelt
und basiert auf dem Original-PMS-Programm. Es stellt eine vollstndige und
flexible Node-Funktion zur Verfgung, die man einfach eirichten kann.
Das Programm erlaubt den verbundenen Nutzern, Telnet-, NetROM-, Rose- und
AX.25-Verbindungen aufzubauen und bestimmte Informationen zu erhalten, wie
Finger, Nodes und Heard-Listen usw. Der Node kann sehr einfach so eingestellt
werden, da er jedes gewnschte LinuX-Kommando ausfhren kann.
Das Programm node wird normalerweise vom ax25d aufgerufen, kann aber auch vom
inetd gestartet werden, um Nutzern Zugriff via Telnet zu ermglichen.
Auch ein Aufruf von der Kommandozeile ist mglich.

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

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

# /etc/ax25/node.conf
# Konfigurationsdatei fr das Programm node.
#
# Zeile, die mit einem '#' beginne, sind Kommentare und werden vom
# Programm ignoriert.

# Hostname
# Gibt den Rechnernamen der Node-Maschine an
hostname        radio.gw.vk2ktj.ampr.org

# Local Network
# hier kann man einstellen, was als 'Lokal' gilt, wichtig fr
# Zugriffsrechte in nodes.perms
localnet        44.136.8.96/29

# Hidden Ports
# Die hier angegebenen Ports sind fr Nutzer unsichtbar Sie werden
# vom Befehl (P)orts nicht ausgegeben.
hiddenports     rose netrom

# Callserver
# Wenn eingestellt, wied ein Callserver zur Verfgung gestellt
callserver      zone.oh7rba.ampr.org

# Node-Identifikation.
# Dieser Text erscheint im Node-Prompt
NodeId          LINUX:VK2KTJ-9

# NetRom port
# Name des fr vom Node ausgehende NetROM-Verbindungen verwendeten
# NetROM-Ports
NrPort          netrom

# Node Idle Timeout
# Gibt an, nach welcher Zeit der Inaktivitt eine Verbindung vom Node
# beendet wird (in Sekunden)
idletimout      1800

# Connection Idle Timeout
# Gibt an, nach welcher Zeit der Inaktivitt eine Verbindung, die ber
# den Node luft, beendet wird (in Sekunden)
conntimeout     1800

# Reconnect
# Gibt an, ob die Nutzer zum Node zurckverbunden werden sollen, wenn
# die abgehende Verbindung getrennt wurde (reconnect) oder ob sie
# vollstndig vom Node getrennt werden sollen
reconnect       on

# Command Aliases
# Eine Mglichkeit, komplexe Befehle einfacher zu gestalten
alias           CONV    "telnet vk1xwt.ampr.org 3600"
alias           BBS     "connect radio vk2xsb"

# External Command Aliases
# Mglichkeit, externe Befehle unter node ausfhren zu knnen
# extcmd <cmdname> <flag> <userid> <command>
# Nur Flag == 1 ist implementiert
# <command> hat das gleiche Format wie in der Datei /etc/ax25/ax25d.conf
extcmd          PMS     1       root    /usr/sbin/pms pms -u %U -o VK2KTJ

# Logging
# Mitschriften ins System-Log.
# 3 - ausfhrlichste Form, 0 - ausgeschaltet
loglevel        3

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

Das Programm node erlaubt, einzelnen Nutzern Zugriffsrechte zuzuteilen.
Diese erlauben festzulegen, welche Nutzer beispielsweise Befehle wie
(T)elnet oder (C)onnect ausfhren drfen und welche nicht.
Diese Information wird in der Datei /etc/ax25/node.perms abgelegt, welche
fnf Felder enthlt. In allen Feldern ist der Stern '*' das Zeichen dafr,
da alle mglichen Optionen fr das jeweilige Feld gelten sollen.
Das ist ntzlich, wenn man Standard-Festlegungen treffen will.

Die einzelnen Felder:

user            - Das Rufzeichen des Nutzers, fr den die folgenden
                  Regelungen gelten sollen. SSID-Werte werden ignoriert,
                  man sollte also nur das Rufzeichen angeben.
method          - Fr jedes Protokoll oder Zugriffsmethode gibt es auch
                  Zugriffsrechte. Beispielsweise kann man Nutzern, die
                  ber AX.25 oder NetROM verbunden sind, erlauben, die
                  (C)onnect-Option zu verwenden, diese aber anderen, die
                  z.B. ber telnet eingeloggt sind, verwehren.
                  Man kann hier also festlegen, fr welches Protokoll die
                  Zugriffsrechte gelten sollen:

                  Methode       Beschreibung
                  -------------------------------------------------------
                  ampr          Nutzer ist ber eine AMPR-Adresse
                                via Telnet verbunden
                  ax25          Nutzer ist ber AX.25 verbunden
                  host          Node wurde von der Kommandozeile gestartet
                  inet          Nutzer ist von einer nicht-lokalen, nicht-
                                AMPR-Adresse aus verbunden
                  local         Nutzer ist von einem 'lokalen' Rechner aus
                                verbunden
                  netrom        Nutzer ist ber NetROM verbunden
                  rose          Nutzer ist ber Rose verbunden
                  *             Alle mglichen Verbindungsarten

port            - Fr AX.25-Nutzer lassen sich Zugriffsrechte auch auf der
                  Basis des verwendeten Ports festlegen. Damit kann man
                  definieren, was AX.25-Nutzer in Abhngigkeit von dem
                  Port, ber den sie verbunden sind, tun drfen.
                  Im dritten Feld steht bei dieser Mglichkeit dann der
                  Portname. Das Ganze ist nur fr AX.25-Verbindungen sinnvoll.
password        - Optional kann man den Node so einstellen, da er die Nutzer
                  nach einem Pawort fragt. Das kann sinnvoll sein, um Nutzer
                  mit vielen Zugriffsrechten zu schtzen. Das Pawort steht
                  dann im vierten Feld der Datei.
permissions     - Zugriffsrechte. Dieses Feld ist das letzte bei jedem
                  Eintrag in /etc/ax25/node.perms.
                  Es ist als Bit-Feld codiert, wobei jede Option einem
                  Bit entspricht, das diese einschaltet, wenn es gesetzt
                  ist, und ausschaltet, wenn es nicht gesetzt ist.
                  Hier eine Liste der steuerbaren Optionen und ihrer Bitwerte:

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

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

Die Datei node.perms knnte also etwa so aussehen:

# etc/ax25/node.perms
#
# Der Nodebetreiber ist VK2KTJ, sein Paort ist "secret"
# und er hat alle Zugriffsrechte bei allen Verbindungsarten
vk2ktj  *       *       secret  255

# Folgende Nutzer drfen keine Verbindungen aufbauen
NOCALL  *       *       0
PK232   *       *       0
PMS     *       *       0

# INET-Nutzer drfen keine Verbindungen aufbauen
*       inet    *       0

# AX.25-, NetROM, lokale, Host- und AMPR-Nutzer knnen (C)onnects
# und (T)elnet-Verbindungen zu anderen lokalen und AMPR-Rechnern,
# jedoch nicht zu anderen IP-Adressen aufbauen
*       ax25    *       *       159
*       netrom  *       *       159
*       local   *       *       159
*       host    *       *       159
*       ampr    *       *       159

13.3. node vom ax25d aus starten

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

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

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

13.4. node vom inetd aus starten

Es ist leicht mglich, den Node auch von einer Telnet-Verbindung aus zu
nutzen.
Zunchst ist festzulegen, zu welchem Port die die Nutzer ihre Verbindung
aufbauen sollen. Im Beispiel wurde willkrlich Port 3694 gewhlt,
Informationen darber, wie man den Telnet-Daemon durch node ersetzen kann,
finden sich in Tomi's Dokumentation.
Zwei Dateien sind anzupassen.

Der Datei /etc/services fgt man hinzu:

node    3694/tcp        # OH2BNS's Node-Programm

und in /etc/inetd.conf kommt zustzlich:

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

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

14  axspawn einrichten

axspawn ist ein einfaches Programm, das anrufenden AX.25-Stationen den
Login auf die eigene Maschine erlaubt. Es kann vom ax25d in gleicher Weise
wie node gestartet werden. Um einem Nutzer ein Login auf die eigene Maschine
zu erlauben, mu der Datei /etc/ax25/ax25d.conf eine Zeile hnlich dieser
hinzugefgt werden:

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

Endet diese Zeile mit einem '+', so mu der jeweilige Nutzer Return drcken,
bevor er sich einloggen darf. Voreingestellt ist, da nicht auf das Return
gewartet wird. Fr alle dieser Zeile folgenden Konfigurationen wird axspawn
gestartet.
axspawn prft, ob das auf der Kommandozeile bergebene Rufzeichen gltig ist,
entfernt dann eine etwaige SSID und schaut in /etc/passwd nach, ob der
betreffende Nutzer einen Account besitzt. Gibt es einen Account , und das
Pawort ist entweder "" (nichts) oder "+", dann ist der Nutzer eingeloggt,
steht etwas im Pawort-Feld, so wird der Nutzer nach einem Pawort gefragt.
Gibt es keinen Account fr den Nutzer, so kann axspawn so eingestellt werden,
da es automatisch einen einrichtet.
Achtung: Bei Distributionen, die mit dem sog. Password-Shadowing arbeiten,
bei denen das Pawort also nicht in /etc/passwd steht, kann es mit dem
autmatischen Anlegen von Nutzer-Accounts Probleme geben. In diesem Fall
ist es gnstiger, fr alle nicht speziell definierten Nutzer eine Art
Gast-Account vorzusehen, auf den jeder von ihnen zugreifen kann.

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

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

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

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

Folgende acht Charakteristika von axspawn knnen eingestellt werden:

create          - wenn auf 'yes' gesetzt, versucht axspawn, einen
                  Account fr alle Nutzer, die noch nicht in /etc/passwd
                  aufgefhrt sind, zu erzeugen.
guest           - Dieses Feld bezeichnet den Loginnamen, der verwendet
                  wird, wenn create auf 'no' gestellt ist. Im Normalfall
                  ist das 'guest' oder 'ax25'.
group           - bezeichnet den Gruppennamen, der fr neu (create)
                  angelegte Nutzer-Accounts verwendet wird.
first_uid       - Nummer der ersten Benutzerkennung (User-ID), die fr
                  mit create neu angelegte Nutzer-Accounts verwendet werden
                  soll.
max_uid         - Hchste fr Benutzerkennungen von mit create angelegten
                  Accounts zu vergebende Zahl
home            - Home-(Login-)Verzeichnis fr neu angelegte Nutzer-Accounts
shell           - die fr die neu angelegten Accounts zu verwendende
                  Login-Shell
associate       - legt fest, ob herausgehende Verbindungen von den Nutzern
                  unter dem Nutzer-Rufzeichen oder dem der eigenen Station
                  laufen sollen.


15  Das PMS (Personal Message System) einrichten

Das Programm pms ist eine Implementation eines einfachen Personal Message
Systems. Es wurde von Alan Cox geschrieben und von Dave Brown, NR2JT#
(dcb@vectorbd.com) weiter verbessert.
Zur Zeit ist das Programm noch sehr einfach, es erlaubt nur, Mitteilungen an
den Eigentmer des Systems zu richten und einige begrenzte
Systeminformationen abzufragen. Dave arbeitet daran, die Mglichkeiten des
Programms zu erweitern.
Es gibt einige Dateien, die man erzeugen sollte, um den Nutzern einige
Informationen ber das eigene System zu geben. Weiterhin mssen der Datei
/etc/ax25/ax25d.conf die entsprechenden Eintrge hinzugefgt werden, um
das PMS den Nutzern zur Verfgung zu stellen.

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

Diese Datei enthlt den "Spruch des Tages" (Message Of The Day), den
die Nutzer nach Aufbau der Verbindung und Empfang des blichen BBS-ID-
Headers lesen knnen. Es ist eine einfache Textdatei, deren Inhalt an die
Nutzer gesendet wird.

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

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

15.3. AX.25-Rufzeichen Systembenutzern zuordnen

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

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

Dies ist sehr einfach. Eine Sache mu aber beachtet werden:
Dave hat fr pms Kommandozeilenparameter vorgesehen, damit dieses
verschiedene Konventionen fr die Zeilenendmarkierung verarbeiten kann.
AX.25 und NetROM erwarten die Zeilenendmarkierung als
Carriage Return+Linefeed (CR+LF), whrend unter Unix ein New Line Standard
ist.
Will man also beispielsweise einen Eintrag in /etc/ax25/ax25d.conf vorsehen,
der fr jede auf einem AX.25-Port hereinkommende Verbindung das PMS startet,
so fgt man etwa eine solche Zeile hinzu:

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

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

15.5 Das PMS testen

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

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

An Stelle von 'vk2ktj' gibt man sein eigenes Rufzeichen an.
PMS wird gestartet, es verwendet die unter UNIX bliche Zeilenendemarkierung
und der eingeloggte Nutzer ist hier vk2ktj. Jetzt kann man alle Befehle, die
den verbundenen Nutzern zur Verfgung stehen, ausprobieren.
Zustzlich kann man eine andere Station bitten, sich mit der eigenen zu
verbinden, um zu prfen, ob die Einstellungen in /etc/ax25/ax25d.conf
funktionieren.


16  Die user_call - Programme einrichten

Die user_call-Programme heien in Wirklichkeit ax25_call und netrom_call.
Es sind sehr einfache Programme, die fr den Aufruf durch den ax25d vorgesehen
sind und Netzwerkverbindungen zu entfernten Rechnern automatisieren sollen.
Natrlich knnen sie auch von Shellskripts oder anderen Programmen, wie node,
aufgerufen werden.
Die Programme sind hnlich wie das Programm call: Sie verndern die Daten
nicht, man mu selbst entscheiden, was mit ihnen geschehen soll.
Zunchst ein Beispiel fr die Verwendung. Angenommen, man habe ein kleines
Netzwerk zu Hause und man habe eine LinuX-Maschine als Funk-Gateway und
einen BPQ-Node, ber Ethernet mit dieser verbunden.
Im Normalfall mten Nutzer ber Funk die LinuX-Maschine als Digipeater
verwenden oder eine Verbindung zum Node-Programm aufbauen und sich von da
aus weiterverbinden lassen, wenn sie den BPQ-Node erreichen wollten.
Dies kann durch das Programm ax25_call erleichtert werden, wenn es durch
ax25d aufgerufen wird.
Angenommen, der BPQ-Node habe das Rufzeichen VK2KTJ-9 und die LinuX-Maschine
habe den AX.25/Ethernet-Port namens bpq sowie einen Funk-Port namens radio.
Mit einem Eintrag in /etc/ax25/ax25d.conf

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

erlaubte man Nutzern eine direkte Verbindung zu VK2KTJ-1 und damit zum 
LinuX-AX.25-Daemon, der dann automatisch auf eine AX.25-Verbindung
zu VK2KTJ-9 ber das Interface bpq schalten wrde.
Es gibt eine Menge mglicher Konfigurationen. Die Programme netrom_call
und rose_call funktionieren analog zu ax25_call. Ein Funkamateur verwendete
dieses Utility, um Verbindungen zu einer entfernten Mailbox leichter
aufbauen zu knnen. Im Normalfall hatten die Nutzer eine lange Zeichenkette
zum Aufbau der Verbindung einzugeben. Deshalb erzeugte er einen Eintrag,
der die Box als im lokalen Netzwerk befindlich erscheinen lie und
bertrug ax25d und ax25_call den weiteren Verbindungsaufbau (Proxy-Prinzip).


17  Die Befehle zum Rose-Up- und -Downlink einrichten

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

c vk5xxx v vk2ktj-5 5050 882960

Die entfernte Station VK5XXX wrde dann eine unter dem Rufzeichen des
lokalen Nutzers ber das Rufzeichen des entfernten Rose-Nodes (via)
hereinkommende Verbindung erkennen.
Diese Funktionen werden bei der Rose-Implementation unter LinuX nicht
vom Kernel untersttzt, es gibt zwei Programme namens rsuplnk und
rsdownlnk dafr.

17.1. Einen Rose-Downlink einrichten

Damit die eigene LinuX-Maschine hereinkommende Rose-Verbindungen annimmt
und entsprechend an das gewnschte Zielrufzeichen weiterleitet, mu
der Datei /etc/ax25/ax25d.conf ein Eintrag hinzugefgt werden.
Im Normalfall wird dieser als Voreinstellung fr alle hereinkommenden
Rose-Verbindungen eingerichtet.
Beispielsweise kann man Rose-Nutzer fr HEARD-0 oder NODE-0 lokal arbeiten
lassen, fr alle anderen Zielrufzeichen rsdownlink aufrufen:

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

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

17.2. Einen Rose-Uplink einrichten

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

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

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


18  AX.25-Rufzeichen LinuX-Nutzern zuordnen

In vielen Situationen ist es wnschenswert, ein Rufzeichen einem LinuX-
Nutzer-Account zuzuordnen. Beispielsweise knnten mehrere Funkamateure
die gleiche LinuX-Maschine nutzen  und unter ihrem eigenen Rufzeichen
Verbindungen aufbauen wollen. Oder Nutzer des PMS wollen einem bestimmten
LinuX-Nutzer eine Nachricht zukommen lassen.
Die AX.25-Software stellt eine Mglichkeit zur Verfgung, die Account-
Namen von LinuX-Nutzern mit Rufzeichen zu verbinden. Dies wurde im
Abschnitt PMS bereits erwhnt, soll hier aber noch einmal genauer
dargestellt werden.
Die Verknpfung wird mit dem Befehl axparms hergestellt, beispielsweise so:

axparms -assoc vk2ktj terry

Mit diesem Befehl wird der Account namens terry auf der Maschine mit dem
Rufzeichen vk2ktj verknpft. Jede Nachricht vom PMS an vk2ktj wird an den
Account terry weitergeleitet.
Nicht vergessen sollte man, diese Verknpfungen in das beim Starten des
Systems ausgefhrte Skript einzubauen, damit sie bei jedem Neustart zur
Verfgung stehen.
Beachte: Man sollte NIE den root-Account mit einem Rufzeichen verknpfen,
da dies zu Konfigurationsproblemen in anderen Programmen fhren kann.

19  Die Eintrge im /proc-Dateisystem 

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

/proc/net/arp           - enthlt die Liste der Address Resolution Protocol-
                          Mappings zu Adressen auf MAC-Protokollebene.
                          Diese knnen AX.25, Ethernet oder eine andere
                          MAC-Protokollebene sein.
/proc/net/ax25          - enthlt eine Liste der geffneten AX.25-Sockets.
                          Dies knnen aktive Sitzungen oder solche, die auf
                          eine Verbindung warten, sein.
/proc/net/ax25_bpqether - enthlt die Mappings fr die Rufzeichen fr
                          Ax.25 ber BPQ-Ethernet.
/proc/net/ax25_calls    - enthlt die Zuordnungen von User-IDs zu Rufzeichen,
                          wie sie mit axparms -assoc eingestellt wurden.
/proc/net/ax25_route    - enthlt den AX.25-Digipeater-Pfad
/proc/net/nr            - enthlt eine Liste der geffneten NetROM-Sockets.
                          Dies knnen aktive Sitzungen oder solche, die auf
                          eine Verbindung warten, sein.
/proc/net/nr_neigh      - enthlt Informationen ber die der NetRom-Software
                          bekannten benachbarten NetROM-Stationen.
/proc/net/nr_nodes      - enthlt Informationen ber die der NetRom-Software
                          bekannten NetROM-Nodes.
/proc/net/rose          - enthlt eine Liste der geffneten Rose-Sockets.
                          Dies knnen aktive Sitzungen oder solche, die auf
                          eine Verbindung warten, sein.
/proc/net/rose_neigh    - enthlt Informationen ber die der Rose-Software
                          bekannten benachbarten Rose-Stationen.
/proc/net/rose_nodes    - enthlt eine Zuordnung von Rose-Zielen zu
                          benachbarten Rose-Stationen.
/proc/net/rose_routes   - enthlt eine Liste aller bestehenden Rose-
                          Verbindungen


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

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

20.1. Adrefamilien

Die Netzwerkprogrammierung fr AX.25, NetROM und Rose ist der TCP/IP-
Programmierung unter LinuX sehr hnlich. Die hauptschlichen Unterschiede
ergeben sich aus den verwendenten Adrefamilien und -strukturen, die
entsprechend angeordnet werden mssen.
Die Adrefamilien tragen die Namen AF_AX25, AF_NETROM und AF_ROSE fr
die jeweiligen Protokolle.

20.2. Headerdateien

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

  Fr AX.25:

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

  Fr NetRom:

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

  Fr Rose:

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


20.3. Rufzeichenhandhabung und Beispiele

Die Rufzeichenumwandlungen werden von Routinen erledigt, welche in der zu den
AX.25-Utilities gehrenden Bibliothek /lib/ax25.a stehen. Natrlich kann man
sich auch seine eigenen schreiben.
Die User_call-Programme sind ein gutes Beispiel, von dem man starten kann.
Ihre Quelltexte sind im Paket der AX.25-Utilities mit enthalten. Wenn man sich
ein wenig damit befat, wird man feststellen, da 90% der Arbeit in
der Vorbereitung zum ffnen des Sockets bestehen. Die Herstellung einer
Verbindung ist einfach, nur die Vorbereitung braucht Zeit.
Diese Beispiele sollten so einfach sein, da sie nicht zu Verwirrungen
fhren. Wer Fragen hat, sollte sie an die Linux-Hams-Mailingliste schicken.
Es wird sich dann sicherlich jemand finden, der weiterhilft.



21  Einige Beispielkonfigurationen

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

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

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

#!/bin/sh
# /etc/rc.net
# Diese Konfiguration stellt einen KISS basierten AX.25-Port und 
# ein Ethernet-Device zur Verfgung.

echo "/etc/rc.net"
echo "  Configuring:"

echo -n "    loopback:"
/sbin/ifconfig lo 127.0.0.1
/sbin/route add 127.0.0.1
echo " done."

echo -n "    ethernet:"
/sbin/ifconfig eth0 44.136.8.97 netmask 255.255.255.248 \
                  broadcast 44.136.8.103 up
/sbin/route add 44.136.8.97 eth0
/sbin/route add -net 44.136.8.96 netmask 255.255.255.248 eth0
echo " done."

echo -n "    AX.25: "
kissattach -i 44.136.8.5 -m 512 /dev/ttyS1 4800
ifconfig sl0 netmask 255.255.255.0 broadcast 44.136.8.255
route add -host 44.136.8.5 sl0
route add -net 44.136.8.0 window 1024 sl0

echo -n "    Netrom: "
nrattach -i 44.136.8.5 netrom

echo "  Routing:"
/sbin/route add default gw 44.136.8.68 window 1024 sl0
echo "    default route."
echo done.

# end

/etc/ax25/axports

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

/etc/ax25/nrports

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

/etc/ax25/nrbroadcast

# ax25_name     min_obs def_qual        worst_qual      verbose
4800            1       120             10              1

    IP_FORWARDING mu im Kernel eingeschaltet sein.

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

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

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

    Jede der Maschinen im Ethernet-Netzwerk hat eine Route:

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

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

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

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

21.2. IPIP-gekapselter Gateway

LinuX wird jetzt berall in der Welt sehr hufig fr TCP/IP-gekapselte
Gateways verwendet. Der neue Tunnel-Treiber untersttzt mehrere
gekapselte Routen und lst den veralteten ipip-Daemon ab.

Eine typische Konfiguration wrde etwa so aussehen:

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

Die interessierenden Konfigurationsdateien:

# /etc/rc.net
# In dieser einfachen Konfiguration wird ein KISS AX.25-Funkport und  
# ein Ethernet-Device bereitgestellt und der Kernel-Tunnel-Treiber
# fr die IPIP-encapsulation/decapsulation verwendet
#
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 154.27.3.20 netmask 255.255.255.0 \
                broadcast 154.27.3.255 up
/sbin/route add 154.27.3.20 eth0
/sbin/route add -net 154.27.3.0 netmask 255.255.255.0 eth0
echo " done."
#
echo -n "    AX.25: "
kissattach -i 44.136.16.1 -m 512 /dev/ttyS1 4800
/sbin/ifconfig sl0 netmask 255.255.255.0 broadcast 44.136.16.255
/sbin/route add -host 44.136.16.1 sl0
/sbin/route add -net 44.136.16.0 netmask 255.255.255.0 window 1024 sl0
#
echo -n "    tunnel:"
/sbin/ifconfig tunl0 44.136.16.1 mtu 512 up
#
echo done.
#
echo -n "Routing ... "
source /etc/ipip.routes
echo done.
#
# end.

und:

# /etc/ipip.routes
# Diese Datei wurde unter Verwendung des munge-Skripts erzeugt
#
       /sbin/route add -net 44.134.8.0 netmask 255.255.255.0 tunl0 gw 134.43.26.1
       /sbin/route add -net 44.34.9.0 netmask 255.255.255.0 tunl0 gw 174.84.6.17
       /sbin/route add -net 44.13.28.0 netmask 255.255.255.0 tunl0 gw 212.37.126.3
          ...
          ...
          ...

/etc/ax25/axports

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

Einige zu beachtende Punkte:

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

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

    Die Route-Befehle zur Angabe der gekapselten Routen knnen
     automatisch mit einer modifizierten Version des Munge-Skripts erzeugt
     werden, die weiter unten abgedruckt ist. Die Route-Befehle werden dann in
     eine separate Datei geschrieben und mit dem Bash-Befehl
     source /etc/ipip.routes (angenommen, die Datei mit den Route-Befehlen
     heie /etc/ipip.routes) wie dargestellt eingelesen.
     Die Quelldatei mu das NOS-Format fr Route-Befehle haben.

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

  Das neue Tunnel-munge-Script:

  #!/bin/sh
  #
  # Von: Ron Atkinson <n8fow@hamgate.cc.wayne.edu>
  #
  #  Dieses Skript basiert auf dem ursprnglich fr den IPIP-
  #  Daemon geschriebenen 'munge'-Skript von Bdale N3EUA,
  #  es wurde von Ron Atkinson N8FOW modifiziert. 
  #  Es dient zur Umwandlung einer Gateway-Route-Datei im KA9Q NOS-Format
  #  (blicherweise 'encap.txt') in das Format der Linux-Routing-Tabelle
  #  fr den IP -Tunnel-Treiber.
  #
  #        Aufruf: Gateway-Datei auf stdin, Linux -Routingtabelle auf stdout.
  #               z.B.  tunnel-munge < encap.txt > ampr-routes
  #
  # ACHTUNG: Bevor das Skript nutzbar ist, mu folgendes berprft werden:
  #
  #     1) Trage fr 'Local routes' und 'Misc user routes' die im eigenen
  #        Gebiet gltigen Routen ein und entferne die Beispiele!
  #     2) Auf der 'fgrep'- Zeile mu die EIGENE Internet-Gateway-Adresse
  #        eingetragen werden. Wird dies nicht getan, so entstehen
  #        ernsthafte Probleme durch Routing-Schleifen.
  #     3) Der voreingestellte Name des Interfaces ist 'tunl0'.
  #        Es ist sicherzustellen, da dies auf dem eigene System zutrifft.

  echo "#"
  echo "# IP tunnel route table built by $LOGNAME on `date`"
  echo "# by tunnel-munge script v960307."
  echo "#"
  echo "# Local routes"
  echo "route add -net 44.xxx.xxx.xxx netmask 255.mmm.mmm.mmm dev sl0"
  echo "#"
  echo "# Misc user routes"
  echo "#"
  echo "# remote routes"

  fgrep encap | grep "^route" | grep -v " XXX.XXX.XXX.XXX" | \
  awk '{
          split($3, s, "/")
          split(s[1], n,".")
          if      (n[1] == "")    n[1]="0"
          if      (n[2] == "")    n[2]="0"
          if      (n[3] == "")    n[3]="0"
          if      (n[4] == "")    n[4]="0"
          if      (s[2] == "1")   mask="128.0.0.0"
          else if (s[2] == "2")   mask="192.0.0.0"
          else if (s[2] == "3")   mask="224.0.0.0"
          else if (s[2] == "4")   mask="240.0.0.0"
          else if (s[2] == "5")   mask="248.0.0.0"
          else if (s[2] == "6")   mask="252.0.0.0"
          else if (s[2] == "7")   mask="254.0.0.0"
          else if (s[2] == "8")   mask="255.0.0.0"
          else if (s[2] == "9")   mask="255.128.0.0"
          else if (s[2] == "10")  mask="255.192.0.0"
          else if (s[2] == "11")  mask="255.224.0.0"
          else if (s[2] == "12")  mask="255.240.0.0"
          else if (s[2] == "13")  mask="255.248.0.0"
          else if (s[2] == "14")  mask="255.252.0.0"
          else if (s[2] == "15")  mask="255.254.0.0"
          else if (s[2] == "16")  mask="255.255.0.0"
          else if (s[2] == "17")  mask="255.255.128.0"
          else if (s[2] == "18")  mask="255.255.192.0"
          else if (s[2] == "19")  mask="255.255.224.0"
          else if (s[2] == "20")  mask="255.255.240.0"
          else if (s[2] == "21")  mask="255.255.248.0"
          else if (s[2] == "22")  mask="255.255.252.0"
          else if (s[2] == "23")  mask="255.255.254.0"
          else if (s[2] == "24")  mask="255.255.255.0"
          else if (s[2] == "25")  mask="255.255.255.128"
          else if (s[2] == "26")  mask="255.255.255.192"
          else if (s[2] == "27")  mask="255.255.255.224"
          else if (s[2] == "28")  mask="255.255.255.240"
          else if (s[2] == "29")  mask="255.255.255.248"
          else if (s[2] == "30")  mask="255.255.255.252"
          else if (s[2] == "31")  mask="255.255.255.254"
          else                    mask="255.255.255.255"

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

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

21.3. Die Einrichtung des AXIP-encapsulated Gateway

Auf vielen Internet-Gateways des Amateurfunks werden AX.25, NetRom und
Rose zustzlich zu TCP/IP gekapselt. Die Kapselung von AX.25-Frames
innerhalb von IP-Datagrammen wird in RFC-1226 von Brian Kantor beschrieben.
Mike Westerhof schrieb 1991 einen Deamon fr AX.25-Kapselung fr UNIX.
Die AX-25-Utils enthalten eine leicht verbesserte Version fr LinuX.
Ein Programm zur AXIP-Kapselung nimmt an einem Ende AX.25-Frames entgegen,
prft die AX.25-Empfngeradresse, um festzulegen, an welche IP-Adresse das
gekapselte Paket weitergeleitet werden mu, kapselt es sodann in ein
TCP/IP-Datagramm und sendet es schlielich an das passende Ziel.
In umgekehrter Richtung nimmt es in TCP/IP-Datagrammen enthaltene
AX.25-Frames entgegen, packt diese aus und behandelt sie weiter, als ob sie
direkt von einem AX.25-Port empfangen worden wren.
Um TCP/IP-Datagramme, die AX.25-Frames enthalten, von anderen ohne solchen
Inhalt unterscheiden zu knnen, werden AXIP-Datagramme mit einer
Protokoll-Identifizierung von 4 (oder frher 94) versehen. Dies wird in 
RFC-1226 beschrieben. 

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

21.3.1.  Einstellungsoptionen fr AXIP

Das Programm ax25ipd kennt zwei hauptschliche Betriebsarten,
"Digipeater"- und "TNC"-Modus. Im TNC-Modus wird der Daemon wie ein
KISS-TNC verwendet, man schickt KISS-Pakete an das Programm und es sendet
diese weiter - dies ist die bliche Konfiguration.
Im "Digipeater"-Modus wird der Daemon wie ein AX.25-Digipeater behandelt.
Es gibt einige feine Unterschiede zwischen diesen Betriebsarten.

In der Konfigurationsdate definiert man "routes" oder mappings zwischen
den AX.25-Ziel-Rufzeichen und den IP-Adressen der Rechner, denen man die
Pakete schicken will. Jede Route besitzt Optionen, die spter beschrieben
werden.
Weiterhin kann man hier folgendes einrichten:

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

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

- Bakenintervall und -text

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

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

  #
  # ax25ipd configuration file for station floyd.vk5xxx.ampr.org
  #
  # Select axip transport. 'ip' is what you want for compatibility
  # with most other gateways.
  #
  socket ip
  #
  # Set ax25ipd mode of operation. (digi or tnc)
  #
  mode tnc
  #
  # If you selected digi, you must define a callsign.  If you selected
  # tnc mode, the callsign is currently optional, but this may change
  # in the future! (2 calls if using dual port kiss)
  #
  #mycall vk5xxx-4
  #mycall2 vk5xxx-5
  #
  # In digi mode, you may use an alias. (2 for dual port)
  #
  #myalias svwdns
  #myalias2 svwdn2
  #
  # Send an ident every 540 seconds ...
  #
  #beacon after 540
  #btext ax25ip -- tncmode rob/vk5xxx -- Experimental AXIP gateway
  #
  # Serial port, or pipe connected to a kissattach in my case
  #
  device /dev/ttyq0
  #
  # Set the device speed
  #
  speed 9600
  #
  # loglevel 0 - no output
  # loglevel 1 - config info only
  # loglevel 2 - major events and errors
  # loglevel 3 - major events, errors, and AX25 frame trace
  # loglevel 4 - all events
  # log 0 for the moment, syslog not working yet ...
  #
  loglevel 2
  #
  # If we are in digi mode, we might have a real tnc here, so use param to
  # set the tnc parameters ...
  #
  #param 1 20
  #
  # Broadcast Address definition. Any of the addresses listed will be forwarded
  # to any of the routes flagged as broadcast capable routes.
  #
  broadcast QST-0 NODES-0
  #
  # ax.25 route definition, define as many as you need.
  # format is route (call/wildcard) (ip host at destination)
  # ssid of 0 routes all ssid's
  #
  # route <destcall> <destaddr> [flags]
  #
  # Valid flags are:
  #         b  - allow broadcasts to be transmitted via this route
  #         d  - this route is the default route
  #
  route vk2sut-0 44.136.8.68 b
  route vk5xxx 44.136.188.221 b
  route vk2abc 44.1.1.1
  #
  #

21.3.3.  ax25ipd starten

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

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

Dann wird kissattach gestartet, um diesen Port zu erzeugen:

          /usr/sbin/kissattach /dev/ptyq0 axip

Schlielich startet man ax25ipd:

          /usr/sbin/ax25ipd &

Die AXIP-Verbindung testet man mit:

          call axip vk5xxx

21.3.4.  Einige Bemerkungen zu Routen und Flags

Mit dem "route" -Befehl gibt man an, wo die AX.25-Pakete gekapselt
hingeschickt werden sollen.
Empfngt ax25ipd ein Paket von seinem Interface, so vergleicht das Programm
das Zielrufzeichen mit jedem Rufzeichen in seiner Routen-Tabelle.
Bei eine bereinstimmung wird das AX.25-Paket in ein IP-Datagramm gekapselt
und an den Rechner mit der entsprechend angegebenen IP-Adresse geschickt.

Zwei Flags knnen jedem "route" Befehl in der Datei /etc/ax25ipd.conf
hinzugefgt werden. Es sind folgende:

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

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

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

21.4  Wie verbindet man NOS und die LinuX-Kernel-Netzwerk-Software

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

21.4.1. NOS und LinuX mit einer Pipe verbinden

Von Brandon S. Allbery, KF8NH, wurden die folgenden Informationen
beigesteuert, die erklren, wie man das NOS mit dem LinuX-Kernel-Code mittels
einer LinuX-Pipe verbindet.
Da sowohl LinuX als auch NOS das SLIP-Protokoll untersttzen, kann man beide
ber SLIP miteinander verbinden.
Man knnte dazu zwei serielle Schnittstellen mit einem Loopback-Kabel
verwenden, doch das wre langsam und kostspielig.
LinuX stellt wie viele andere UNIX-hnliche Betriebssysteme sogenannte
Pipes zur Verfgung. Dabei handelt es sich um Pseudo-Devices, die fr die
Software wie TTY-Devices erscheinen, aber in Wirklichkeit eine Schleife
(Loopback) auf ein anderes Pipe-Device darstellen.
Um diese Pipes zu verwenden, mu das erste Programm das "master"-Ende und das
zweite das "slave"-Ende der Pipe ffnen. Siehe dazu auch den Absatz
"Dual-Port-TNCs einrichten" unter dem Abschnitt "7.1. KISS".
Sind beide Enden erffnet, so knnen die beiden Programme miteinander Daten
austauschen, indem sie Zeichen in die Pipe wie in ein normales TTY-Device
schreiben.
Damit das Ganze genutzt werden kann, um den LinuX-Kernel und NOS oder
irgendein anderes Programm miteinander zu verbinden, mu zunchst das zu
verwendende Pipe-Device aus dem /dev -Verzeichnis ausgewhlt werden.
Die "master"-Enden der Pipes tragen die Namen ptyq1..ptyqf, die "slave"-
Enden ttyq1..ttyqf. Zu jedem "master" gehrtt immer ein "slave", so da
man ttyqf als "slave verwenden mu, wenn ptyqf als "master" ausgewhlt
wurde.
Wenn man nun ein solches Device-Paar gewhlt hat, sollte man das "master"-
Ende mit dem LinuX-Kernel und das "slave"-Ende mit NOS verbinden, da der
LinuX-Kernel als erstes startet und das "master"-Ende immer vor dem "slave"-
Ende geffnet werden mu. Ebenso mu der LinuX-Kernel eine andere
IP-Adresse als NOS haben, so da man diesem eine eigene IP-Adresse
zuweisen sollte, wenn das nicht bereits geschehen ist.
Die Pipe wird wie ein serielles Device eingerichtet, um eine SLIP-Verbindung
vom LinuX-Kernel aus zu erstellen, kann man etwa folgende Befehle verwenden:

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

In diesem Beispiel hat der LinuX-Kernel die IP-Adresse 44.70.4.88 und NOS
die IP-Adresse 44.70.248.67. Der route-Befehl in der letzten Zeile veranlat
den LinuX-Kernel, alle Datagramme (Pakete) fr das AMPRNet (44.0.0.0)
ber die SLIP-Verbindung, die mit slattach vorher erzeugt wurde,
weiterzuleiten.
Im Normalfall kommen diese Befehle in das Skript /etc/rc.d/rc.inet2 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 eintritt.
Dadurch wrden die Pakete mit komprimiertem Header langsamer bertragen als
die unkomprimierten Pakete.
Um das NOS-seitige Ende der SLIP-Verbindung einzurichten, kann man diese
Befehle verwenden:

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

Damit wird ein SLIP-Port mit Namen linux ber das "slave"-Ende der Pipe
zum LinuX-Kernel erzeugt. Der Route-Befehl aktiviert diesen dann.
Wenn NOS gestartet wurde, sollte man jetzt in der Lage sein, ping und telnet
von NOS nach LinuX und umgekehrt ausfhren zu knnen. Funktioniert dies nicht,
so mu man nochmals berprfen, ob kein Fehler, besonders beim Konfigurieren
der Adressen, aufgetreten sind und die Pipe-Devices ordnungsgem verfgbar
sind.

22  Wo finde ich Informationen zu... ?

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

22.1.  Packet Radio

Allgemeine Informationen zu Packet Radio findet man hier:

  American Radio Relay League <http://www.arrl.org/>,

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

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

22.2.  Protokolldokumentation

Jonathan Naylor hat eine Reihe von Dokumenten gesammelt, die sich mit den
im Packet Radio verwendeten Protokollen beschftigen. Sie wurden gepackt
und liegen als

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

vor.

22.3.  Hardware-Dokumentation

Informationen zur PI2-Karte werden von der Ottawa Packet Radio Group

<http://hydra.carleton.ca/>,

zur Verfgung gestellt.

Informationen zur Baycom-Hardware ist auf der Baycom-WWW-Seite

<http://www.baycom.de/>.

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

<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
HAMS-Liste auf vger.rutgers.edu kann man an ihnen teilnehmen. Ebenso gibt es
noch die tcp-group-Mailingliste auf ucsd.edu als Heimat fr die
Diskussionen ber TCP/IP im Amateurfunk und ebenso den Channel #linpeople auf
IRC.
Um der linux-ham-Liste beizutreten, sendet man eine E-Mail an

Majordomo@vger.rutgers.edu ,

die den Text

subscribe linux-hams

enthlt. Die "Subject"-Zeile wird ignoriert (freilassen).
Diese Mailingliste ist auf

zone.pspt.fi <http://zone.pspt.fi/archive/linux-hams/> und 
zone.oh7rba.ampr.org <http://zone.oh7rba.ampr.org/archive/linux-hams/>

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

Der tcp-Gruppe tritt man so bei:
E-mail an

       listserver@ucsd.edu

mit der Zeile

       subscribe tcp-group

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

24  Danksagung

Folgende Leute haben auf die eine oder andere Weise, wissentlich oder
unwissentlich, zum Entstehen dieses Textes beigetragen.
In ungeordneter Reihenfolge sind dies
Jonathon Naylor, Thomas Sailer, Joerg Reuter, Ron Atkinson,
Alan Cox, Craig Small, John Tanner, Brandon Allbery
- und nicht zuletzt der Autor des englischen Originaltextes, Terry Dawson,
dem ich an dieser Stelle fr seine geduldigen und kompetenten Antworten
in der LinuX-Ham-Mailingliste danken will.

25  Copyright.

Das AX25-HOWTO, Informationen zur Installation und Konfiguration
einiger der wichtigsten Programmpakete fr die AX.25-Untersttzung unter
LinuX. Alle Rechte, einschlielich Copyright (c) 1997 Terry Dawson.

Dieser Text zhlt als freie Software; er darf unter Beachtung der Bedingungen
der GNU Public License, wie von der Free Software Foundation verffentlicht,
frei weitergegeben und verndert werden.
Es gilt jede Version dieser Bedingungen ab Version 2.

Dieser Text und die darin enthaltenen Programme werden verbreitet in der
Hoffnung, da sie ntzlich sein mgen, jedoch OHNE JEGLICHE GARANTIE;
ebenso kann fr die Verwendbarkeit oder die Eignung der Software fr
irgendeinen bestimmten Zweck keine Garantie bernommen werden.
Details hierzu sind der GNU Public License zu entnehmen, die, wenn sie
diesem Text nicht beiliegt, bei der
                                   
  Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
  USA.

bezogen werden kann.

Das Copyright der hier vorliegenden deutschen Version liegt bei
Gerd Rthig (gerd@ardos.de), bitte Fragen zur deutschen Version
NICHT an Terry Dawson oder in die LinuX-Ham-Mailingliste schicken!
Auch die deutsche Fassung unterliegt der GNU Public License; darber hinaus
wrde ich mich freuen, wenn ich ber evtl. notwendige Vernderungen,
Umformulierungen oder Korrekturen in Kenntnis gesetzt wrde.

Viel Freude also mit LinuX und Packet Radio, 55 & 73 !


                                                                   Gerd
                    
ANHANG:

Einige aus dem Englischen bernommene Fachbegriffe und deren Erklrung

Broadcast       - Aussendungen, die nicht an eine bestimmte Adresse,
                  sondern an alle gerichtet sind und daher unprotokolliert
                  gesendet werden (Beispiel: Aussendung der Routing-
                  Informationen durch NetROM, auch Baken knnen in diesem
                  Sinne als Broadcast betrachtet werden)
Device          - hier im Sinne eines sogenannten "virtuellen Gerts"
                  gebraucht, d.h., ein Treiber (Driver) stellt ein
                  Software-Interface zur Verfgung, das hnlich wie eine
                  Gertedatei angesprochen werden kann. Auf diese Weise wird
                  die Unterscheidung zwischen den Protokollen realisiert -
                  jedem dieser Devices ist genau ein bertragungsprotokoll
                  zugeordnet. Sie knnen auf weiteren Devices aufsetzen, also
                  deren Geladensein voraussetzen.
Digipeater      - Station, die die eigenen Pakete, so wie sie sie
                  empfngt, wiederholt (DIgital rePEATER), es erfolgt
                  kein direkter Verbindungsaufbau zu diesem Rechner, sondern
                  man baut einen Link "ber" (via) ihn auf
Encapsulation   - svw. Kapselung (hier auch so bersetzt), bezeichnet einen
                  Weg der bertragung ber mit TCP/IP arbeitende
                  Netzwerke, indem AX.25-Pakete in spezielle IP-Datagramme
                  hineingeschrieben werden. Die Protokoll-Informationen
                  des IP wirken dann wie eine "Kapsel" um das AX.25-Frame
                  herum, die dessen unbeschadeten Transport und
                  Identifikation ermglicht
Heard, MHeard   - Ausgabe, welche Stationen auf einem bestimmten Kanal
                  gehrt (aufgenommen) werden konnten     
Nodes           - meist TNCs mit spezieller Node-Software ohne daran
                  angeschlossenen Host-Rechner, aber auch PCs mit
                  entsprechender Software (z.B. node oder BPQ), zu denen man
                  im Unterschied zu den Digipeatern eine direkte Verbindung
                  aufbaut und ihnen dann den Befehl zum Weiterverbinden
                  gibt
Obsolescence    - (svw. Alterung) NetROM-Begriff, 
                  der die Aktualitt einer Verbindung angibt, Zeitspanne,
                  die seit der letzten gehrten Aktivitt der betreffenden
                  Station vergangen ist, zur Beurteilung der Qualitt einer
                  Funkverbindung hilfreich
Routing         - Weiterleiten von Paketen/Daten auf einem vorgegebenen
                  Weg/an einen in der Routing-Tabelle (routing table)
                  festgelegten Rechner, evtl. auf einem dort definierten
                  Weg (Routing-Path).
Switching       - svw. Umschalten: Aussenden/Weiterleiten von Daten ber
                  einen anderen Kanal/Port, netzwerktechnisch Schalten einer
                  Punkt-zu-Punkt-Verbindung zwischen Sender und Empfnger
                  fr die Zeitdauer der bertragung des entsprechenden
                  Paketes
