12. Configurare Linux per accettare connessioni Packet

Linux è un sistema operativo molto potente e offre un elevato grado di flessibilità nella sua configurazione. Questa flessibilità porta come effetto collaterale una relativa complicatezza nell'operazione di configurazione. Quando si configura una macchina Linux per accettare connessioni AX.25, NET/ROM o Rose occorre farsi diverse domande. La più importante è "cosa voglio che gli utenti vedano quando mi connetto?". Molti hanno sviluppato belle applicazioncine che possono offrire servizi agli utenti che si connettono; alcune sono semplici come il programma pms, altre più complesse come node (entrambi presenti nelle utilità AX25). Alternativamente si potrebbe dare agli utenti un account sulla macchina, oppure potreste aver scritto un vostro programma, come un database personalizzato, o un gioco al quale volete che gli utenti si connettano. Qualunque soluzione scegliate, dovete informare il software AX.25 su quale programma lanciare quando accetta connessioni AX.25.

Il demone ax25d è simile a inetd, che viene comunemente usato per accettare e gestire le connessioni TCP/IP su macchine unix. Il compito di ax25d è quello di raccogliere e gestire i tentativi di connessione AX.25. Quando ne sente uno, controlla un file di configurazione per stabilire quale programma lanciare e connetterlo al chiamante. Poiché ax25d è lo strumento standard per accettare connessioni AX.25, NET/ROM e Rose, verrà descritto come configurarlo.

12.1. Creazione del file /etc/ax25/ax25d.conf

Questo è il file di configurazione per il demone AX.25 ax25d, che gestisce le connessioni entranti AX.25, NET/ROM e ROSE.

Ad una prima occhiata può apparire un po' criptico, ma presto si nota come in pratica sia molto semplice, avendo l'accortezza di evitare una piccola trappola.

Il formato generale del file ax25d.conf è il seguente:

# Questo è un commento ed è ignorato dal progamma ax25d.
[nome_porta] || <nome_porta> || {nome_porta}
<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>

Dove:

#

all'inizio di una riga indica che questa è un commento e deve essere ignorato da ax25d.

<nome_porta>

è il nome della porta AX.25, NET/ROM o ROSE come specificato nei file /etc/ax25/axports, /etc/ax25/nrports e /etc/ax25/rsports. Il nome della porta è circondato da parentesi quadre '[]' se è una porta AX.25, da parentesi acute '<>' se NET/ROM, o graffe '{}' se Rose. Esiste una forma alternativa per questo campo, che consiste nel far precedere il nome della porta da 'callsign/ssid via' per indicare che si vogliono accettare chiamate al nominativo/ssid attraverso quest'interfaccia. L'esempio dovrebbe rendere più chiaro il tutto.

<peer>

è il nominativo del nodo a cui si applica questa particolare configurazione. Se non si specifica un SSID, questa configurazione sarà applicata a tutti i SSID del nominativo.

window

è il parametro AX.25 "Window" (K) conosciuto anche come MAXFRAME che si applica in questa configurazione.

T1

è il valore di tempo di ritrasmissione del frame (T1) espresso in mezzi secondi.

T2

è il tempo, espresso in secondi, che il software AX.25 attende per un altro frame in ingresso, prima di mandare una risposta.

T3

è il tempo di inattività espresso in secondi, prima che il software AX.25 interrompa la sessione.

idle

è il valore di idle espresso in secondi.

N2

il numero di ritrasmissioni consecutive che possono essere fatte prima di interrompere la connessione.

<mode>

fornisce un meccanismo per stabilire alcuni tipi di permessi. I modi sono abilitati o disabilitati fornendo una combinazione di caratteri, ognuna rappresentante un permesso. I caratteri possono essere scritti sia in maiuscolo che in minuscolo, in un unico blocco, senza spazi.

<uid>

è l'utente con il quale viene eseguito il programma per gestire la connessione

<cmd>

è il path completo del comando da lanciare, senza specificare argomenti.

<cmd-name>

è il nome del programma lanciato, così come deve apparire in un comando ps as (normalmente è lo stesso valore di <cmd> privo del path).

<arguments>

sono gli argomenti da passare a <:cmd> quando viene lanciato. Possono essere passate utili informazioni con i seguenti token:

