Die Konfiguration der Linux-AX.25-Unterstützung ist sehr flexibel und kann fast an jedes denkbare Problem angepaßt werden. Der Preis dafür ist eine besonders Anfänger verwirrende Vielzahl nicht immer einleuchtend erscheinender Konfigurationsoptionen.
Es kann daher nur geraten werden, die den Programmen beiliegende Dokumentation (README-Dateien, man-pages) im speziellen und Informationen zu Netzwerkfragen im allgemeinen zu lesen.
Die AX.25-Utilities enthalten hierzu einige Konfigurationsprogramme und Beispieldateien.
Die zentrale Datei im Linux-AX.25-Subsystem ist die Datei
/etc/ax25/axports.
Diese Datei ist eine einfache Textdatei, die mit einem Texteditor erzeugt werden kann. Sie hat folgendes Format:
Portname Rufzeichen Baudrate Paketlänge Maxframe Beschreibung
wobei gilt:
- Bezeichner für den Port, frei wählbar (möglichst aussagekräftiger Begriff)
- Rufzeichen, welches dem Port zugeordnet werden soll
- Baudrate zum TNC
- Länge des Datenfeldes eines Paketes in Bytes
- maximale Anzahl unbestätigter Pakete (AX.25-Window)
- 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
Die Anbindung an die einzelnen Netzwerkdevices geschieht über das hier vergebene Rufzeichen, das für das betreffende Device mit dem des zugeordneten Ports übereinstimmen muß.
Schematisch sieht das etwa so aus:
Anwenderprogramm
(z.B. call)
|
Port laut /etc/ax25/axports
|
dort dem Port zugeordnetes Rufzeichen
|
Netzwerkinterface mit gleichem Rufzeichen
|
zugehöriger Hardwaretreiber
|
Hardware
Jedes Gerät, das für das Linux-AX.25-Subsystem sichtbar sein soll, muß in dieser Datei als Port mit entsprechendem Rufzeichen erscheinen. Jedem Gerät kann genau ein Port zugeordnet werden, und ebenso umgekehrt jeder Port nur einem Gerät. Da die Zuordnung der Ports zu den Geräten über die vergebenen Rufzeichen erfolgt, muß also jedem Gerät/jedem Port ein anderes Rufzeichen zugeordnet werden. Wird jedoch ein gleiches Rufzeichen gewünscht, so ist darauf zu achten, daß zumindest unterschiedliche SSIDs vergeben werden (siehe Beispieldatei).
Es ist sowohl für normale AX.25- als auch für IP-Verbindungen sinnvoll, voreingestellte Digipeaterpfade für spezielle Stationen zu erstellen. Dazu kann man das Programm axparms verwenden:
/usr/sbin/axparms -route add radio VK2XLZ VK2SUT
Mit diesem Befehl setzt man einen Digipeaterpfad für VK2XLZ via VK2SUT auf den AX.25-Port mit dem Namen radio. Weiterführende Informationen sind in der Hilfeseite zu axparms zu finden.
Entstanden mit freundlicher Unterstützung durch Thomas Pinz, DC2RPT,
tom_p@gmx.net, der mir die Vorlage für den nachfolgenden Text zur
Verfügung stellte.
Es ist sehr einfach, einen AX.25-Port für TCP/IP einzurichten und seinen Rechner auf diese Weise zu einem TCP/IP-Host für Packet Radio zu machen.
Eine TCP/IP Adresse bekommt man in Deutschland von seinem regionalen TCP/IP - Koordinator zugewiesen. Informationen darüber gibt es in der Rubrik »TCPIP« der Mailboxen des Amateurfunk-PR-Netzes, dort wird periodisch eine Liste von Fred, DC6IQ, gepostet.
Man sollte vermeiden, sich ohne vorherige Nachfrage eigenmächtig eine Adresse zuzuteilen, da es sonst Kollisionen mit dem eigentlichen Besitzer dieser Adresse geben kann.
Im CB-Netz existiert leider keine zentrale Adreßverwaltung, so daß hier nur der allgemeine Hinweis gegeben werden kann, keine Adressen aus für andere Anwendungen reservierten Bereichen zu nehmen. Es bleiben also nur Adressen wie 192.168.x.x übrig.
Für einen Test sollten man die TCP/IP-Parameter der nächstgelegenen Station kennen, die mit TCP/IP arbeitet (z.B. Digipeater).
Im einzelnen braucht man:
call überprüft werden kann:
call kiss db0aab-10 via db0rgb db0aab
Wie bei jedem anderen Netzwerkdevice kann man die TCP/IP-Adresse
mit dem Befehl ifconfig zuweisen:
ifconfig ax0 44.130.59.53 netmask 255.0.0.0 broadcast 44.255.255.255
Damit weist man dem Device ax0 die TCP/IP-Adresse 44.130.59.53,
die Netzmaske 255.0.0.0 und die Broadcast-Adresse 44.255.255.255 zu.
Diese Netzmaske und Broadcast-Adresse gilt für ganz Deutschland,
möglicherweise gibt es aber regionale Abweichungen.
Falls noch nicht geschehen, kann das AX.25-Device jetzt mit dem Rufzeichen versehen und aktiviert werden:
ifconfig ax0 hw ax25 DC2RPT-10 up
Normalerweise wird die SSID 10 für TCP/IP-Betrieb benutzt, das ist aber nicht zwingend vorgeschrieben.
Nun muß noch die TCP/IP-Route fuer das 44.x.x.x-Netz (der für Packet-Radio benutzte Adreßbereich) auf das AX25-Device gesetzt werden, dann ist das Device betriebsbereit:
route add -net 44.0.0.0 netmask 255.0.0.0 ax0
Man kann auch einen anderen TCP/IP-Adressbereich benutzen, beispielsweise 44.130.59.0, netmask 255.255.255.0, wenn auf diesem Device nur das deutsche Subnetz 59 (Ostbayern) erreicht werden kann.
Leider gibt es im Packet-Radio noch keine automatische Erkennung und ein Routing zu dem Host, deswegen muß jeder Host, den man erreichen will, mit der Route dorthin eingetragen werden.
Als erstes wird mit dem Kommando arp das Call mit SSID einer
TCP/IP-Adresse zugeordnet:
arp -H ax25 -i ax0 -s 44.130.56.160 db0aab-10
Hier wird für das AX25-Device ax0 der TCP/IP-Adresse 44.130.56.160 das
Call db0aab-10 zugeordnet.
Weiterhin wird mit dem Kommando axparms (aus den AX25-Utils) die
AX25-Route und der AX25-Verbindungsmodus definiert:
axparms -route add kiss db0aab-10 db0aab db0rgb -ipmode vc
Hier wird auf dem AX25-Device »kiss« (hier muß der Interface-Name aus
der /etc/ax25/axports benutzt werden!) die AX25-Route zu DB0AAB-10
ueber die Digis DB0AAB und DB0RGB zugewiesen und der
AX25-Verbindungsmodus »Virtual Connection« benutzt.
Es gibt zwei Varianten für den AX25-Verbindungsmodus:
Zum Host wird eine echte AX.25-Verbindung aufgebaut, innerhalb derer der TCP/IP- Verkehr mittels I-Frames (protokolliert) übertragen wird.
Der TCP/IP-Verkehr wird in einzelnen AX.25-Paketen (UI, unprotokolliert) ohne vorherigen Verbindungsaufbau übertragen, (sollte nur bei absolut fehlerfreier Verbindung verwendet werden, da einige Fehlerkorrekturmechanismen von AX.25 aus Geschwindigkeitsgründen umgangen werden).
Es ist sehr aufwendig, bei vielen hundert möglichen TCP/IP-Benutzern die Daten jedes einzelnen Nutzers zu erfassen und einzutragen. Alternativ kann man die Daten vom nächsten TCP/IP-Host eintragen und diesen als Router zu den weiteren TCP/IP-Hosts benutzen.
Wenn man also zB. DB0AAB-10 eingetragen hat:
arp -H ax25 -i ax0 -s 44.130.56.160
axparms -route add kiss db0aab-10 db0rgb db0aab -ipmodus vc
kann man mit
route add -net 44.130.0.0 netmask 255.255.0.0 gw 44.130.56.160
diesen als Router für das Netz 44.130.0.0, (Packet-Radio in der Region Deutschland) benutzen.
Weiterhin empfielt es sich dann, den gleichen Router auch als DNS-Server für das gleiche Netz zu benutzen (siehe DNS-HOWTO).
Ob das Ganze nun auch funktioniert, kann man am einfachsten mit dem
Befehl ping ueberpruefen:
ping -i 10 -c 8 44.130.56.160
Damit wird 8x im Abstand von 10 Sekunden ein Ping-Paket an DB0AAB-10 geschickt und auf eine Bestätigung gewartet.
Die Option "-i 10" sollte nicht vergessen werden, da ping
sonst in jeder Sekunde ein Paket aussendet, was zur Überlastung des
Benutzereinstiegs führen kann.
Auf den meisten TCP/IP-Hosts im Packet-Radio-Netz werden http (»World Wide Web«), ftp (»File Transfer Protocol«) und dns (»Domain Name Server«) angeboten.
Oftmals ist es sogar möglich, über den TCP/IP-Port 8080 mit einem Browser auf das Web-Interface einer Baybox zuzugreifen. Umfang und Anzahl der verfügbaren Dienste variieren von Host zu Host und sollten beim zuständigen Sysop erfragt werden.
Das Net/ROM-Protokoll setzt auf AX.25 auf. Es ist daher wichtig, zunächst das AX.25-Protokoll einzurichten, da NetROM auf den vorher erstellten AX.25-Ports basiert.
Um ein NetROM-Interface auf einem AX.25-Port einzurichten, müssen zwei
Dateien angepaßt werden. In /etc/ax25/nrports finden sich die
Einstellungen zu den einzelnen NET/ROM-Interfaces, in
/etc/ax25/nrbroadcast werden Festlegungen zu den verwendeten
AX.25-Ports getroffen.
Man kann mehrere NetROM-Ports einrichten, für jeden ist die Vorgehensweise die gleiche.
Diese Datei ist vergleichbar mit /etc/ax25/axports für die AX.25-
Ports, sie enthält die Konfigurationseinstellungen der Net/ROM-Ports.
Jedes NetROM-Device benötigt einen Eintrag in /etc/ax25/nrports .
Normalerweise wird es auf einer Linux-Maschine nur ein NetROM-Device geben,
das eine definierte Anzahl von AX.25-Ports nutzt.
Manchmal will man aber einem besonderen Programm, wie einer Mailbox, ein separates NetROM-Alias vergeben. Dann kann man auch mehrere NetROM-Devices einrichten.
Die Datei /etc/ax25/nrports hat folgendes Format:
Name Rufzeichen Alias Paketlänge Beschreibung
Der Bezeichner für den Port.
Das Rufzeichen, welches für den NetROM-Verkehr
verwendet wird.
Dies ist NICHT das Rufzeichen, das andere
Stationen für node verwenden können.
(Zu dem node-Programm später.)
Es sollte nicht noch einmal in
/etc/ax25/axports
oder /etc/ax25/nrports auftauchen.
der NetROM-Alias für diesen Port.
Die maximale Größe der NetROM-Pakete.
Eine kurze Beschreibung für den Port.
Ein Beispiel sähe so aus:
netrom VK2KTJ-9 LINUX 236 Linux Packet Switch
Damit wird ein NetROM-Port erzeugt, der im übrigen NetROM-Netz als LINUX:VK2KTJ-9 erscheint.
Programme wie nr_call nutzen diese Datei.
Diese Datei enthält Einträge, die das Verhalten auf den für Net/ROM vorgesehenen AX.25-Ports festlegen.
Normalerweise gibt es für jeden AX.25-Port, über den NetROM-Verbindungen laufen sollen, einen Eintrag.
Die Datei hat folgendes Format:
axport min_obs def_qual worst_qual verbose
Wobei gilt:
- Der aus der Datei /etc/ax25/axports
entnommene Portname. Steht kein Eintrag in
/etc/ax25/nrbroadcast, so bedeutet das, daß kein
NetROM-Routing durchgeführt wird und alle empfangenen
NetROM-Broadcasts auf diesem Port ignoriert werden.
- Minimalwert für die Obsolescence.
- Voreingestellte Qualität für den Port.
- Wert für die schlechteste Verbindungsqualität, Verbindungen mit schlechteren Werten werden ignoriert.
- Legt fest, ob NetROM auf diesem Port Routing-Broadcasts aussendet oder nur auf seine Anwesenheit hinweist.
Ein Beispiel sähe so aus:
radio 1 200 100 1
Um Zugriff auf Net/ROM zu erhalten, stellt das Net/ROM-System wiederum Netzwerkdevices (virtuelle Interfaces) bereit, die dann in üblicher Weise konfiguriert werden können.
Diesmal wird dazu der Befehl nrattach verwendet.
Dieser arbeitet wie axattach, im Unterschied zu diesem erzeugt er
Net/ROM-Netzwerk-Devices mit den Namen nr0 bis nr9.
Beim ersten Aufruf erzeugt nrattach das Device nr0, beim zweiten
nr1 usw. Um das Netzwerk-Device für den von uns definierten NetROM-Port
zu erzeugen, geben wir ein:
nrattach netrom
Damit wird das NetROM-Device nr0 mit dem Namen netrom, dessen Details in
der Datei /etc/ax25/nrports festgelegt wurden, gestartet.
Der Aufruf von nrattach sieht dann so aus:
nrattach -i 44.131.16.2 netrom
Der Linux-Kernel übernimmt alle mit dem NetROM-Protokoll und dem Switching verbundenen Aufgaben bis auf einige Funktionen.
Der NetROM-Daemon verwaltet die NetROM-Routing-Tabellen und erzeugt die NetROM-Routing-Broadcasts.
Er wird mit folgendem Befehl gestartet:
/usr/bin/netromd -i
Schon bald darauf sollte man sehen, wie sich die Datei
/proc/net/nr_neigh mit den Namen der benachbarten NetROM-Stationen
füllt (cat /proc/net/nr_neigh).
Man sollte den netromd-Aufruf in die während des Startens ausgeführten
(rc-) Skripte nach die Initialisierung der AX.25.-Ports einfügen,
damit er automatisch beim Booten gestartet wird.
Manchmal ist es wünschenswert, feste (statische) Routen für spezielle Rechner einzurichten.
Dazu gibt es den Befehl nrparms.
Eine vollständige Beschreibung kann in der Hilfeseite (»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 eingerichtet. Basis ist hier der als
»radio« in /etc/ax25/axports eingetragene AX.25-Port.
Man kann mit nrparms auch manuell neue Einträge für benachbarte Stationen
erstellen:
/usr/sbin/nrparms -routes radio VK2SUT-9 +120
Damit wird VK2SUT-9 als benachbarte NetROM-Station mit einer fest eingestellten Qualität von 120 eingetragen, die nicht automatisch gelöscht bzw. geändert wird.
Ein TCP/IP-Interface für NetROM wird fast genau so wie für AX.25
eingerichtet. Man kann entweder die IP-Adresse und MTU auf der Kommandozeile
für nrattach angeben oder ifconfig und route benutzen.
Für die Vergabe der TCP/IP-Adressen gilt das im Abschnitt Ein AX.25-Interface für TCP/IP einrichten Gesagte.
Es müssen jedoch per Hand die ARP-Einträge für die Rechner, zu denen geroutet werden soll, ergänzt werden, da die Maschine nicht selbst herausbekommt, welche NetROM-Adresse sie verwenden muß, um einen bestimmten IP-Rechner zu erreichen.
Will man also ein Device nr0 mit der IP-Adresse 44.136.8.5, einer MTU von
512 und eingerichtet mit den Daten aus /etc/ax25/nrports für den
NetROM-Port »netrom« erzeugen, gibt man ein:
/usr/sbin/nrattach -i 44.136.8.5 -m 512 netrom
route add 44.136.8.5 nr0
Oder man benutzt die folgenden Befehle:
/usr/sbin/nrattach netrom
ifconfig nr0 44.136.8.5 netmask 255.255.255.0 hw netrom VK2KTJ-9
route add 44.136.8.5 nr0
Anschließend müssen für jeden IP-Rechner, der über NetROM erreichbar sein soll, die Einträge für Route und ARP gesetzt werden.
Um einen IP-Rechner mit der Adresse 44.136.80.4 auf NetROM-Adresse BBS:VK3BBS über die benachbarte Station VK2SUT-0 zu erreichen, gibt man folgendes ein:
route add 44.136.80.4 nr0
arp -t netrom -s 44.136.80.4 vk2sut-0
nrparms -nodes vk3bbs + BBS 120 6 sl0 vk2sut-0
Die Werte »120« und »6« beim nrparms-Befehl stehen für die NetROM-
Qualität und die Obsolescence dieser Route.
Die ROSE-Protokollebene entspricht der Ebene 3 der X.25-Spezifikation.
Die im Kernel enthaltene ROSE-Unterstützung ist eine modifizierte Version
des ROSE (RATS (Radio Amateur Teleprinter Society) Open System Environment)
AX.25 Packet Switch (
http://www.rats.org/rose/). Das ROSE-Protokoll setzt auf den
vorher erstellten AX.25-Ports auf.
Um ROSE einzurichten, muß man eine Konfigurationsdatei erstellen, die die zu verwendenden ROSE-Ports definiert. Man kann mehrere ROSE-Ports erstellen, für jeden gilt die gleiche Vorgehensweise.
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:
- Text-Bezeichner für den jeweiligen Port
- 10stellige ROSE-Adresse für den Port
- kurze, frei wählbare Beschreibung
Ein Beispiel:
rose 5050294760 ROSE-Port
Beachte, daß ROSE das für jeden AX.25-Port voreingestellte Rufzeichen verwendet, wenn nichts anderes angegeben wird.
Um ein eigenes Rufzeichen/SSID für ROSE festzulegen, gibt man folgendes ein:
/usr/sbin/rsparms -call VK2KTJ-10
Damit wartet Linux auf ROSE-Rufe unter dem Rufzeichen/SSID VK2KTJ-10 auf allen eingerichteten AX.25-Ports und verwendet dieses auch für ROSE- Verbindungen.
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 bis 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.
Zur Zeit unterstützt das ROSE-Protokoll nur statisches Routing.
Mit dem rsparms-Befehl kann die Routingtabelle eingerichtet werden:
rsparms -nodes add 5050295502 radio vk2xlz
Damit würde eine Route zum ROSE-Node 5050295502 über den AX.25-Port mit dem
Bezeichner »radio« laut /etc/ax25/axports zu einer benachbarten
Station mit dem Rufzeichen VK2XLZ hinzugefügt.
Es kann auch eine Maske angegeben werden, um mehrere ROSE-Zielrechner in einem Routing-Eintrag zu erfassen:
rsparms -nodes add 5050295502/4 radio vk2xlz
Damit werden alle Zieladressen erfaßt, die in den ersten 4 Stellen mit der angegebenen übereinstimmen, die also mit »5050« beginnen.
Der Befehl kann auch in dieser, sicher eindeutigeren, Form eingegeben werden:
rsparms -nodes add 5050/4 radio vk1xlz
Wer sich mit der ROM-basierten ROSE-Implementation auskennt, wird auch die Art des Verbindungsaufbaus über ein ROSE-Netzwerk kennen.
Hat ein lokaler ROSE-Node eines AX.25-Nutzers das Rufzeichen VK2KTJ-5 und der Nutzer will eine Verbindung zu VK5XXX auf dem entfernten Node 5050882960, dann wird er folgenden Befehl eingeben:
c vk5xxx v vk2ktj-5 5050 882960
Die entfernte Station VK5XXX würde dann eine unter dem Rufzeichen des lokalen Nutzers über das Rufzeichen des entfernten ROSE-Nodes (»via«) hereinkommende Verbindung erkennen.
Diese Funktionen werden bei der ROSE-Implementation unter Linux nicht vom
Kernel unterstützt, es gibt zwei Programme namens rsuplnk und
rsdownlnk dafür.
Damit die eigene Linux-Maschine hereinkommende ROSE-Verbindungen annimmt und
entsprechend an das gewünschte Zielrufzeichen weiterleitet, muß der
Datei /etc/ax25/ax25d.conf ein Eintrag hinzugefügt werden.
Im Normalfall wird dieser als Voreinstellung für alle hereinkommenden
ROSE-Verbindungen eingerichtet. Beispielsweise kann man ROSE-Nutzer für
HEARD-0 oder NODE-0 lokal arbeiten lassen, für alle anderen Zielrufzeichen
rsdownlnk 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 dem Namen »4800« mit dem Digipeater-Pfad VK2KTJ-5 umgewandelt, sofern kein gesondert zu behandelndes Zielrufzeichen angegeben wurde.
Damit die eigene Linux-Maschine in gleicher Weise wie das ROM-basierte ROSE
Verbindungen entgegennimmt, muß ein Eintrag in die Datei
/etc/ax25/ax25d.conf eingefügt werden, etwa so:
#
[VK2KTJ-5* via 4800]
NOCALL * * * * * * L default * * * * * * - root /usr/sbin/rsuplnk rsuplnk rose
#
Man beachte die spezielle Syntax für das lokale Rufzeichen,
das Zeichen »*« zeigt an, daß die Anwendung (hier rsuplnk) gestartet
werden soll, wenn das Rufzeichen im Digipeater-Pfad einer Verbindung
auftaucht.
Mit dieser Einstellung würde man einem AX.25-Nutzer erlauben, ROSE-Verbindungen mit beispielsweise
c vk5xxx v vk2ktj-5 5050 882960
herzustellen.
Jeder Nutzer, der den Digipeater über VK2KTJ-5 auf dem AX.25-Port »4800«
nutzen will, wird über rsuplnk weiterverbunden.