Linux AX25-HOWTO, Amateur Radio.
Terry Dawson, VK2KTJ, terry@perf.no.itg.telecom.com.au
Traduction par Thibaut Maquet, F5CDQ, maquet@bigfoot.com
v1.5, 17 octobre 1997
Le système d'exploitation Linux est sans doute le seul système
au monde pouvant se vanter d'avoir un support intégré de
l'AX25, un protocole radio utilisé par les opérateurs radio
amateurs dans le monde entier.
Le but de ce document est de décrire comment installer et configurer
ce support.
Il va vous falloir quelques temps avant de comprendre comment toutes
les choses vont ensemble.
Vous trouverez les choses fortement compliquées si vous ne vous
êtes pas correctement préparés à Linux en général.
Vous ne devez pas espérer basculer d'un autre environnement
à Linux sans un minimum de connaissance du système
Linux.
Vous pouvez toujours me contacter, mais j'ai l'habitude d'envoyer les
nouvelles versions de ce document
directement au coordinateur LDP HOWTO; donc s'il ne se trouve pas à
cet endroit alors il y a des chances
que je ne l'ai pas encore achevé.
Il s'agit de :
Le HAM-HOWTO <http://www.freenix.fr/linux/HOWTO/HAM-HOWTO.html>,
le Net-3-HOWTO < http://www.freenix.fr/linux/HOWTO/NET-3-HOWTO.html>,
le Ethernet-HOWTO < http://www.freenix.fr/linux/HOWTO/Ethernet-HOWTO.html>,
et
le Firewall-HOWTO <http://www.freenix.fr/linux/HOWTO/Firewall-HOWTO.html>
Plus d'informations sur la documentation HOW-TO Linux peuvent être trouvées sur:
Linux HOWTO <http://sunsite.unc.edu/LDP/HOWTO>
Le protocole NetRom est une tentative de protocole orienté connexion
totale et il utilise l'AX.25 à très
bas niveau en tant que protocole d'échange de données.
Il fournit une couche réseau qui est une forme
adaptée du AX.25.
Le protocole NetRom offre également du routage dynamique et
des alias pour les noeuds.
Le protocole Rose a été conçu et implémenté
par Tom Moulton W2VY et est une implémentation du
protocole X25 au niveau de sa couche paquet ; il a été
conçu pour fonctionner avec la couche d'échange
de données du AX25. Il fournit également une couche réseau.
Les adresses Rose ont la forme de dix
chiffres. Les quatre premiers chiffres sont appelés le code
d'identification du réseau de données
(Data Network Identification Code, DNIC) et ont été pris
dans l'appendice B de la recommandation X.121.
Plus d'informations sur le protocole Rose peuvent être obtenues
depuis le serveur web RATS
<http://www.rats.org>.
Alan Cox a développé quelques applicatifs basés
sur le noyau du AX.25 pour Linux.
Jonathon Naylor <g4klx@g4klx.demon.co.uk>
a la charge du développement à venir du code, il a ajouté
les supports NetRom et Rose et il est maintenant le développeur
principal du code du noyau AX.25.
Le support DAMA a été développé par
Joerg, DL1BKE, <jreuter@poboxex.com>.
Le support
du Baycom a été ajouté par Thomas Sailer, <sailer@ife.ee.ethz.ch>.
Finalement, j'ai la charge des programmes utilitaires AX.25.
Le code de Linux supporte les TNC (Terminal Node Controllers) basés
sur le mode KISS, la carte
Ottawa PI, la carte Gracilis PacketTwin et toutes les autres cartes
basées sur le Z8530 SCC avec le
pilote générique SCC; finalement, il supporte très
bien les modems Baycom sur ports séries et parallèles.
Le nouveau pilote de Thomas supporte les Soundblaster et autres cartes
sonores à base de puces Crystal.
Les programmes utilisateurs contiennent une PMS très simple (Personal
Message System, système de
messages personnels), une balise, un utilitaire de connexion en ligne
de commande, 'listen' un exemple
montrant comment capturer toutes trames AX.25 à bas niveau,
ainsi que d'autres programmes
permettant de configurer le protocole NetRom. Sont inclus également,
un serveur AX.25 capable de
gérer et de diriger n'importe quelles connexions AX.25 entrantes
ainsi qu'un daemon NetRom qui se
charge de toute la gestion ardue du protocole NetRom.
Pour vous aider à comprendre comment se déroule cette
phase de configuration, cette partie décrit
les caractéristiques structurelles de l'implémentation
AX.25 et la façon qu'elle s'introduit dans la structure
globale de Linux.
Représentation simplifiée des couches des protocoles
-----------------------------------------------
| AF_AX25 | AF_NETROM | AF_INET | AF_ROSE |
|=========|===========|=============|=========|
| |
|
| |
| |
| TCP/IP |
|
| |
---------- |
|
| | NetRom
| | Rose |
| -------------------------------------
| AX.25
|
-----------------------------------------------
Ce schéma illustre simplement que NetRom, Rose et TCP/IP fonctionnent
directement au somment de
AX.25, mais chacun de ces protocoles est traité séparément
dans l'interface de programmation.
Les noms commençant par "AF_" représentent simplement
l'adresse de famille de chacun de ces
protocoles lors de la création d'applications. La chose importante
à retenir est la dépendance implicite
de la configuration des unités AX.25 avant de pouvoir configurer
correctement les unités NetRom, Rose
ou TCP/IP.
Schéma des modules logiciels de l'implémentation réseau de Linux
-----------------------------------------------------------------------------
Utilisa-|
Programmes| call
node || Daemons | ax25d mheardd
teur
| |
pms mheard ||
| inetd netromd
-----------------------------------------------------------------------------
| Sockets | open(), close(), listen(), read(), write(), connect()
| |-------------------------------------------------------
| |
AF_AX25 | AF_NETROM | AF_ROSE
| AF_INET
|-------------------------------------------------------------------
Noyau
| Protocoles| AX.25 |
NetRom | Rose
| IP/TCP/UDP
|-------------------------------------------------------------------
| Unités | ax0,ax1
| nr0,nr1 | rose0,rose1 | eth0,ppp0
|-------------------------------------------------------------------
| Pilote | Kiss PI2 PacketTwin
SCC BPQ | slip ppp
| |
Modem son Baycom
| ethernet
-----------------------------------------------------------------------------
Matériel
| Carte PI2, carte PacketTwin, carte SCC, port série, carte ethernet
-----------------------------------------------------------------------------
Ce schéma est un peu plus général que le précédent.
Il tente de montrer la relation entre les applications
clientes, le noyau et le matériel.
Il démontre également les relations entre l'interface
de programmation des applications socket, les modules
des protocoles actuels, les unités réseau du noyau ainsi
que les pilotes d'unités.
Rien dans ce schéma ne dépend de quoique ce soit provenant
de la couche supérieure, et en général, vous
devez configurer depuis le bas vers le haut. Par exemple, si vous voulez
exécuter le programme "call", vous
devez également configurer le matériel, vous assurez
que le noyau dispose du pilote approprié, que vous
créez la bonne unité réseau, et que le noyau dispose
du protocole doté d'une interface de programmation
accessible depuis le programme "call". J'ai tente de vous montrer,
dans ce document, ces différentes étapes
dans plus ou moins le même ordre.
Les versions 2.0.xx du noyau Linux comprennent par défaut l'AX.25,
le NetRom, le Z8530 SCC et les pilotes
des cartes PI et PacketTwin. Il y a eu des améliorations significatives
dans les noyaux 2.1.* Malheureusement,
le reste des noyaux 2.1.* les rendent quelque peu instables pour le
moment, et ils sont à déconseillés pour un
système en production.
Afin d'arranger le problème, Jonathon Naylor a préparé
un kit de correction qui permettra l'utilisation des
protocoles amateurs radio depuis le noyau 2.0.28 jusqu'aux noyaux 2.1.*
Ce correctif s'applique très simplement, et fournit des facilités
absente dans les noyaux standards comme le
support Rose.
/pub/linux/kernel/v2.0/linux-2.0.31.tar.gz
La version présente des correctifs AX25 est disponible sur:
ftp.pspt.fi
/pub/linux/ham/ax25/ax25-module-14e.tar.gz
ftp.inka.de
/pub/comp/Linux/networking/net-tools/net-tools-1.33.tar.gz
La dernière distribution de ipfwadm peut être récupérée sur:
ftp.xos.nl
/pub/linux/ipfwadm/
Noyau Linux
Ensemble des utilitaires AX25
linux-2.0.29
ax25-utils-2.0.12c.tar.gz **
linux-2.0.28+module12
ax25-utils-2.1.22b.tar.gz **
linux-2.0.30+module14c
ax25-utils-2.1.42a.tar.gz
linux-2.0.31+module14d
ax25-utils-2.1.42a.tar.gz
linux-2.1.22 ++
ax25-utils-2.1.22b.tar.gz
linux-2.1.42 ++
ax25-utils-2.1.42a.tar.gz
Note: la série des ax25-utils-2.0.* (marquées ci dessus
avec le symbole '**') est désormais obsolète et n'est
plus supportée. Ce document couvre les configurations utilisant
les versions des logiciels recommandés dans
le tableau. Puisqu'il existe des différences entre les versions,
la plupart des informations corresponderont avec
les dernières mises à jour du code.
Les programmes utilitaires AX.25 peuvent être récupérés sur:
ftp.pspt.fi
<ftp://ftp.pspt.fi/pub/linux/ham/ax25/>
ou sur: sunsite.unc.edu
<ftp://sunsite.unc.edu/pub/Linux/apps/ham/>
Normalement, les sources du noyau doivent être décompactées
dans le répertoire /usr/src dans un
sous-répertoire appelé Linux. Pour faire ceci,
vous devez vous connecter en tant que root et exécuter
une série de commandes comme suit:
# mv linux linux.old
# cd /usr/src
# tar xvfz linux-2.0.31.tar.gz
# tar xvfz /pub/net/ax25/ax25-module-14e.tar.gz
# patch -p0 </usr/src/ax25-module-14/ax25-2.0.31-2.1.47-2.diff
# cd linux
Après avoir décompacté les sources du noyau au
bon endroit et appliqué le correctif, il faut exécuter le
script de configuration et choisir les options qui conviennent à
votre environnement matériel ainsi que les
composantes que vous souhaitez incorporer dans votre noyau. Pour
faire cela, utilisez la commande suivante:
# make menuconfig
Vous pouvez également essayer ceci:
# make config
si vous préférez utiliser une installation pleine écran.
Je vais maintenant vous décrire la méthode originale mais
vous pouvez utiliser celle avec laquelle vous sentez le mieux.
Dans chaque cas, on va vous proposer un champ d'options pour lesquels
vous devrez répondre par 'Y'(Yes)
ou 'N'(No). (Notez que vous pouvez également répondre
par 'M' si vous souhaitez utiliser les modules).
Afin de simplifier les choses, je vais considérer que vous ne
les utilisez pas; dans le cas contraire, veuillez
faire les modifications appropriées.
Les options les plus significatives pour une configuration AX.25 sont:
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 <16Mb of memory)
...
[*] Amateur 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 for 9600 baud
FSK G3RUH modulation
[?] Serial port KISS driver for AX.25
[?] BPQ Ethernet driver for AX.25
[?] Gracilis PackeTwin support for AX.25
[?] Ottawa PI and PI/2 support for AX.25
[?] Z8530 SCC KISS emulation driver
for AX.25
...
Les options que j'ai indiqué par un '*' sont celles pour lequel
vous devez répondre 'Y'. Le reste dépend
du matériel en votre possession ainsi que des options que vous
souhaitez inclure. Quelques-unes de ces
options sont décrites plus en détail plus loin, donc
si vous ne savez pas encore ce que vous voulez, alors
continuez à lire et revenez plus tard sur cette étape.
Une fois que vous en avez terminé avec la configuration du noyau,
vous devriez être capable de compiler
le noyau:
# make dep
# make clean
# make zImage
Soyez sûrs d'avoir déplacer votre fichier arch/i386/boot/zImage
où vous voulez, éditez votre fichier
/etc/lilo.conf et relancez lilo pour vous assurer que votre système
démarre grâce à ce fichier.
Si vous avez choisi de compiler au moins une des composantes sous forme
de module, alors vous
devez également utiliser:
# make modules
# make modules_install
afin d'installer vos modules au bon endroit.
Vous devez également ajouter quelques entrées dans votre
fichier /etc/conf.modules de façon à ce
que votre programme kerneld sache comment faire fonctionner les modules
du noyau.
Vous devez ajouter/modifier les choses suivantes:
alias net-pf-3
ax25
alias net-pf-6
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 (ou l'un des autres pilotes scc)
alias sm0
soundmodem
alias tunl0
newtunnel
alias char-major-4 serial
alias char-major-5 serial
alias char-major-6 lp
modularisation
les protocoles et pilotes
ont tous été modularisés de façon à
ce que vous
puissiez les utiliser avec
insmod et rmmod. Ceci réduit les exigences
en mémoire du noyau
pour l'utilisation de modules rarement utilisée
et rend la chasse aux erreurs
de programmation beaucoup plus facile.
Ceci dit, cela complique
beaucoup plus la configuration.
Tous les pilotes sont maintenant des pilotes
réseau
toutes les unités
réseau telles que Baycom, SCC, PI, Packettwin, etc...
présentent désormais
une interface réseau normale, ainsi ils
ressemblent maintenant à
un pilote Ethernet, et ne ressemblent plus
à des TNC en mode
KISS. Un nouvel utilitaire appelé net2kiss vous
autorise à construire
une interface KISS vers ces unités si vous le
souhaitez.
correction d'erreurs
il y a eu beaucoup de corrections
d'erreurs ainsi que l'ajout de nouvelles
spécificités
aux pilotes et protocoles. Le protocole Rose est l'un de
ces plus importants ajouts.
La nouvelle version alpha de la distribution standard des net-tools
comprend le support de
l'AX.25 et du NetRom. Je l'ai testé et elle semble fonctionner
correctement.
Vous pouvez obtenir ce correctif sur: zone.pspt.fi
<ftp://zone.pspt.fi/pub/linux/ham/ax25/net-tools-1.33.rose.tjd.diff.gz>.
# cd /usr/src
# tar xvfz net-tools-1.33.tar.gz
# zcat net-tools-1.33.rose.tjd.diff.gz
| patch -p0
# cd net-tools-1.33
# make config
A cette étape, on va vous poser une série de questions
pour la configuration, un peu comme
ce qui a été fait avec la configuration du noyau.
Soyez sûrs d'y inclure le support pour tous
les protocoles et pour le type de matériel réseau que
vous souhaitez utiliser. Si vous ne savez
pas quoi répondre à une question particulière,
alors répondez 'Y'. A l'instar du noyau. Lorsque
la compilation est terminée, il vous faut utiliser:
# make install
pour installer l'ensemble des programmes au bon endroit.
Si vous souhaitez utiliser le pare-feu IP (firewall), alors vous allez
devoir vous procurer les derniers
outils d'administration firewall ipfwadm.
Ces outils remplacent la vieille version des outils ipfw qui ne marchent
plus avec les nouveaux noyaux.
Je compile les utilitaires ipfwadm de la façon suivante:
# cd /usr/src
# tar xvfz ipfwadm-2.0beta2.tar.gz
# cd ipfwadm-2.0beta2
# make install
# cp ipfwadm.8 /usr/man/man8
# cp ipfw.4 /usr/man/man4
Les fichiers vont être installés par défaut dans
le répertoire /usr ainsi que dans les sous-répertoires:
bin, sbin, etc et man.
S'il s'agit de votre première installation, que vous n'avez jamais
installé aucun des utilitaires AX25
sur votre machine auparavant, alors utilisez:
# make installconf
afin d'installer quelques exemples de fichier de configuration dans le bon répertoire.
Si vous obtenez des messages comme suit:
gcc -Wall -Wstrict-prototypes -O2 -I../lib -c call.c
call.c: In function `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.)
alors vous devriez vérifier que vous avez la distribution ncurses
correctement installée sur votre
système. Le script de configuration tente de localiser la distribution
ncurses aux endroits habituels,
mais il est possible qu'elle n'ait pas été proprement
installée et dès lors, il sera impossible de la localiser.
Quelques implémentations AX.25 comme NOS et BPQ vous autoriseront
à configurer
les mêmes indicatifs et ssid sur chacun des ports AX.25 et NetRom.
Pour quelques raisons
techniquement compliquées, Linux ne vous l'autorisera pas. Toutefois,
ceci n'est pas un problème
insurmontable comme on pourrait le croire.
Ceci signifie qu'il y a certaines choses que vous devez savoir et prendre
en considération lorsque
vous préparez vos configurations.
1. Chaque port AX.25 et NetRom doit être configuré
avec un indicatif/ssid
unique.
2. TCP/IP utilisera l'indicatif et le ssid du port AX.25 par
lequel on transmet
ou on reçoit, c'est-à-dire celui
que vous avez configuré pour l'interface
AX.25 au point 1.
3. NetRom utilisera l'indicatif et le ssid spécifié
pour lui dans son fichier
de configuration, mais cet indicatif est seulement
utilisé lorsque votre NetRom
parle à un autre NetRom, il ne s'agit
pas de l'indicatif/ssid que les
utilisateurs AX.25 souhaitant accéder
à votre noeud NetRom utiliseront.
Plus d'informations seront fournies par la
suite.
4. Par défaut, Rose utilise l'indicatif/ssid du port AX.25,
à moins que
l'indicatif Rose n'ait été spécifié
grâce à la commande 'rsparms'.
Si vous définissez un indicatif/ssid
au moyen de la commande
'rsparms' alors Rose utilisera cet indicatif/ssid
sur tous les
ports.
5. D'autres programmes, tels que le programme 'ax25d' peuvent
écouter
au moyen de n'importe quel indicatif/ssid
désiré et il peut même
y avoir des doublons sur les différents
ports.
6. Si vous prenez garde au routage, vous pouvez configurer la
même adresse IP
sur tous les ports que vous voulez.
La structure des fichiers dans /proc/sys/net/ax25/<nom du port>/ est la suivante:
Nom du fichier
Signification
Valeur
Défaut
ip_default_mode
Mode IP par défaut 0=DG 1=VC
0
ax25_default_mode
Mode AX.25 par défaut 0=Normal 1=Etendu
0
backoff_type
Terminaison
0=Linéaire 1=Exponentielle 1
connect_mode
Mode connecté
0=Non 1=Oui
1
standard_window_size
Fenêtre standard 1
<= N <= 7
2
extended_window_size
Fenêtre étendue
1 <= N <= 63
32
t1_timeout
Compteur T1
1s <= N <= 30s
10s
t2_timeout
Compteur T2
1s <= N <= 20s
3s
t3_timeout
Compteur T3
0s <= N <= 3600s
300s
idle_timeout
Compteur d'inactivité 0m <= N
20m
maximum_retry_count
N2
1 <= N <= 31
10
maximum_packet_length
Longueur de trame AX.25 1 <= N <= 512
256
Dans la table, T1, T2 et T2 sont donnés en secondes, et le compteur
d'inactivité est donné en
minutes. Mais veuillez noter que les valeurs utilisées dans
l'interface sysctl sont données en unités
internes où le temps en seconde est multiplié par 10,
ceci autorise des résolutions jusqu'à 1/10
de seconde. Avec des compteurs qui autorisent des valeurs nulles, comme
T3 et le compteur
d'inactivité, une valeur à zéro indique que le
compteur est désactivé.
La structure des fichiers dans /proc/sys/net/netrom/ est la suivante:
Nom du fichier
Valeur
Défaut
default_path_quality
10
link_fails_count
2
network_ttl_initialiser
16
obsolescence_count_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
La structure des fichiers dans /proc/sys/net/rose/ est la suivante:
Nom du fichier
Valeur
Défaut
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
Pour mettre un paramètre, tout ce que vous avez à faire
est d'écrire la valeur désirée
dans le fichier lui-même, par exemple pour vérifier et
mettre la taille de la fenêtre Rose,
utilisez ceci:
# cat /proc/sys/net/rose/window_size
3
# echo 4 >/proc/sys/net/rose/window_size
# cat /proc/sys/net/rose/window_size
4
General setup --->
[*] Networking
support
Network device support --->
[*] Network
device support
...
[*] Radio
network interfaces
[*] Serial
port KISS driver for AX.25
La configuration la plus courante sera un TNC en mode KISS branché
sur un port série.
Il vous faudra d'abord configurer votre TNC ainsi que le connecter
à votre port série. Vous pouvez
utiliser un programme de communication comme minicom ou seyon pour
configurer votre TNC en
mode KISS.
Pour créer une unité KISS, utilisez le programme kissattach.
Dans sa forme la plus simple, vous pouvez
employer kissattach de la façon suivante:
# /usr/sbin/kissattach /dev/ttyS0
radio
# kissparms -p radio -t 100 -s
100 -r 25
La commande kissattach va créer une unité réseau
KISS. Ces unités sont appelées 'ax[0-9]'. La première
fois que vous utilisez la commande kissattach, elle va créer
'ax0', la seconde fois, 'ax1', etc...
Chaque unité KISS est associée à un port série.
La commande kissparms vous autorise à paramétrer une unité KISS.
L'exemple présenté ci dessus va créer une unité
réseau KISS au moyen de l'unité série '/dev/ttyS0'
ainsi que
par l'entrée du fichier /etc/ax25/axports avec un nom
de port appelé 'radio'. Il sera alors configuré avec un
txdelay et un slottime de 100 millisecondes et une valeur ppersist
fixée à 25.
Veuillez vous référer aux pages du manuel (man) pour plus d'informations.
Exemple: si vous avez un TNC à double port connecté à
l'unité série /dev/ttyS0 à une vitesse de 9600
bps, la commande:
# /usr/sbin/mkiss -s 9600 /dev/ttyS0
/dev/ptyq0 /dev/ptyq1
# /usr/sbin/kissattach /dev/ttyq0
port1
# /usr/sbin/kissattach /dev/ttyq1
port2
va créer deux pseudos unités tty ressemblant à
un seul et même port TNC.
Vous allez alors considérer /dev/ttyq0 et /dev/ttyq1 juste comme
une simple unité série connectée à un TNC.
Ce qui signifie que vous allez alors utiliser la commande kissattach
comme décrite ci dessus, pour chacune
des unités, dans l'exemple des ports AX.25 appelés port1
et port2.
Vous ne devez pas utiliser kissattach pour la réelle unité
série car le programme mkiss l'utilise.
La commande mkiss a quelques options que vous pouvez utiliser. Elles sont explicitées ci dessous:
-c autorise l'ajout d'un octet de somme de contrôle à
chaque trame KISS.
Ceci n'est pas compatible avec la majorité des implémentations
KISS, mais uniquement avec les roms
KISS G8BPG.
- <vitesse>
définit la vitesse du port série.
-h autorise le handshaking hardware sur le port série,
par défaut cette option n'est pas activée.
La plupart des implémentations KISS ne le supporte pas,
d'autres si.
-l autorise le trace des informations vers le journal d'activité.
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
Thomas Sailer, <sailer@ife.ee.ethz.ch>,
malgré son intime conviction que cela ne marcherait jamais
correctement, a développé un support Linux pour
les modems Baycom. Son pilote supporte le port
série Ser12, ainsi que les modems sur les ports parallèles,
le Par96 et le modèle évolué PicPar.
D'autres informations complémentaires sur les modems peuvent
être obtenues sur le site Web
Baycom: <http://www.baycom.de>.
Votre première étape est de déterminer les entrées-sorties
et les adresses des ports série ou
parallèles sur lesquels sont branchés vos modems
Baycoms. Lorsque vous les avez, alors vous devez
les utiliser pour configurer le pilote du Baycom.
Le pilote du BayCom crée des unités réseau appelées: bc0, bc1, bc2 etc. lorsqu'il est configuré.
L'utilitaire sethdlc vous autorise à configurer le pilote avec
ces paramètres, ou, si vous n'avez qu'un
seul modem Baycom d'installé, vous pouvez spécifier
les paramètres grâce à la commande en ligne
insmod lorsque vous chargez le module Baycom.
Par exemple, voici une simple configuration. Désactivez
le pilote série pour COM1: puis configurez
le pilote Baycom pour un modem Ser12 sur le port série
COM1: avec l'option logicielle DCD activée:
# setserial /dev/ttyS0 uart none
# insmod hdlcdrv
# insmod baycom mode="ser12" iobase=0x3f8
irq=4
Modem Par96 sur port parallèle LPT1: avec détection matérielle DCD:
# insmod hdlcdrv
# insmod baycom mode="par96" iobase=0x378
irq=7 options=0
Ceci n'est pas réellement la plus judicieuse façon de
procéder. L'utilitaire sethdlc fonctionne aussi bien
avec une seule unité qu'avec plusieurs.
Les pages du manuel sur sethdlc contiennent beaucoup de détails,
mais une série d'exemples illustrera
les aspects les plus importants de cette configuration. Les exemples
suivants supposent que vous avez
déjà chargé le module Baycom grâce
à:
# insmod hdlcdrv
# insmod baycom
ou que vous ayiez compilé le noyau avec son pilote à l'intérieur.
Configure le pilote de l'unité bc0 avec le modem Baycom sur le
port parallèle LPT1: avec l'option logicielle
DCD:
# sethdlc -p -i bc0 mode par96 io 0x378 irq 7
Configure le pilote de l'unité bc1 avec le modem Baycom sur le port série COM1:
# sethdlc -p -i bc1 mode "ser12*" io 0x3f8 irq 4
Une fois de plus, les pages du manuel de sethdlc sont une des plus complètes
sources d'information mais
un autre exemple ne peut pas faire de mal:
Configuration de l'unité bc0 avec un TxDelay à 200 mS,
un SlotTime à 100 mS, un PPersist à 40 et
en half duplex:
# sethdlc -i bc0 -a txd 200 slot 100 ppersist 40 half
Remarquez que les valeurs sont exprimées en millisecondes.
La première étape est de configurer l'unité avec
un indicatif AX.25.
L'utilitaire ifconfig sera utilisé dans ce but.
# /sbin/ifconfig bc0 hw ax25 VK2KTJ-15 up
assignera l'unité BayCom bc0 à l'indicatif AX.25 VK2KTJ-15.
Alternativement, vous pouvez utiliser la commande axparms, vous devez
toujours employer la
commande ifconfig pour activer l'unité:
# ifconfig bc0 up
# axparms -setcall bc0 vk2ktj-15
La prochaine étape est de créer une entrée dans
le fichier /etc/ax25/axports tout comme vous le
faites pour n'importe quelle autre unité.
L'entrée dans le fichier axports est associée à
l'unité réseau que vous avez configuré au moyen
de
l'indicatif. L'entrée dans le fichier axports qui a l'indicatif
avec lequel vous avez configuré l'unité
Baycom est celle qui sera utilisée pour y faire référence.
Vous pouvez alors considérer la nouvelle unité AX.25 tout
comme vous le ferez pour n'importe
quelle autre unité. Vous pouvez la configurer pour TCP/IP,
l'ajouter à ax25d et même y exécuter
NetRom ou Rose par-dessus si cela vous chante.
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 for 9600 baud FSK G3RUH modulation
Thomas Sailer a construit un nouveau pilote pour le noyau qui vous permet
d'utiliser votre
carte son comme un modem. Connectez votre radio directement à
votre carte son pour
faire du packet !
Thomas recommande au moins un 486DX2/66 si vous voulez utiliser ce
logiciel
car toute la gestion des signaux digitaux est faite directement par
le processeur principal.
Le pilote émule les modems de type 1200 bauds AFSK, 4800 HAPN
ainsi que les 9600 FSK
(Compatible G3RUH). Pour le moment, les seules cartes son supportées
sont les modèles compatibles
SoundBlaster et WindowsSoundSystem.
Les cartes son demandent quelques petites modifications électroniques
permettant de piloter le
mécanisme Push-To-Talk; vous trouverez plus d'informations sur
le site Web de Thomas:
<http://www.ife.ee.ethz.ch/~sailer/pcf/ptt_circ/ptt.html>.
Il y a quelques options possibles, il s'agit de: détecter le
son sortant de la carte ou d'utiliser la sortie
depuis un port parallèle, série ou midi.
Vous trouverez des exemples de montage pour chacun d'eux sur le site
de Thomas.
Le pilote de la carte son crée des unités réseau
appelées: sm0, sm1, sm2, etc... lors de la
configuration.
Note: le pilote de la carte est en conflit avec les ressources sonores
de Linux. Donc, si vous comptez
utiliser le pilote de la carte son, vous devez vous assurer que
le pilote de son Linux n'est pas installé.
Naturellement, vous pouvez compiler les deux sous forme de modules,
les insérer et les retirer selon
vos besoins.
setcrystal [-w wssio] [-s sbio] [-f synthio] [-i irq] [-d dma] [-c dma2]
Par exemple, si vous souhaitez configurer une carte soundblaster avec
une adresse d'entrées-sorties à
0x388, une irq à 10 et un DMA à 1, utilisez:
# setcrystal -s 0x388 -i 10 -d 1
Pour configurer une carte WindowSoundSystem avec une adresse d'entrées-sorties
à 0x534, une irq à 5
et un DMA à 3, utilisez:
# setcrystal -w 0x534 -i 5 -d 3
Le paramètre [-f synthio] est l'adresse du synthétiseur,
et le paramètre [-c dma2] permet de contrôler le
second canal DMA afin d'effectuer des opérations en full
duplex.
Par exemple, une simple configuration, avec une seule carte son
SoundBlaster configurée ci-dessous émule
un modem a 1200 bps:
# insmod hdlcdrv
# insmod soundmodem mode="sbc:afsk1200"
iobase=0x220 irq=5 dma=1
En fait, il ne s'agit pas de la meilleure façon de procéder.
L'utilitaire sethdlc fonctionne aussi facilement avec
une seule unité qu'avec toutes les autres.
Les pages man de sethdlc contiennent tous les détails, mais
quelques exemples illustreront les aspects les
plus importants de cette configuration. Les exemples suivants supposent
que vous avez déjà chargé
les modules de modem son grâce à:
# insmod hdlcdrv
# insmod soundmodem
ou que vous ayiez déjà compilé le noyau avec le pilote à l'intérieur.
Configure le pilote pour supporter la carte WindowsSoundSystem que nous
avons configuré auparavant
afin d'émuler un modem compatible G3RUH 9600 en unité
sm0 sur le port parallèle à l'adresse 0x378
avec support du Push-To-Talk:
# sethdlc -p -i sm0 mode wss:fsk9600 io 0x534 irq 5 dma 3 pario 0x378
Configure le pilote pour supporter la carte SoundBlaster que nous
avons configuré auparavant afin d'émuler
un modem 4800 bps HAPN en unité sm1 au moyen du port série
à l'adresse 0x2f8 avec support du
Push-To-Talk:
# sethdlc -p -i sm1 mode sbc:hapn4800 io 0x388 irq 10 dma 1 serio 0x2f8
Configure le pilote afin qu'il puisse supporter la carte SoundBlaster
que nous avions configuré afin qu'elle émule
un modem AFSK à 1200 bps. en unité sm1 au moyen
du port série à l'adresse 0x2f8 avec support du
Push-To-Talk:
# sethdlc -p -i sm1 mode sbc:afsk1200 io 0x388 irq 10 dma 1 serio 0x2f8
Configure l'unité sm0 avec un TxDelay de 100 mS, un SlotTime
de 50mS, un PPersist de 128, le tout en
full duplex:
# sethdlc -i sm0 -a txd 100 slot 50 ppersist 128 full
Notez que les valeurs de timing sont en millisecondes.
smdiag
fournit deux types d'affichage,
l'un de type oscilloscope,
l'autre de type "modèle
oculaire".
smmixer
vous autorise à ajuster
les niveaux audio en transmission et en
réception.
Afin de démarrer l'utilitaire smdiag pour l'unité sm0 du modem son en mode 'oculaire', utilisez:
# smdiag -i sm0 -e
Afin de démarrer l'utilitaire smmixer pour l'unité sm0 du modem son, utilisez:
# smmixer -i sm0
La première étape est de configurer l'unité avec
un indicatif AX.25.
L'utilitaire ifconfig peut être utiliser dans ce but.
# /sbin/ifconfig sm0 hw ax25 VK2KTJ-15 up
assignera l'unité sm0 du modem son à l'indicatif AX.25
VK2KTJ-4. Alternativement, vous pouvez utiliser
la commande axparms, mais vous devez toujours employer la commande
ifconfig pour activer l'unité:
# ifconfig sm0 up
# axparms -setcall sm0 vk2ktj-15
La prochaine étape est de créer une entrée dans
le fichier /etc/ax25/axports tout comme vous l'avez déjà
effectué pour n'importe quelle autre unité.
L'entrée dans le fichier axports est associée à
l'unité réseau que vous avez configuré au moyen
de l'indicatif.
L'entrée dans le fichier axports qui a l'indicatif avec lequel
vous avez configuré l'unité Baycom est
celle qui sera utilisée pour y faire référence.
Vous pouvez alors considérer la nouvelle unité AX.25 tout
comme vous le ferez pour n'importe quelle autre
unité. Vous pouvez la configurer pour TCP/IP, l'ajouter
à ax25d et même y exécuter NetRom ou Rose
par-dessus si cela vous chante.
General setup --->
[*] Networking
support
Network device support --->
[*] Network
device support
...
[*] Radio
network interfaces
[*] Ottawa
PI and PI/2 support for AX.25
Le pilote de l'unité de la carte PI crée deux unités
appelées 'pi[0-9][ab]'. La première carte PI
détectée
allouera 'pi0', la seconde 'pi1', etc.
Les 'a' et 'b' font référence à la première
et seconde interface physique sur la carte PI. Si vous avez inclut
les pilotes de cartes PI dans votre noyau, et que la carte a
été correctement détectée alors vous
pouvez
utiliser la commande suivante afin de configurer les unités
réseau:
# /sbin/ifconfig pi0a hw ax25 VK2KTJ-15 up
Cette commande va configurer le premier port sur la première
carte PI détectée avec l'indicatif VK2KTJ-15
et la rendre active. Pour utiliser l'unité, il vous faut
configurer une entrée dans votre fichier
/etc/ax25/axports avec un indicatif/ssid correspondant et vous serez
alors prêts à continuer.
Le pilote de la carte PI a été écrit par David Perry, <dp@hydra.carleton.edu>
General setup --->
[*] Networking
support
Network device support --->
[*] Network
device support
...
[*] Radio
network interfaces
[*] Gracilis
PackeTwin support for AX.25
Le pilote de l'unité de la carte PacketTwin crée deux
unités appelées 'pt[0-9][ab]'.
La première carte PacketTwin détectée allouera
'pt0', la seconde 'pt1', etc.
Les 'a' et 'b' font référence à la première
et seconde interface physique sur la carte
PacketTwin. Si vous avez inclut les pilotes de cartes PI dans
votre noyau, et que la
carte a été correctement détectée alors
vous pouvez utiliser la commande suivante afin
de configurer les unités réseau:
# /sbin/ifconfig pt0a hw ax25 VK2KTJ-15 up
Cette commande va configurer le premier port sur la première
carte PacketTwin
détectée avec l'indicatif VK2KTJ-15 et la rendre active.
Pour utiliser l'unité, il vous
faut configurer une entrée dans votre fichier /etc/ax25/axports
avec un indicatif/ssid
correspondant.
Le pilote de la carte PacketTwin a été écrit par
Craig Small VK2XLZ,
<csmall@triode.apana.org.au>.
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@poboxes.com
a développé un support générique pour
les cartes à
base de Z8530 SCC. Son pilote est configurable afin de supporter
un bon nombre de différents types
de cartes et présente une interface semblable à un TNC
KISS ainsi vous pouvez donc le considérer
comme s'il s'agissait d'un TNC en mode KISS.
Vous pouvez obtenir la distribution des outils de configuration sur:
Joerg's web page <http://www.rat.de/jr/>
ou:
db0bm.automation.fh-aachen.de
/incoming/dl1bke/
ou:
insl1.etec.uni-karlsruhe.de
/pub/hamradio/linux/z8530/
ou:
ftp.ucsd.edu
/hamradio/packet/tcpip/linux
/hamradio/packet/tcpip/incoming/
Vous allez y trouver plusieurs versions, choisissez celle qui correspond
le mieux au noyau que vous
souhaitez utiliser.
z8530drv-2.4a.dl1bke.tar.gz 2.0.*
z8530drv-utils-3.0.tar.gz 2.1.6 ou plus
Les commandes suivantes étaient celles que j'utilisais pour compiler
et installer la distribution du
noyau 2.0.30:
# cd /usr/src
# gzip -dc z8530drv-2.4a.dl1bke.tar.gz
| tar xvpofz -
# cd z8530drv
# make clean
# make dep
# make module
# Si vous voulez utiliser le pilote comme un module
# make for_kernel
# Si vous voulez inclure le pilote dans le noyau
# make install
Ceci terminé, vous devriez trois nouveaux programmes installés
dans votre répertoire /sbin: gencfg,
sccinit et sccstat. Ce sont ces programmes que vous allez utiliser
pour configurer le pilote pour votre carte.
Vous allez également avoir un groupe de nouvelles unités
créées dans votre /dev appelées scc0 .. scc7.
Ils seront utilisés plus tard exactement comme des unités
'KISS'.
Si vous choisissez de faire un 'make for_kernel', alors vous allez devoir
recompiler votre noyau. Afin d'être
sûrs d'y incorporer le support du pilote z8530, soyez sûr
de répondre 'Y' à la question
'Z8530 SCC kiss emulation driver for AX.25' durant la phase de configuration
du noyau 'make config'.
Si vous choisissez de faire un 'make module' alors le nouveau fichier
scc.o devra être installé dans le bon
répertoire /lib/modules et dans ce cas, il sera inutile
de recompiler votre noyau. N'oubliez pas d'utiliser la
commande insmod pour charger le module avant de l'utiliser et de le
configurer.
Il y a une documentation plus élaborée dans la distribution
et vous devriez la lire si vous avez le
moindre problème. Cherchez particulièrement dans doc/scc_eng.doc
ou doc/scc_ger.doc pour
plus d'informations. J'ai paraphrasé les détails
importants mais il y a beaucoup de petits détails
que j'ai omis.
Le fichier principal de configuration est lu par le programme sccinit
et il est appelé /etc/z8530drv.conf.
Ce fichier est scindé en deux étapes principales: configuration
des paramètres matériels et configuration des
canaux. Une fois que vous avez configuré ce fichier, ajoutez
simplement:
# sccinit
dans votre fichier rc qui configure votre réseau et le pilote
va être initialisé grâce au contenu du fichier de
configuration. Vous devez absolument faire ceci avant de tenter d'utiliser
le pilote.
Les mots clés et paramètres sont les suivants:
chip
le mot clé chip est utilisé
pour séparer les phrases. Il ne prend pas en
compte les éventuels paramètres
présents.
data_a
ce mot clé est utilisé
pour configurer l'adresse du port de donnée
pour le canal 'A' du z8530. Le
paramètre est un nombre hexadécimal,
par exemple 0x300.
ctrl_a
ce mot clé est utilisé
pour spécifier l'adresse du port de contrôle
pour le canal 'A' du z8530. Le paramètre
est un nombre hexadécimal,
par exemple 0x304.
data_b
ce mot clé est utilisé
pour spécifier l'adresse du port de donnée
pour le canal 'B' du z8530. Le paramètre
est un nombre hexadécimal,
par exemple 0x301.
ctrl_b
ce mot clé est utilisé
pour spécifier l'adresse du port de contrôle
pour le canal 'B' du z8530. Le paramètre
est un nombre hexadécimal,
par exemple 0x305.
irq
ce mot clé est utilisé
pour spécifier l'IRQ utilisée par le 8530 SCC
décrit dans cette phrase. Le
paramètre est un entier, par exemple 5.
pclock
ce mot clé est utilisé
pour spécifier la fréquence d'horloge sur
la broche PCLK du 8530. Le paramètre
est une fréquence entière notée
en Hz dont le défaut est 4915200
si le mot clé n'est pas fourni.
board
le type de platine supporte par le 8530
SCC. Le paramètre est une
chaîne de caractères. Les
valeurs autorisées sont:
PA0HZP
la carte PA0HZP SCC
EAGLE
la carte Eagle
PC100
la carte DRSI PC100 SCC
PRIMUS
la carte PRIMUS-PC (DG9BL)
BAYCOM
la carte BayCom (U)SCC
escc
ce mot clé optionnel est utilisé
pour permettre le support des puces
SCC étendues (Extended SCC chips,
ESCC) comme le 8580, 85180 ou le
85280. Le paramètre est une chaîne
de caractères avec 'yes' ou 'no'
comme valeur possible. La valeur par
défaut est 'no'.
vector
ce mot clé optionnel spécifie
l'adresse du vecteur loquet (également
connu comme "port intack") pour les cartes
PA0HZP. Il ne peut y avoir
qu'un seul vecteur loquet pour toutes les
puces. Par défaut, cette
valeur est à zéro.
special
ce mot clé optionnel spécifie
l'adresse du registre de fonction spécial
présent sur quelques cartes. Par défaut,
il est à zéro.
option
ce mot clé est facultatif et par défaut
à zéro.
Ci-dessous, quelques exemples de configuration pour les cartes les plus populaires:
BayCom USCC
chip 1
data_a 0x300
ctrl_a 0x304
data_b 0x301
ctrl_b 0x305
irq 5
board BAYCOM
#
# SCC chip 2
#
chip 2
data_a 0x302
ctrl_a 0x306
data_b 0x303
ctrl_b 0x307
board BAYCOM
Carte PA0HZP SCC
chip 1
data_a 0x153
data_b 0x151
ctrl_a 0x152
ctrl_b 0x150
irq 9
pclock 4915200
board PA0HZP
vector 0x168
escc no
#
#
#
chip 2
data_a 0x157
data_b 0x155
ctrl_a 0x156
ctrl_b 0x154
irq 9
pclock 4915200
board PA0HZP
vector 0x168
escc no
Carte DRSI SCC
chip 1
data_a 0x303
data_b 0x301
ctrl_a 0x302
ctrl_b 0x300
irq 7
pclock 4915200
board DRSI
escc no
Si vous avez déjà une configuration qui marche pour votre
carte avec NOS, alors vous pouvez
utiliser la commande gencfg pour convertir les commandes du pilote
PE1CHL NOS en quelque
chose de compréhensible par le fichier de configuration
du pilote z8530.
Pour utiliser gencfg, invoquez le simplement avec les mêmes paramètres
que vous utilisez avec le
pilote PE1CHL dans NET/NOS. Par exemple:
# gencfg 2 0x150 4 2 0 1 0x168 9 4915200
va générer un squelette de configuration pour la carte OptoSCC.
Les mots clé et leurs paramètres sont aussi écrits
dans le fichier /etc/z8530drv.conf et doivent apparaître
après le chapitre des paramètres matériels.
L'agencement est très important dans ce chapitre mais si vous
vous en tenez à la séquence suggérée
alors
cela devrait marcher. Les mots clé et arguments sont les
suivants:
device
ce mot clé doit être la première
ligne de la définition du port, il
spécifie le nom du fichier des unités
spéciales qui s'appliquent au
restant de la configuration, par exemple /dev/scc0
speed
ce mot clé spécifie la vitesse en
bits par seconde de l'interface. Le
paramètre est un entier: par exemple, 1200.
clock
ce mot clé spécifie l'origine de l'horloge
pour les données. Les valeurs
possibles sont:
dpll
opération normale en halfduplex.
external
le modem fournit sa propre horloge Rx/Tx
divider
utilise le diviseur fullduplex si installé.
mode
ce mot clé spécifie le type de codage
de données à utiliser.
Les paramètres autorisés sont: nrzi
ou nr.
rxbuffers
ce mot clé spécifie le nombre de buffers
en réception afin
d'allouer la mémoire. Le paramètre
est un entier, par exemple 8.
txbuffers
ce mot clé spécifie le nombre de buffers
en émission afin
d'allouer la mémoire. Le paramètre
est un entier, par exemple 8.
bufsize
ce mot clé spécifie la taille des
buffers de réception et d'émission.
Le paramètre est en octets et il représente
la longueur totale de la
trame, il doit également prendre en compte
les entêtes AX.25 et pas
seulement la longueur du champ d'information. Ce
mot clé est optionnel
et est fixé par défaut à 384.
txdelay
la valeur du délai de transmission KISS,
le paramètre est un entier en mS.
persist
la valeur de persistance KISS, le paramètre
est un entier.
slot
la valeur du temps d'ouverture KISS, le paramètre
est un entier en mS.
tail
la valeur de la queue de transmission KISS, le paramètre
est un entier en
mS.
fulldup
le drapeau de full duplex KISS, le paramètre
est un entier.
Duplex, 0==Half Duplex.
wait
la valeur d'attente KISS, le paramètre est
un entier en mS.
min
la valeur minute KISS, le paramètre est un
entier en S.
maxkey
la valeur maximale keyup, le paramètre est
un entier en S.
idle
la valeur du timer de temps mort KISS, le paramètre
est un entier en S.
maxdef
la valeur maxdef KISS, le paramètre est un
entier.
group
la valeur de groupe KISS, le paramètre est
un entier.
txoff
la valeur txoff KISS, le paramètre est un
entier en mS.
softdcd
la valeur softdcd KISS, le paramètre est
un entier.
slip
le drapeau slip KISS, le paramètre est un
entier.
# kissattach -s 4800 /dev/scc0 VK2KTJ
Vous pouvez également utiliser NOS pour l'accrocher au noyau
de la même manière. Par exemple,
sous JNOS, tapez ceci:
attach asy scc0 0 ax25 scc0 256 256 4800
# sccstat /dev/scc0
vous allez alors voir défiler une large quantité d'informations
en rapport à la configuration et au status du
port SCC /dev/ssc0.
La commande sccparam vous autorise à changer et à modifier
une configuration une fois que vous avez
démarré votre système.
Sa syntaxe est fort similaire à la commande param sous NOS.
Par exemple, pour fixer le paramètre txtail
d'une unité à 100 mS, vous utiliserez:
# sccparam /dev/scc0 txtail 0x8
General setup --->
[*] Networking
support
Network device support --->
[*] Network
device support
...
[*] Radio
network interfaces
[*] BPQ
Ethernet driver for AX.25
Linux supporte la compatibilité Ethernet BPQ. Ceci vous permet
d'utiliser le protocole AX.25 sur un
réseau Ethernet et d'interconnecter votre machine Linux
avec d'autres machines BPQ sur le réseau.
Les unités réseau BPQ sont appelées 'bpq[0-9]'.
L'unité 'bpq0' est associée à l'unité
'eth0', l'unité 'bpq1'
à l'unité 'eth1', etc.
La configuration est quelque peu ardue. Vous devez d'abord configurer
une unité standard Ethernet.
Ceci implique que vous ayiez correctement compilé votre noyau
de façon à ce qu'il supporte votre
carte Ethernet et testé son bon fonctionnement. Consultez le
document Ethernet-HOWTO pour plus
d'informations à ce sujet.
Pour configurer le support BPQ, vous devez d'abord configurer l'unité
Ethernet avec un indicatif AX.25.
La commande suivante l'effectuera pour vous:
# /sbin/ifconfig bpq0 hw ax25 vk2ktj-14 up
Une fois de plus, rappelez-vous que l'indicatif que vous spécifiez
doit correspondre avec l'entrée du fichier
/etc/ax25/axports que vous souhaitez utiliser pour ce port.
LINK SUPPORT
MAX STACKS 1
MAX BOARDS 1
LINK DRIVER E2000 ; ou d'autres MLID qui vont avec votre carte
INT 10
;
PORT 300
; en fonction de votre carte
FRAME ETHERNET_II
PROTOCOL BPQ 8FF ETHERNET_II ; nécessaire pour BPQ - on peut
; changer le PID
BPQPARAMS
; optionnel - seulement si vous souhaitez redéfinir
; l'adresse de destination
ETH_ADDR FF:FF:FF:FF:FF:FF ; Adresse de destination
nom du port indicatif vitesse taille du paquet fenêtre description
où:
nom du port
est un nom qui va servir à référer le port.
indicatif
est l'indicatif AX.25 que vous voulez affecter au port.
vitesse
est la vitesse à laquelle vous voulez que le port communique
avec votre
TNC.
taille du paquet
est la longueur maximale du paquet pour les connexions AX.25
en mode
connecté.
fenêtre
est le paramètre de la fenêtre AX.25. Ceci est
identique au paramètre
MAXFRAME des TNC.
description
est la description du port.
Dans mon cas, mon fichier ressemble à ceci:
radio VK2KTJ-15
4800 256
2 4800bps 144.800 MHz
ether VK2KTJ-14
10000000 256 2
BPQ/ethernet device
Rappelez-vous, vous devez assigner un unique indicatif/ssid à
chacun des ports AX.25 que vous créez.
Créez une entrée pour chacune des unités
AX.25 que vous voulez utiliser, ceci inclue les ports KISS,
Baycom, SCC, PI, PT et modem son. Chaque entrée ici va
décrire exactement une unité réseau AX.25.
Les entrées dans ce fichier sont associées avec les unités
réseau grâce à l'indicatif/ssid. Ceci explique
pourquoi il est nécessaire d'avoir un seul et unique indicatif/ssid.
# /usr/sbin/axparms -route add radio VK2XLZ VK2SUT
Cette commande créera une entrée de relais pour VK2XLZ via VK2SUT sur le port AX.25 nommée radio.
Par exemple, nous pouvons modifier l'exemple vu précédemment
de la façon suivante:
# /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
va créer une interface AX.25 avec une adresse IP à 44.136.8.5
et un MTU de 512 octets. Vous devez
toujours utiliser la commande ifconfig pour configurer les autres
paramètres si nécessaire.
Si vous avez un autre type d'interface alors utilisez le programme ifconfig
pour configurer l'adresse IP et les
détails du masque de sous-réseau pour le port et
ajoutez une route via le port, simplement comme vous le
feriez pour n'importe quelles autres interfaces TCP/IP.
L'exemple suivant est pour une carte PI, mais marchera également
bien pour n'importe quelles autres unités
réseau AX.25:
# /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 44.136.8.0
netmask 255.255.255.0 pi0a
# /sbin/route add default pi0a
Les commandes de configuration ci-dessus sont sûrement familières
pour beaucoup d'entre vous qui avez
utilisé NOS, ses nombreuses émules ou tout autres logiciels
tcp/ip. Notez que la route par défaut n'est pas
forcément nécessaire dans votre configuration si
vous avez d'autres unités réseau déjà configurées.
Pour tester l'interface, essayez de faire un ping ou un telnet vers la machine locale.
# ping -i 5 44.136.8.58
L'utilisation de l'option '-i 5' conditionne l'envoi d'une trame toutes
les 5 secondes au lieu de 1 seconde
par défaut.
Ce fichier est formaté de la façon suivante:
nom indicatif alias longueur du paquet description
Où:
nom
est le nom qui va référencer le port.
indicatif
est l'indicatif que le trafic NetRom va utiliser depuis ce port.
Remarquez que ce n'est pas l'adresse que les utilisateurs doivent
connecter
afin d'accéder à l'interface du noeud. (Le programme
du noeud est explicité
plus loin). Cet indicatif/ssid doit être unique et ne
doit pas apparaître
ailleurs ni dans le fichier /etc/ax25/axports ni dans le fichier
/etc/ax25/nrports.
alias
est l'alias NetRom du port qui va lui être affecté.
longueur du paquet
est la taille maximale des trames NetRom transmises par ce port.
description
est une libre description de ce port.
L'exemple ci-dessous parle de lui-même:
netrom VK2KTJ-9 LINUX 236 Linux Switch Port
Cet exemple crée un port NetRom connu par le reste du réseau NetRom comme 'LINUX:VK2KTJ-9'.
Ce fichier est utilisé par d'autres programmes comme le programme call.
Ce fichier est formaté de la façon suivante:
axport min_obs def_qual worst_qual verbose
Où:
axport
est le nom du port obtenu par le fichier /etc/ax25/axports.
Si vous
n'avez pas d'entrée dans le fichier /etc/ax25/nrbroadcasts
pour un
port alors cela signifie qu'aucun routage NetRom n'aura lieu
et
chaque diffusion NetRom reçue sera ignorée pour
ce port.
min_obs
est la valeur minimale d'obsolescence pour ce port.
def_qual
est la qualité par défaut pour ce port.
worst_qual
est la pire qualité possible pour ce port, chaque route
en dessous de cette
valeur sera ignorée.
verbose
est un drapeau déterminant si la diffusion de routage
NetRom était
déclenchée depuis ce port ou depuis une émission
de
routage externe qui informera le noeud lui-même.
Observez l'exemple ci-dessous:
radio 1
200 100
1
# nrattach netrom
Cette commande va démarrer l'unité NetRom (nr0) appelée
netrom configurée grâce aux paramètres
spécifiés dans le fichier /etc/ax25/nrports.
# /usr/sbin/netromd -i
Très vite, vous allez voir le fichier /proc/net/nr_neigh se remplir
avec les informations en provenance
des noeuds NetRom voisins.
N'oubliez pas d'insérer la commande /usr/sbin/netromd dans votre
fichier rc de façon à ce qu'elle
démarre à chaque fois que vous démarrez votre
système.
# /usr/sbin/nrparms -nodes VK2XLZ-10 + #MINTO 120 5 radio VK2SUT-9
Cette commande activera une route NetRom vers #MINTO:VK2XLZ-10 via le
voisin VK2SUT-9
sur mon port AX.25 appelé 'radio'.
Vous pouvez manuellement créer des entrées pour des nouveaux
voisins au moyen de la commande
nrparms. Par exemple:
# /usr/sbin/nrparms -routes radio VK2SUT-9 + 120
Cette commande créera VK2SUT-9 comme voisin NetRom avec une qualité
de 120 et ceci sera
verrouillé et ne pourra pas être effacé automatiquement.
Une fois encore, vous pouvez spécifier l'adresse IP et le MTU
grâce à la commande en ligne nrattach;
vous pouvez également utiliser les commandes ifconfig
et route, mais vous devez ajouter manuellement
les entrées arp pour accéder aux machines distantes
car il n'existe pas de mécanisme permettant à votre
système d'apprendre par lui-même quelle adresse NetRom
doit être utilisée afin d'accéder à un système
IP distant.
Pour créer une unité nr0 avec une adresse IP fixée
à 44.136.8.5, un MTU à 512, configurée grâce
aux
informations du fichier /etc/ax25/nrports pour un port NetRom
appelé netrom, utilisez:
# /usr/sbin/nrattach -i 44.136.8.5
-m 512 netrom
# route add 44.136.8.5 nr0
ou vous pouvez utiliser quelque chose de semblable à:
# /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
Donc pour atteindre chaque hôte IP via NetRom, vous devez entrer
manuellement les entrées ARP ainsi
que les routes.
Afin d'accéder à une destination pourvue de l'adresse
IP 44.136.80.4 à l'adresse NetRom BBS:VK3BBS
via un noeud voisin NetRom avec l'indicatif VK2SUT-0, utilisez
les commandes suivantes:
# 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
Les paramètres '120' et '6' de la commande nrparms sont les valeurs de qualité et d'obsolescence pour la route.
Le protocole Rose utilise et se base sur les ports AX.25 que vous avez
crée. Le protocole Rose se place tout en
haut du protocole AX.25.
Pour configurer Rose sur une interface AX.25, vous devez configurer
un fichier de configuration décrivant vos ports
Rose. Vous pouvez créer plusieurs ports Rose si vous le
souhaitez, la même procédure étant appliquée
pour chacun
d'entre eux.
Ce fichier est formaté de la façon suivante:
nom adresse description
Où:
nom
est le nom du port par lequel vous souhaitez référencer
votre port.
adresse
est l'adresse Rose sur 10 chiffres que vous souhaitez affecter
à votre
port.
description
est une description libre du port.
Par exemple:
rose 5050294760 Rose Port
Notez que Rose utilisera par défaut l'indicatif/ssid configuré
sur chaque port AX.25 à moins que vous
ne le spécifiiez.
Pour configurer un indicatif/ssid distinct pour Rose afin de l'utiliser
sur chaque port, vous utilisez la commande
rsparms comme ci-dessous:
# /usr/sbin/rsprams -call VK2KTJ-10
Cet exemple fera écouter Linux et utiliser l'indicatif/ssid VK2KTJ-10
sur tous les ports AX.25 configurés pour
les appels Rose.
Cette commande va démarrer l'unité Rose (rose0) appelée
rose configurée grâce aux détails spécifies
dans le
fichier /etc/ax25/rsports pour l'entrée 'rose'.
Par exemple:
# rsparms -nodes add 5050295502 radio vk2xlz
ajoutera une route au noeud Rose 5050295502 via un port AX.25 appelé
`radio' dans votre fichier
/etc/ax25/axports vers un voisin doté de l'indicatif VK2XLZ.
Vous pouvez spécifier une route avec un masque afin de capturer
un nombre de destinations Rose dans une seule
entrée de routage.
La syntaxe est la suivante:
# rsparms -nodes add 5050295502/4 radio vk2xlz
qui sera identique à l'exemple précédent excepté
qu'il correspondra à chaque adresse de destination correspondante
aux quatre premiers chiffres fournis, dans ce cas chaque adresse
commençant par les chiffres 5050. Une autre forme
pour cette commande est:
# rsparms -nodes add 5050/4 radio vk2xlz
qui est probablement la forme la moins ambiguë.
Les utilitaires AX25 contiennent un programme appelé 'call' qui
est un petit terminal orienté écran pour AX.25,
NetRom et Rose.
Un simple appel AX.25 se fait de la façon suivante:
/usr/bin/call radio VK2DAY via VK2SUT
Un simple appel NetRom vers un noeud avec un alias SUNBBS ressemblera à:
/usr/bin/call netrom SUNBBS
Un simple appel Rose vers HEARD sur le noeud 5050882960 ressemblera à:
/usr/bin/call rose HEARD 5050882960
Note: il faut indiquer à call le port AX.25 que vous souhaitez
utiliser, car il peut être possible de connecter un
noeud AX.25 sur n'importe quel port que vous avez configuré.
Le programme call est un terminal orienté ligne de commande
qui permet de faire des appels AX.25. Il reconnaît
ses propres commandes internes grâce aux lignes commençant
par le caractère '~'. La commande '~' ferme la
connexion courante.
Veuillez consulter les pages du manuel dans /usr/man pour plus d'informations.
Le programme ax25d est similaire au programme inetd couramment utilisé
pour accepter les connexions
TCP/IP entrantes sur des machines unix.
Il se dispose et écoute les connexions entrantes, lorsqu'il
en détecte une, il vérifie un fichier de configuration
pour déterminer quel doit être le programme à
exécuter et établit la connexion. Puisqu'il s'agit de l'outil
standard
destiné à accepter les connexions AX.25, NetRom
et Rose, je vais vous décrire comment le configurer.
A première vue, le contenu de ce fichier semble difficile à
comprendre mais vous découvrirez bien vite qu'il
est en fait très simple en pratique avec néanmoins un
petit piège qu'il faut savoir éviter.
Le format du fichier ax25d.conf est le suivant:
# Ceci est un commentaire ignoré
par le programme ax25d.
[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>
Où:
# situé en début de ligne est un commentaire et complètement ignoré par le programme ax25d.
<port_name>
est le nom du port AX.25,
NetRom ou spécifié dans les fichiers
/etc/ax25/axports, /etc/ax25/nrports
et /etc/ax25/rsports.
Le nom du port est entouré
par les crochets '[]' s'il s'agit
d'un port AX.25, par les
signes '<>' pour un port NetRom, ou par
les accolades '{}' s'il
s'agit d'un port Rose.
Il existe une autre forme
pour ce champs, qui préfixe le nom
du port avec l'indicatif/ssid
via' pour indiquer que vous souhaitez
accepter des appels vers
l'indicatif/ssid via cette interface.
L'exemple devrait l'illustrer
clairement.
<peer>
est l'indicatif du noeud en pair qui
s'applique à cette configuration
particulière. Si vous ne spécifiez
pas un SSID ici alors n'importe quel
SSID conviendra.
window
est le paramètre de fenêtre
AX.25 (K) ou le paramètre MAXFRAME pour cette
configuration.
T1 est le minuteur de retransmission de trame
exprimé en 1/50 seconde.
T2 est la quantité de temps durant lequel
le logiciel AX.25 va attendre une
autre trame entrante avant de préparer
la réponse.
L'unité est exprimée en seconde.
T3 est la quantité de temps d'inactivité
avant que le logiciel AX.25 ne
déconnecte la session. Unité=1
seconde.
idle
est le compteur de temps
mort en secondes.
N2 est le nombre de retransmissions consécutives
qui va être réalisée avant
que la connexion ne se ferme.
<mode>
fournit un mécanisme pour
déterminer certains types de permissions
générales. Les modes
sont activés ou désactivés en fournissant une
combinaison de caractères,
chacun représentant une permission.
Les caractères peuvent
être en majuscules ou minuscules et doivent être
consolidés en un seul bloc
sans espace.
u/U
UTMP - pas encore supporté.
v/V
Indicatif valide - pas encore
supporté.
q/Q
Silencieux - Pas d'historique
de connexion
n/N
Vérifie les voisins
NetRom - pas encore supporté.
d/D
Interdit les relais
Les connexions doivent être
directes et non pas relayées.
l/L
Fermée - N'autorise
pas les connexions.
*/0
marque - place une marque,
aucun mode fixe.
<uid>
est l'identificateur de
l'utilisateur que le programme utilisera pour la
connexion.
<cmd>
est le chemin d'accès total
de la commande à lancer, sans aucun paramètre.
<cmd-name>
est le texte qui doit apparaître
dans un ps lorsque la commande marche
(normalement, le même que
<cmd> sans le chemin d'accès).
<arguments>
sont les paramètres passés
à la <:cmd> lorsqu'elle marche. Vous pouvez
passer certaines informations
utiles dans ces paramètres grâce aux jetons
suivants:
%d Nom du port sur lequel
la connexion a été établie
%U Indicatif AX.25 de la partie connectée sans le SSID, en majuscule.
%u Indicatif AX.25 de la partie connectée sans le SSID, en minuscule.
%S Indicatif AX.25 de la partie connectée avec le SSID, en majuscule.
%s Indicatif AX.25 de la partie connectée avec le SSID, en minuscule.
%P Indicatif AX.25 du noeud
distant d'où venait la connexion sans
le SSID,
en majuscules.
%p Indicatif AX.25 du noeud
distant d'où venait la connexion sans
le SSID,
en minuscules.
%R Indicatif AX.25 du noeud
distant d'où venait la connexion avec
le SSID,
en majuscules.
%r Indicatif AX.25 du noeud
distant d'où venait la connexion avec
le SSID,
en minuscules.
Il vous faut au moins un paragraphe formaté comme vu précédemment
pour chaque interface AX.25,
NetRom ou Rose pour laquelle vous accepterez des connexions entrantes
AX.25, NetRom ou Rose.
Il y a deux lignes spéciales dans le paragraphe, l'une commencant
avec la chaîne de caractère 'parameters'
et l'autre commencant avec 'parameter' (Oui, il y a une différence).
Ces lignes servent pour des fonctions spéciales.
La but des lignes 'default' est évident, cette ligne sert "d'attrape-tout",
de façon à ce que n'importe quelle connexion
entrante sur l'interface <interface_call> non dotée de règle
spécifique corresponde à la règle `default'.
Si vous n'avez pas de règle 'defaut', alors n'importe quelle
connexion ne correspondant à aucune règle spécifique
sera déconnectée immédiatement.
La ligne 'parameters' est un petit peu plus subtile, et c'est là
qu'est le piège dont je vous avais parlé auparavant.
Dans chacun des champs pour n'importe quelle définition de noeud
en pair, vous pouvez utiliser le caractère '*'
afin d'utiliser la valeur par défaut.
La ligne 'parameters' est ce qui définit ces valeurs par défaut.
Le noyau lui-même a quelques valeurs par défaut
qui seront utilisées si vous n'en spécifiez pas.
Le piège est que ces valeurs par défaut s'appliquent
uniquement
aux règles en dessous de la ligne 'parameters' et non
pas à celles du dessus. Vous pouvez avoir plus qu'une
règle 'parameters' par définition d'interface, et de
cette manière vous pouvez créer des groupes de configuration
par défaut. Il est important de noter que la règle
'parameters' ne vous autorise pas à positionner les champs 'uid'
ou
'command'.
[VK2KTJ-0 via radio]
parameters 1 10 * * *
* *
VK2XLZ * *
* * * * * root
/usr/sbin/axspawn axspawn %u +
VK2DAY * *
* * * * * root
/usr/sbin/axspawn axspawn %u +
NOCALL * *
* * * * L
default 1 10 5 100
180 5 * root /usr/sbin/pms pms -a -o
vk2ktj
[VK2KTJ-1 via radio]
default * *
* * * 0 root /usr/sbin/node
node
<netrom>
parameters 1 10 * * *
* *
NOCALL * *
* * * * L
default * *
* * * * 0
root /usr/sbin/node node
{VK2KTJ-0 via rose}
parameters 1 10 * * *
* *
VK2XLZ * *
* * * * * root
/usr/sbin/axspawn axspawn %u +
VK2DAY * *
* * * * * root
/usr/sbin/axspawn axspawn %u +
NOCALL * *
* * * * L
default 1 10 5 100
180 5 * root /usr/sbin/pms pms -a -o
vk2ktj
{VK2KTJ-1 via rose}
default * *
* * * 0 root /usr/sbin/node
node radio
Cet exemple déclare que quiconque se connectant à l'interface
sur ma machine au moyen de
l'indicatif VK2KTJ-0 entendu sur le port AX.25 appelé
'radio' se conformera aux règles suivantes:
Quiconque se connectant au moyen de 'NOCALL' sera mis à la porte,
notez l'utilisation du mode 'L'.
La ligne 'parameters' change deux paramètres par défaut
du noyau (Window et T1) et exécute le
programme /usr/sbin/axspawn. Chaque copie de ce programme lancée
de cette façon apparaîtra sous
l'intitulé axspawn dans une sortie de la commande ps.
Les deux lignes suivantes sont pour les deux stations
qui vont recevoir ces permissions.
La dernière ligne dans le paragraphe est "l'attrape-tout" que
toutes les personnes restantes obtiendront
(Y compris VK2XLZ et VK2DAY utilisant d'autres SSID que -1).
Cette définition déclare implicitement
tous les paramètres et exécutera le programme PMS
avec un paramètre spécifiant qu'il s'agit d'une
connexion AX.25 et dont le propriétaire est VK2KTJ.
(Voir le chapitre 'Configurer la PMS' ci dessous pour plus de détails).
La configuration suivante accepte des appels vers VK2KTJ-1 via le port
radio.
Il lance le programme node pour n'importe qui le connectant.
La configuration suivante est une configuration NetRom, notez l'utilisation
des signes plus-petit-que et
plus-grand-que au lieu des crochets.
Ceci caractérise une configuration NetRom. Celle-ci est plus
simple, elle déclare simplement que quiconque
se connectant sur notre port NetRom appelé 'netrom' aura
une exécution du programme node, à moins qu'ils ne
disposent d'un indicatif 'NOCALL' et dans lequel cas, ils seront
mis à la porte.
Les deux dernières configurations sont pour des connexions entrantes
Rose. La première pour les gens qui ont
lancé des appels vers 'vk2ktj-0' et la seconde pour 'VK2KTJ-1
sur notre adresse de noeud Rose.
Ils fonctionnent de la même façon. Notez l'utilisation
des accolades afin de l'identifier comme un port Rose.
Cet exemple est quelque peu ingénieux mais je pense qu'il illustrate
bien les caractéristiques importantes de la
syntaxe du fichier de configuration.
Ce dernier est expliqué entièrement dans les pages du
manuel de ax25d.conf
Un exemple plus détaillé est inclus dans la distribution
ax25-utils qui vous sera bien utile.
# /usr/sbin/ax25d
Lorsque ceci fonctionne, les gens devraient être capables d'établir
des connexions AX.25 sur votre
machine Linux. Rappelez-vous de mettre la commande ax25d dans vos fichiers
rc de façon à ce qu'il
démarre automatiquement à chaque fois que vous mettez
sous tension votre système.
Le noeud est normalement appelé par le programme ax25d même
s'il es également exécutable par le biais du
programme tcp/ip inetd de façon à autoriser les
utilisateurs à effectuer un Telnet sur votre machine et ainsi
de pouvoir y accéder; il vous est également possible
d'exécuter le noeud directement via une ligne de commande.
# /etc/ax25/node.conf
# Fichier de configuration pour le noeud.
#
# Les lignes commençant par '#' sont des commentaires
et sont ignorées.
# Nom de la machine.
# Spécifie le nom de la machine du noeud.
hostname radio.gw.vk2ktj.ampr.org
# Réseau local
# vous autorise à spécifier ce qui est considéré
comme 'local' dans
# le but d'utiliser la vérification des permissions inclue
dans
# le fichier nodes.perms.
localnet 44.136.8.96/29
# Cache les ports
# Si spécifié, vous autorise à rendre certains
ports invisibles aux
# yeux des utilisateurs. Les ports listés ne seront pas
affichés
# par la commande (P)orts
# Identification du noeud
# ceci apparaîtra dans l'invite du noeud
NodeId
LINUX:VK2KTJ-9
# Port NetRom
# Ceci est le nom du port netrom qui sera utilisé pour
les connexions
# sortante NetRom depuis le noeud
NrPort
netrom
# Compteur de dépassement de temps
# Spécifie le dépassement de temps des connexions
à ce noeud en
# secondes.
idletimout 1800
# Dépassement de temps pour les connexions
# Spécifie le compteur de dépassement de temps
pour les connexions
# établies via ce noeud en secondes.
conntimeout 1800
# Reconnexion
# Spécifie si les utilisateurs doivent être reconnectés
au noeud
# lorsque les connexions à distance s'arrêtent,
ou s'ils doivent être
# complètement déconnectés.
reconnect on
# Commande d'alias
# Rend plus simple les commandes complexes.
alias
CONV "telnet vk1xwt.ampr.org 3600"
alias
BBS "connect radio vk2xsb"
# Alias de commandes externes
# Fournit un moyen d'exécuter des commandes externes
sous le noeud.
# extcmd <cmdname> <flag> <userid> <command>
# Flag == 1 s'il s'agit seulement d'une fonction implémentée
# <command> est formaté comme ax25d.conf
extcmd
PMS 1 root
/usr/sbin/pms pms -u %U -o VK2KTJ
# Journal
# Définit le niveau d'audit système. 3 est le
plus complet, 0 le désactive
loglevel 3
# Le caractère de contrôle
# 20 = (Control-T)
EscapeChar 20
user
Ce premier champs représente l'indicatif ou l'utilisateur
pour lequel les
permissions s'appliquent. Toute valeur SSID est ignorée,
alors placez-y
simplement l'indicatif de base.
method
Chaque protocole ou méthode d'accès reçoit
également des permissions. Par
exemple, vous pourriez autoriser des personnes qui se sont connectées
via
AX.25 ou NetRom à utiliser l'option (C)onnect mais en
empêcher d'autres comme
ceux qui se sont connectés par Telnet via un noeud distant.
Le second champs vous autorise à sélectionner
la méthode d'accès pour laquelle
la permission s'applique. Les méthodes sont les suivantes:
méthode description
ax25------> L'utilisateur se connecte via AX.25
netrom ---> L'utilisateur se connecte via NetRom
host ------> L'utilisateur a démarré le noeud
depuis une commande en ligne
local -----> L'utilisateur s'est connecté grâce
à telnet depuis une machine
'locale'
ampr -----> L'utilisateur s'est connecté grâce
à telnet depuis une adresse
amprnet (44.0.0.0)
inet ------> L'utilisateur s'est connecté grâce
à telnet depuis une adresse
en dehors du domaine ampr.
rose -----> L'utilisateur se connecte via rose
* -----> L'utilisateur s'est connecté
par n'importe quel moyen
port
Pour les utilisateurs AX.25, vous pouvez contrôler les
permissions sur un
port grâce aux bases du port si vous le choisissez.
Ceci vous autorise à déterminer ce que le AX.25
peut faire en se basant sur
les ports sur lesquels ils se sont connectés.
Le troisième champs contient le nom du port si vous utilisez
cette
commodité. Ceci est utile pour les connexions AX.25.
password
Vous pouvez éventuellement configurer le noeud de telle
sorte qu'il
invitera les utilisateurs à entrer un mot de passe au
moment de leur
connexion. Ceci peut s'avérer utile pour protéger
les utilisateurs dotés
de certains privilèges. Si le quatrième champs
est présent alors sa valeur
sera le mot de passe.
permissions
Le champs permissions est le dernier champs à entrer
dans le fichier. Le
fichier de permissions est codé comme un champs
binaire, dans lequel
chaque option disposant d'une valeur binaire mise à un
autorisera l'utilisateur
à activer cette option. Par contre, lorsque cette
valeur sera mise à zéro,
alors l'utilisateur se verra interdire cette option. La liste
des options contrôlables
ainsi que ces valeurs binaires correspondantes sont les suivantes:
valeur description
1 -----> Login autorisé.
2 -----> (C)onnexion AX25 autorisée.
4 -----> (C)onnexion NetRom autorisée.
8 -----> (T)elnet vers les machines locales autorisé.
16 ----> (T)elnet vers les machines amprnet (44.0.0.0) autorisé.
32 ----> (T)elnet vers les machines distantes et non amprnet
autorisé.
64 ----> Ports cachés autorisés pour les (C)onnexions
AX.25.
128 ---> (C)onnexion Rose autorisée.
Pour coder les valeurs de permissions, simplement prenez chacune des
permissions que vous souhaitiez
assigner aux utilisateurs et ajouter leur valeur. Placez ensuite le
nombre résultant dans le cinquième champs.
Ci-dessous un exemple de fichier nodes.perms:
# /etc/ax25/node.perms
#
# L'opérateur du noeud
est VK2KTJ, il dispose du mot de passe
# 'secret' et est autorisé
à n'importe quelle type de connexion.
vk2ktj *
* secret 255
# Les utilisateurs suivants sont
interdits de connexion
NOCALL *
* *
0
PK232
* *
* 0
PMS
* *
* 0
# Les utilisateurs INET sont interdits
de connexion.
*
inet * *
0
# Les utilisateurs AX.25, NetRom,
Local, Host et AMPR peuvent
# se (C)onnecter et exécuter
(T)elnet vers des machines
# local et ampr mais pas en direction
d'autres adresses IP.
*
ax25 * *
159
*
netrom * *
159
*
local * *
159
*
host *
* 159
*
ampr * *
159
[vk2ktj-1 via radio]
default *
* * * * 0
root /usr/sbin/node node
Ceci indique simplement que le code du noyau de Linux répondra
à n'importe quelle requête de
connexion pour l'indicatif 'VK2KTJ-1' entendu sur le port AX.25 nommé
'radio' et entraînera l'exécution
du noeud.
Vous devez modifier deux fichiers.
Ajouter ceci à /etc/services:
node 3694/tcp #OH2BNS's node software
ainsi qu'a /etc/inetd.conf:
node stream tcp nowait root /usr/sbin/node node
Ceci terminé, et une fois que vous avez redémarré
le programme inetd, n'importe quel utilisateur se connectant
via telnet sur le port 3694 de votre machine sera obligée d'effectuer
un login ainsi qu'éventuellement entrer un mot
de passe; par la suite, ils se connecteront sur le noeud.
default * * * * * 1 root /usr/sbin/axspawn axspawn %u
Si la ligne se termine par le caractère + alors l'utilisateur
en instance de connexion doit frapper la touche entrée avant
d'être autorisé à se connecter. Par défaut,
il n'y a pas d'attente. Chaque configuration individuelle suivant
cette ligne
verra le programme axspawn lors de la connexion. Lorsque axspawn
a démarré, il contrôle d'abord que l'argument
fourni avec la ligne de commande est un indicatif légal, supprime
le SSID, puis vérifie le fichier /etc/passwd afin de
voir que l'utilisateur ait bien un compte configuré. Si
cela se vérifie et que le mot de passe est soit un "" (null)
ou +
alors l'utilisateur est connecté. S'il n'y a rien dans
le champs du mot de passe alors l'utilisateur est invité à
entrer un
mot de passe. S'il y a un compte existant dans le fichier /etc/passwd
alors axspawn devrait être configuré de façon
à en créer un automatiquement.
# /etc/ax25/axspawn.conf
#
# autorise la création
automatique de comptes utilisateurs.
create yes
#
# utilisateur invité si
le champ du dessus est égal a 'no' ou si
# n'importe quoi d'autre échoue.
Hors fonction avec "no".
guest
no
#
# identifiant du groupe
ou nom pour l'autoaccount.
group
ax25
#
# Premier identifiant utilisateur
à utiliser
first_uid 2001
#
# Identifiant d'utilisateur maximal
max_uid 3000
#
# Où ajouter le répertoire
par défaut pour les nouveaux utilisateurs.
home
/home/ax25
#
# Shell utilisateur
shell
/bin/bash
#
# Lie l'identifiant utilisateur
à l'indicatif pour les connexions sortantes.
associate yes
Les huit caractéristiques configurables de axspaw sont les suivantes:
# indique un commentaire.
create
si ce champ est mis à yes
alors axspawn tentera de créer automatiquement un
compte utilisateur pour chaque
utilisateur se connectant et n'ayant pas d'entrée
existante dans le fichier
/etc/passwd.
guest
ce champs nomme le nom de login
de l'utilisateur qui sera utilisé pour les
gens se connectant et qui ont
déjà un compte si create est mis à no.
D'habitude, on utilise ax25 ou
guest.
group
ce champ nomme le nom du groupe
qui sera utilisé pour chaque utilisateur se
connectant et qui n'a pas encore
d'entrée dans le fichier /etc/passwd.
first_uid
ceci est le numéro du premier
identifiant utilisateur qui sera
automatiquement crée pour
les nouveaux utilisateurs.
max_uid
ceci est le nombre maximum qui
sera utilisé pour l'identifiant utilisateur
des nouveaux utilisateurs.
home
ceci est le répertoire
par défaut des nouveaux utilisateurs.
shell
ceci est le login shell de chacun
des nouveaux utilisateurs.
associate
ce drapeau indique si les connexions
AX.25 faites par l'utilisateur une
fois connecté utiliseront
leur propre indicatif ou bien l'indicatif de vos stations.
Ceci fait, il y a quelques fichiers simples que vous devez créer
et qui renseignent les utilisateurs sur
votre système; et puis, vous devez également ajouter
les entrées appropriées dans le fichier
ax25d.conf de façon à ce que les utilisateurs se
connectant puissent activer la PMS.
default 1 10 5 100 5 0 root /usr/sbin/pms pms -a -o vk2ktj
Ceci lance le programme PMS, en lui spécifiant qu'il s'agit d'une
connexion AX.25 et que son propriétaire
est vk2ktj. Vérifiez les pages du manuel (man) pour spécifier
d'autres méthodes de connexion.
Remplacez mon indicatif par le vôtre et votre PMS sera exécutée,
avec comme option la convention
de fin de ligne Unix, l'utilisateur connecté étant vk2ktj.
Vous pouvez alors effectuer tout ce que les
utilisateurs connectés sont autorisés à faire.
Additionnellement, il vous est possible de solliciter la connexion à
d'autres noeuds afin de vérifier si
votre configuration ax25d.conf fonctionne bien.
Ces programmes sont comme le simple utilitaire call. Ils ne gèrent
nullement les données qu'ils reçoivent,
alors vous allez devoir vous préoccuper vous-même
du problème du délimiteur de ligne.
Commençons avec un petit exemple afin de voir comment vous pourriez
les utiliser. Imaginez que vous
ayiez un petit réseau chez vous et que vous disposiez d'une
machine Linux fonctionnant comme une passerelle
radio reliée à une autre machine, disons un noeud BPQ
connecté via une connexion Ethernet.
Normalement si vous souhaitez que les utilisateurs radio puissent connecter
le noeud BPQ, ils devront le faire
grâce à un relais via le noeud linux, ou bien d'abord
se connecter au noeud sur Linux et puis se connecter à
partir de ce même noeud. Le programme ax25_call peut
simplifier tout cela s'il est appelé depuis
le programme ax25d.
Imaginez que le noeud BPQ ait l'indicatif VK2KTJ-9 et que la machine
Linux ait un port AX.25/ethernet
appelé 'bpq'. Imaginons aussi que la passerelle Linux ait un
port radio appelé 'radio'.
Une entrée dans le fichier /etc/ax25/ax25d.conf ressemblant à:
[VK2KTJ-1 via radio]
default * *
* * * * * root /usr/sbin/ax25_call
ax25_call bpq %u vk2ktj-9
autorisera les utilisateurs à se connecter directement à
'VK2KTJ-1' qui est en fait le daemon Linux ax25d;
ces utilisateurs seront alors automatiquement aiguillés vers
une connexion AX.25 vers `VK2KTJ-9'
via l'interface 'bpq'.
Il y a toute sorte d'autres configurations possibles que vous pourriez
essayer. Les utilitaires 'netrom_call' et
'rose_call' fonctionnent d'une façon similaire. Un amateur a
utilisé cette utilitaire afin d'effectuer des connexions
vers une BBS distante plus facilement. Normalement les utilisateurs
auraient dû entrer manuellement une longue
chaîne de caractères afin de se connecter alors il a crée
une entrée qui fait apparaître la BBS comme si elle
était sur le réseau local. Il a crée une sorte
de procuration pour son ax25d afin de permettre la connexion vers
la machine distante.
c vk5xxx v vk2ktj-5 5050 882960
Sur le noeud distant, VK5XXX verra une connexion entrante avec un indicatif
local AX.25 relayé via
l'indicatif du noeud distant Rose.
L'implémentation Linux Rose ne supporte pas cette fonctionnalité
dans le noyau, mais il y a deux applications
appelées rsuplnk et rsdwnlnk qui permettent cette fonction.
Une configuration typique ressemblerait à ceci:
#
{* via rose}
NOCALL * * * * * *
L
default * * * * * *
- root /usr/sbin/rsdwnlnk rsdwnlnk 4800 vk2ktj-5
#
Avec cette configuration, chaque utilisateur établissant une
connexion Rose sur votre adresse de noeud Linux
avec une destination qui n'a jamais été entendue sera
converti en une connexion AX.25 sur le port nommé 4800
avec le chemin de relais VK2KTJ-5.
#
[VK2KTJ-5* via 4800]
NOCALL * * * * * *
L
default * * * * * *
- root /usr/sbin/rsuplnk rsuplnk rose
#
Remarquez la syntaxe spéciale de l'indicatif local. Le caractère
'*' indique que l'application doit être appelée si
l'indicatif est entendu sur le chemin de relais d'une connexion.
Cette configuration autorisera un utilisateur AX.25 d'établir
des appels Rose par le biais de l'exemple de séquence
de connexion présentée dans l'introduction.
Quiconque tentant d'établir un relais via VK2KTJ-5 sur le port
AX.25 nommé 4800 sera supporté par la commande
rsuplnk.
L'ensemble des outils AX.25 vous fournit un moyen de gérer cette
association des comptes utilisateurs Linux
et des indicatifs radioamateurs.
Nous en avons déjà parlé dans le chapitre consacré
au programme de PMS, mais j'y reviens ici afin que vous
ne l'oubliiez pas.
Vous effectuez l'association grâce à la commande axparms. Par exemple:
# axparms -assoc vk2ktj terry
Cette commande associe l'indicatif vk2ktj avec l'utilisateur terry de
la machine. Ainsi, tout le courrier pour
vk2ktj sur la PMS sera envoyé au compte utilisateur terry.
N'oubliez pas de placer ces associations dans votre fichier rc de façon
à ce que cela marche à chaque fois
que vous démarrez votre machine.
Notez qu'il ne vaut mieux pas associer un indicatif avec le compte root
car cela risque de provoquer des
problèmes dans d'autres programmes.
/proc/net/arp
contient la liste des entrées du protocole
de résolution d'adresse (ARP) et
qui permet de convertir une adresse IP en
une adresse MAC. Ces entrées
peuvent être AX.25, Ethernet ou n'importe
quelle autre couche MAC.
/proc/net/ax25
contient une liste des sockets AX.25 ouverts.
Ils peuvent être à
l'écoute d'une connexion, ou bien de
sessions actives.
/proc/net/ax25_bpqether
contient les mappages des indicatifs AX25
sur de l'Ethernet BPQ.
/proc/net/ax25_calls
contient le mappage numéro utilisateur
Linux-indicatif déclaré par la
commande axparms -assoc.
/proc/net/ax25_route
contient les informations du routage du relais
AX.25
/proc/net/nr
contient une liste des sockets NetRom ouverts.
Ils peuvent être à
l'écoute d'une connexion, ou bien de
sessions actives.
/proc/net/nr_neigh
contient les informations sur les voisins
NetRom connus par le système
NetRom.
/proc/net/nr_nodes
contient les informations sur les noeuds NetRom
connus par le système
NetRom.
/proc/net/rose
contient une liste des sockets Rose ouverts.
Ils peuvent être à
l'écoute d'une connexion, ou bien de
sessions actives.
/proc/net/rose_nodes
contient le mappage des destinations Rose
vers les voisins Rose.
/proc/net/rose_neigh
contient une liste des voisins Rose connus.
/proc/net/rose_routes
contient une liste de toutes les connexions
Rose établies.
Bien que la matière couvrant la programmation réseau sous
Unix soit éloignée de la teneur du présent
document, je vais vous décrire les détails élémentaires
concernant l'utilisation des protocoles AX.25, NetRom
et Rose au sein de vos propres applications.
Les noms des familles d'adresse pour AX.25, NetRom et Rose sont respectivement
AF_AX25,
AF_NETROM et AF_ROSE.
Pour 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
Pour 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;
Pour Rose:
#include <ax25.h>
#include <rose.h>
int s, addrlen = sizeof(struct
sockaddr_rose);
struct sockaddr_rose sockaddr;
sockaddr.srose_family = AF_ROSE;
Les utilitaires user_call sont des excellents exemples sur lesquels
vous pouvez commencer à travailler. Leur code
source est inclus dans la distribution des utilitaires AX25. Si vous
y consacrez un peu de temps, vous allez vite
vous rendre compte que 90 pour cent du travail consiste à
se tenir prêt à l'ouverture du socket. Faire une
connexion est aisée, mais sa préparation prend
du temps.
Les exemples sont suffisamment simples pour que vous vous y retrouviez.
Si vous avez la moindre question,
vous devriez directement les poser à la liste de distributions
linux-hams et quelqu'un pourra vous aider
sûrement.
. . . . .
. .
---
.
| Réseau /---------\
. Réseau
| 44.136.8.96/29| |
. 44.136.8/24
\ | /
|
| Routeur | .
\|/
|
| | .
|
| eth0 | Linux
| . /-----\ /----------\ |
---|---------------| |-----|
TNC |----| Radio |---/
| 44.136.8.97 | et | .
\-----/ \----------/
|
| | sl0
|
| serveur | 44.136.8.5
|
| | .
|
| |
.
|
\_________/ .
---
. . . .
. .
#!/bin/sh
# /etc/rc.net
# Cette configuration fournit un port AX.25 KISS et une
# unité Ethernet.
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
· Vous devez avoir activé IP_FORWARDING dans votre noyau.
· Les fichiers de configuration AX.25 ressemblent
beaucoup à ceux que
l'on a déjà utilisé auparavant,
veuillez de nouveau consulter les anciens
chapitres si c'est nécessaire.
· J'ai choisi d'utiliser une adresse IP pour mon
port radio qui n'est
pas dans la fourchette de mon réseau
privé. Je n'avais pas forcément besoin
de le faire et j'aurai pu utiliser 44.136.8.97
pour ce port.
· 44.136.8.68 est ma passerelle d'encapsulation
IPIP et il s'agit
également de l'endroit ou je pointe
vers ma route par défaut.
· Chacune des machines sur mon réseau Ethernet dispose d'une route:
route add -net 44.0.0.0 netmask
255.0.0.0 \
gw 44.136.8.97 window 512 mss 512 eth0
L'utilisation des paramètres mss et window signifie que
je peux obtenir des
performances optimales pour mon réseau local Ethernet
ainsi que pour le
réseau à base de connexions radio.
· Je lance aussi mes daemons smail, http, ftp et
autres sur le routeur de
façon à qu'il soit le seul à
fournir tous les services.
· La machine de routage est un 386DX20 tres lent
avec un disque dur de
20Mb doté d'une configuration Linux
minimale.
Ci dessous, une configuration typique.
. . . . .
. .
---
.
| Réseau /---------\
. Réseau
| 154.27.3/24 |
| . 44.136.16/24
\ | /
|
| Passe- | .
\|/
|
| relle | .
|
| eth0 |
| . /-----\ /----------\ |
---|---------------| Linux |-----| TNC |----| Radio
|---/
| 154.27.3.20 |
| . \-----/ \----------/
|
| IPIP | sl0
|
| | 44.136.16.1
|
| | .
|
| |
.
|
\_________/ .
---
. . . .
. .
Les fichiers de configuration sont les suivants:
# /etc/rc.net
# Ce fichier est une simple configuration qui fournit un port
radio
# KISS AX.25, une unité Ethernet, et utilise le pilote
tunnel
# pour effecter l'encapsulation/décapsulation IPIP
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.
et:
# /etc/ipip.routes
# Ce fichier est généré
par le script munge
#
/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
Quelques remarques ici:
. Le nouveau pilote de tunnel utilise le champs gw dans
la table de
routage au lieu du paramètre pointopoint
afin de spécifier l'adresse de la
passerelle distante IPIP. Ceci explique pourquoi
il supporte désormais les
routes multiples par interface.
. Vous pouvez configurer deux unités réseau
avec la même adresse. Dans cet
exemple, les unités sl0 et tunl0 ont
été configurées avec l'adresse IP du
port radio. Ceci est fait de façon
à ce que la passerelle distante voit
l'adresse correcte depuis votre passerelle
dans des datagrammes encapsulés.
. La commande route utilisée pour spécifier
les routes encapsulées peut être
automatiquement générée
par une version modifiée du script munge. Ceci est
inclus en dessous. La commande route sera
alors écrite dans un fichier
séparé et lu grâce aux
commandes du source bash /etc/ipip.routes (En
supposant que vous ayiez appelé le
fichier avec les commandes de routage
/etc/ipip.routes). Le fichier source doit
être dans le format de commande
de route NOS.
. Notez l'utilisation du paramètre window sur la
commande route.
Le fait de mettre une bonne valeur window
améliorera les performances
sur vos liens radio.
Le nouveau script tunnel-munge:
#!/bin/sh
#
# De: Ron Atkinson <n8fow@hamgate.cc.wayne.edu>
#
# Ce script est basiquement le script 'mung' écrit
par Bdale N3EUA
# pour le démon IPIP et a été modifié
par Ron Atkinson N8FOW. Son
# but est de convertir un fichier de routage au format
KA9Q NOS
# (d'habitude appelé 'encap.txt') en une table
de routage au format
# Linux pour le pilote de tunnel IP.
#
# Usage: Fichier passerelle
sur stdin, Fichier de route Linux sur
# stdout.
#
ex. tunnel-munge < encap.txt > ampr-routes
#
# NOTE: Avant d'utiliser ce script, soyez sûrs de vérifier
et de changer
# les choses suivantes:
#
# 1) Changez les 'Local routes' et les
'Misc user routes' pour
# les routes qui s'appliquent
localement chez vous (enlevez les
# miennes, svp!)
# 2) Sur la ligne fgrep, soyez sûrs
de changer l'adresse IP pour votre
# propre passerelle
Internet. Si vous ne le faites pas, cela va
# causer de sérieuses
boucles de routage.
# 3) Le nom par défaut de l'interface
est 'tunl0'. Soyez sûrs que ceci
# est correct pour
votre système.
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"
Un programme d'encapsulation AXIP accepte en bout de chemin des trames
AX.25, examine leur adresse
AX.25 de destination pour déterminer vers quelle adresse IP
ils doivent être acheminés, les encapsule dans
une trame tcp/ip et finalement les transmet vers la bonne destination.
Un même programme accepte également
les segments tcp/ip contenant des trames AX.25, les extrait et les
gère exactement comme s'ils avaient été
reçus directement depuis un port AX.25. Afin de distinguer les
segments IP contenant des trames AX.25
avec d'autres segments IP, les segments AXIP sont codés
avec un identifiant de protocole égal à 4 (Ou 94
mais qui est maintenant dépassé). Cette procédure
est décrite dans la RFC-1226.
Le programme ax25ipd inclus dans la distribution ax25-utils se présente
comme un programme supportant
une interface KISS au travers de laquelle vous passez des trames AX.25
; de plus il comprend une interface
pour les protocoles tcp/ip. Il est configurable avec un seul fichier
de configuration appelé /etc/ax25/ax25ipd.conf.
Dans le fichier de configuration, vous configurez les "routes" ou
les mappages entre les indicatifs AX.25 de
destination et l'adresse IP des machines vers lesquelles vous souhaitez
également envoyer des paquets AX.25.
Chaque route a des options qui seront expliquées plus tard.
Les autres options pouvant être configurées sont les suivantes:
. le tty qui sera ouvert par le daemon ax25ipd ainsi que sa vitesse (d'habitude une terminaison de pipe)
. l'indicatif que vous souhaitez utiliser en mode "digipeater"
. l'intervalle de déclenchement la balise ainsi que son texte
si vous choisissez d'encapsuler les trames dans des segments IP ou
UDP/IP. La plupart des passerelles
AXIP utilise l'encapsulation IP, mais quelques passerelles sont derrière
des firewalls qui n'autoriseront pas
que l'IP avec l'identifiant de protocole AXIP puisse passer, en conséquence
ils seront obligés d'utiliser UDP/IP.
Suivant ce que vous choisissez, vous devez toujours vous assurer que
la machine tcp/ip située à l'autre bout
du circuit a le même lien que le vôtre.
# /etc/ax25/axports
#
axip
VK2KTJ-13 9600 256
AXIP port
#
Exécuter la commande kissattach pour créer ce port:
/usr/sbin/kissattach /dev/ptyq0 axip
Exécuter le programme ax25ipd:
/usr/sbin/ax25ipd &
Tester le lien AXIP:
call axip vk5xxx
Il y a deux drapeaux que vous pouvez ajouter à n'importe quelle
commande route du fichier ax25ipd. Les
deux drapeaux sont:
b : le trafic avec une adresse de destination
correspondant à
n'importe
laquelle des entrées de la liste définie par le mot
clé
"broadcast" devra être transmis via cette route.
d : chaque paquet ne correspondant à
aucune des routes devra
être
transmis via cette route.
Le drapeau de diffusion est très utile, car il diffuse des informations
qui sont normalement destinées à toutes
les stations vers un certain nombre de destinations AXIP. Normalement
les routes AXIP sont en point à point
et incapables de manipuler des paquets de diffusions.
Brandon S. Allbery, KF8NH, a contribué aux explications suivantes
pour expliquer comment interconnecter
NOS sur Linux avec le noyau grâce à un pipe Linux.
Puisque Linux et NOS supportent tous les deux le protocole slip, il
est possible de les lier ensemble en créant
un lien slip. Vous pouvez faire ceci en utilisant deux ports
série avec un câble en boucle sur chacun d'eux,
toutefois cela va s'avérer à la fois coûteux et
lent.
Linux fournit une spécificité que les autres systèmes
Unix appellent 'pipe'. Il s'agit de pseudo unités qui
ressemblent à des unités standard tty mais qui
en fait bouclent vers une autre unité 'pipe'. Afin d'utiliser ces
pipes,
le premier programme doit d'abord ouvrir le pipe maître puis
le second programme ouvrira le pipe esclave.
Lorsque les deux sont ouverts alors les programmes peuvent communiquer
ensemble simplement en écrivant des
caractères vers les pipes exactement comme s'il s'agissait d'unités
de terminal.
Afin d'utiliser cette facilité pour connecter le noyau Linux
avec une copie de NOS ou un quelconque autre
programme, vous devez d'abord choisir un pipe. Vous pouvez en
trouver un dans le répertoire /dev.
Les pipes maîtres sont nommés: ptyp[1-f] et les pipes
esclaves sont connus comme: ttyp[1-f].
Rappelez-vous que ceux-ci travaillent par paire, alors si vous choisissez
/dev/ptypf comme maître, vous devez
choisir /dev/ttypf comme esclave.
Une fois que vous avez choisi une paire de pipe, vous devez allouer
le pipe maître au noyau Linux et le pipe
esclave au programme NOS, puisque le noyau Linux démarre
d'abord, le pipe maître doit d'abord être ouvert.
Rappelez-vous aussi que votre noyau Linux doit avoir une adresse IP
différente de celle du NOS, alors pensez
à lui allouer une adresse unique si ce n'est pas encore fait.
On configure le pipe exactement comme une unité série,
donc pour créer un lien slip depuis votre noyau Linux,
utilisez les commandes suivantes:
# /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
Dans cet exemple, le noyau Linux s'est vu affecté l'adresse IP
44.70.4.88 et le programme NOS l'adresse
IP 44.70.248.67. La commande route sur la dernière ligne indique
simplement au noyau de router toutes les
données pour le réseau amprnet via le lien slip qui a
été crée par la commande slattach. Normalement vous
placez ces commandes dans votre fichier /etc/rc.d/rc.inet2 une fois
que toute votre configuration réseau s'est
bien déroulée de façon à ce que le
lien slip soit crée automatiquement une fois que vous avez
rebooté.
Note: il n'y a aucun avantage à utiliser cslip plutot que slip
car celui-ci réduit les performances puisque le
lien est complètement virtuel et est suffisamment rapide
par rapport au temps que met cslip pour compresser
les entêtes.
Pour finaliser la configuration du lien NOS, utilisez ceci:
# Appelez l'interface comme vous le voulez, j'utilise
"linux".
attach asy ttyqf - slip linux
1024 1024 38400
route addprivate 44.70.4.88 linux
Ces commandes vont créer un port slip nomme 'linux' via le pipe
esclave vers le noyau Linux et une route vers
ce dernier. Une fois que vous avez démarré NOS, vous
devriez être capable d'exécuter un ping ou un telnet
vers votre NOS directement depuis votre machine Linux et vice-versa.
Si ce n'est pas le cas, alors vérifiez que vous n'avez pas commis
d'erreur et plus particulièrement que vous avez
bien configuré les adresses et que les pipes ont été
montés dans le bon ordre.
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/>
De l'information sur les Baycom est disponible sur la page web Baycom <http://www.baycom.de/>.
Pour joindre le canal Linux linux-hams sur la liste de distribution, envoyer un courrier à:
avec la ligne:
subscribe linux-hams
dans le corps du message. Le sujet est ignoré.
La liste de distribution linux-hams est archivée à:
zone.pspt.fi <http://zone.pspt.fi/archive/linux-hams/>
et
zone.oh7rba.ampr.org <http://zone.oh7rba.ampr.org/archive/linux-hams/>.
Veuillez consulter d'abord les archives, car vous y trouverez réponses aux questions les plus fréquentes.
Pour joindre le groupe tcp-group envoyez un courrier à:
avec la ligne:
subscribe tcp-group
dans le corps du message.
Note: Rappelez-vous que le groupe tcp-group est à l'origine consacré
à la discussion avancée des protocoles,
comme tcp/ip. Les questions plus courantes et spécifiques concernant
Linux n'y sont habituellement pas
débattues.
Ce programme est libre et gratuit; vous pouvez le redistribuer et/ou
le modifier en accordance avec les termes
de licence GNU promulgués par Free Software Foundation; que
ce soit la version 2 de la licence, ou (suivant
votre option), une autre version plus récente.
Ce programme est distribué avec l'espoir qu'il sera utile, mais
SANS AUCUNE GARANTIE; sans même la
garantie de MARCHANDABILITE ou de BON FONCTIONNEMENT POUR UNE
UTILISATION
PARTICULIERE. Veuillez consulter la licence GNU pour plus de détails.
Vous devriez avoir une copie de la licence publique GNU avec le programme;
si ce n'est pas le cas, alors
écrivez à:
Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.