Occorre una sezione scritta nel formato visto sopra per ogni interfaccia AX.25, NET/ROM o ROSE dalla quale si vogliano accettare connessioni.

Nel paragrafo ci sono due tipi speciali di righe: uno inizia con la stringa 'parameters' e l'altro con la stringa 'default' (sì, c'è differenza). Queste servono per funzioni speciali.

Lo scopo delle linee 'default' dovrebbe essere ovvio; queste regolano il comportamento di quelle connessioni per le quali non sono specificate regole specifiche. In assenza di una regola di 'default', ogni connessione che non è riconducibile ad una regola definita, sarà rifiutata e il chiamante disconnesso senza alcun messaggio.

La riga 'parameters' assolve un compito più sottile, qui sta la trappola menzionata precedentemente. In ogni campo di ogni definizione per una regola di connessione, si può usare il carattere '*' per dire 'usa i valori di default'. La linea 'parameters' è quella che definisce questi valori. Lo stesso kernel ha alcuni valori di default che possono essere usati se non li si specifica con la linea 'parameters' La trappola è che questi valori di default si applicano solo alle regole sotto la linea 'parameters'. Si possono avere diverse linee 'parameters' per interfaccia in modo da creare gruppi di configurazioni di default. È importante notare che 'parameters' non permette di settare i valori dei campi 'uid' o 'command'.

12.2. Un semplice esempio di file ax25d.conf

Ok, a questo punto si impone un esempio chiarificatore:

# ax25d.conf for VK2KTJ - 02/03/97
# Questo file di configurazione usa le porte definite precedentemente

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

[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

<NET/ROM>
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

Questo esempio dice che chiunque voglia connettersi alla stazione 'VK2KTJ-0' ascoltato sulla porta AX.25 chiamata 'radio' dovrà sottostare alle seguenti regole:

Chiunque abbia il nominativo col valore 'NOCALL' non viene fatto entrare; si noti l'uso del modo 'L'.

La linea parameters modifica due parametri rispetto a quelli di default del kernel (Window e T1) e verrà lanciato il programma /usr/sbin/axspawn per loro. Ogni istanza di /usr/sbin/axspawn lanciata in questo modo apparirà come axspawn nell'output di un comando ps. Le due linee successive danno le regole per due stazioni che riceveranno questi permessi.

L'ultima linea nel paragrafo costituisce la regola che sarà applicata a tutti gli altri (compresi VK2XLZ e VK2DAY se usano un SSID diverso da -1). Questa definizione imposta implicitamente tutti i parametri e fa sì che il programma pms sia lanciato con un argomento che indica che funziona su una connessione AX.25, e che il nominativo utilizzato per rispondere è VK2KTJ. (Si veda il paragrafo 'Configurazione del PMS' per maggiori dettagli).

La configurazione successiva accetta connessioni a VK2KTJ-1 tramite la porta radio e lancia il programma node per chiunque si connetta.

Poi c'è una configurazione NET/ROM (si noti l'uso delle parentesi acute "< >"). Questa è più semplice: stabilisce che chiunque si connetta alla porta dal nome 'NET/ROM' farà partire il programma node, a meno che non abbia nominativo 'NOCALL', nel qual caso viene disconnesso.

Le ultime due configurazioni sono per le connessioni Rose; la prima per chi chiama 'vk2ktj-0', l'altra per chi chiama 'VK2KTJ-1 all'indirizzo di nodo Rose della macchina. Queste funzionano esattamente allo stesso modo; si noti l'uso delle parentesi graffe per caratterizzarle come porte Rose.

L'esempio sopra illustrato è piuttosto banale, ma penso che chiarisca sufficientemente le caratteristiche significative della sintassi del file di configurazione. Una descrizione approfondita di quest'ultima si può trovare nelle pagine man di ax25d.conf. Un esempio più dettagliato è incluso, invece, nelle Liax25-utils.

12.3. Lanciare ax25d

Una volta approntati i due file di configurazione, si può lanciare ax25d col comando:

# /usr/sbin/ax25d

Una volta fatto questo, i corrispondenti dovrebbero essere in grado di effettuare connessioni AX.25 alla vostra macchina Linux. Si ricordi di mettere il comando ax25d nei propri file rc, in modo che venga lanciato ogni volta che la macchina viene fatta ripartire.