node è stato sviluppato da Tomi Manninen e si basa sul programma PMS. Rende disponibili le funzionalità di nodo in modo piuttosto completo e flessibile, permettendo agli utenti, una volta connessi, di fare connessioni in uscita di tipo Telnet, AX.25, NET/ROM e Rose, nonchè di ottenere informazioni con Finger, Nodes, Heard eccetera. Si può inoltre configurare il nodo in modo da far eseguire qualunque comando Linux in modo piuttosto semplice.
Node viene normalmente lanciato dal programma ax25d, per quanto possa essere eseguito anche da linea di comando oppure lanciato dal programma TCP/IP inetd per permettere agli utenti di fare telnet sulla vostra macchina.
Il file node.conf è dove viene scritta la configurazione principale del nodo. È un semplice file di testo ed è formattato nel seguente modo:
# /etc/ax25/node.conf # file di configurazione del programma node(8). # # Le linee che iniziano con '#' sono commenti e vengono ignorate. # Hostname # Specifica il nome della macchina che fa da nodo. hostname radio.gw.vk2ktj.ampr.org # Rete Locale # Permette di specificare cosa dev'essere considerato 'locale' # per il controllo dei permessi usando nodes.perms. localnet 44.136.8.96/29 # Occultamento di alcune porte # Se viene specificato, questo parametro permette di rendere le porte # invisibili agli utenti. Le porte qui elencate non saranno riportate # dal comando (P)orts. hiddenports rose NET/ROM # Identificazione del nodo. # Questo apparirà al prompt del nodo. NodeId LINUX:VK2KTJ-9 # Porta NET/ROM # Questo è il nome della porta NET/ROM che verrà usata per # le connessioni NET/ROM in uscita dal nodo. NrPort NET/ROM # Node Idle Timeout # Specifica il tempo di idle in secondi per le connessioni fatte # a questo nodo (cioè quanto possono rimanere inattive prima che la # connessione venga interrotta. idletimout 1800 # Connection Idle Timeout # Specifica il tempo di idle in secondi per le connessioni fatte # attraverso questo nodo. conntimeout 1800 # Riconnessione # Specifica se gli utenti debbano essere riconnessi al nodo # se la loro connessione remota si interrompe, o se debbano essere # definitivamente disconnessi. reconnect on # Alias dei comandi # Permette di rendere semplici dei comandi di nodo più articolati. alias CONV "telnet vk1xwt.ampr.org 3600" alias BBS "connect radio vk2xsb" # Aliases dei comandi esterni # Permette di eseguire dei comandi esterni all'interno del nodo. # La sintassi è: # extcmd <nomecmd> <flag> <userid> <comando> # Flag == 1 è l'unica funzione implementata. # <comando> è formattato sullo stile di ax25d.conf extcmd PMS 1 root /usr/sbin/pms pms -u %U -o VK2KTJ # Logging # Stabilisce la quantità di informazioni che vengono scritte nel log. # 3 per il maggior numero di informazioni, 0 per disabilitare il log. loglevel 3 # Il carattere di escape # 20 = (Control-T) EscapeChar 20 |
node consente di assegnare permessi agli utenti. Questi permessi permettono di stabilire quali utenti, ad esempio, sono autorizzati a far uso di opzioni come i comandi (T)elnet e (C)onnect. Il file node.perms viene usato per stabilire questo genere di permessi e contiene cinque campi chiave; in ognuno di questi un asterisco '*' serve per indicare 'qualunque cosa' e viene usato per creare le regole di default.
Il primo campo rappresenta il nominativo o l'utente al quale devono applicarsi i permessi. Ogni ssid viene ignorato, quindi basta mettere il nominativo semplice.
Vengono concessi permessi anche ai protocolli o ai metodi di accesso. Per esempio si può permettere l'uso dell'opzione (C)onnect agli utenti connessi via AX.25 o NET/ROM, ma impedirlo agli altri. Il secondo campo perciò, permette di selezionare a quale metodo di accesso deve applicarsi la regola di accesso. I metodi di accesso sono i seguenti:
Metodo | Descrizione |
---|---|
ampr | L'utente è connesso via telnet da un indirizzo amprnet (44.0.0.0) |
ax25 | L'utente è connesso tramite AX.25 |
host | L'utente ha lanciato node dalla linea di comando |
inet | L'utente è connesso via telnet da un indirizzo non-locale e non-amprnet |
local | L'utente è connesso via telnet da un host 'locale' |
NET/ROM | L'utente è connesso tramite NET/ROM |
rose | L'utente è connesso tramite ROSE |
* | L'utente è connesso in un modo qualunque. |
Volendo è possibile controllare i permessi per gli utenti AX.25 porta per porta; questo permette di determinare cosa gli utenti sono in grado di fare a seconda della porta alla quale sono connessi. Se si sfrutta questa funzionalità (che funziona solo per le connessioni AX.25), il terzo campo contiene il nome della porta.
Si può opzionalmente configurare il nodo in modo che chieda una password alla connessione. Questo può essere utile per proteggere utenti con un livello di accesso particolarmente elevato; in questo campo, se presente, è contenuto il valore della password che dev'essere fornita.
Il campo permessi è l'ultimo per ciascuna voce nel file. Il valore che contiene è a campi di bit (ogni opzione è rappresentata da un bit più o meno settato a seconda che venga più o meno concesso il permesso per essa). La lista delle opzioni che possono essere controllate, e del relativo valore in bit è il seguente:
Valore | Descrizione |
---|---|
1 | Login consentito. |
2 | (C)onnect AX25 consentito. |
4 | (C)onnect NET/ROM consentito. |
8 | (T)elnet verso host locali consentiti. |
16 | (T)elnet verso host amprnet (44.0.0.0) consentiti. |
32 | (T)elnet verso host non-locali e non-amprnet consentiti. |
64 | (C)onnect AX25 consentito anche su porte occultate. |
128 | (C)onnect Rose consentito. |
Per stabilire una regola particolare, occorre sommare i valori dei singoli permessi che si vuole dare e mettere il numero risultante nel quinto campo.
Un esempio di file nodes.perms potrebbe essere il seguente:
# /etc/ax25/node.perms # #L'operatore del nodo è VK2KTJ, ha password 'secret' e ha tutti #i permessi per tutti i tipi di connessione vk2ktj * * secret 255 # Ai seguenti nominativi è impedito connettersi NOCALL * * * 0 PK232 * * * 0 PMS * * * 0 # Agli utenti INET è impedito connettersi. * inet * * 0 # Gli utenti AX.25, NET/ROM, Local, Host e AMPR possono fare (C)onnect # e (T)elnet a host locali e ampr, ma non ad altri indirizzi IP. * ax25 * * 159 * NET/ROM * * 159 * local * * 159 * host * * 159 * ampr * * 159 |
Il programma node viene lanciato di solito dal programma ax25d. Per fare questo occorre aggiungere delle particolari regole al file /etc/ax25/ax25d.conf. Nella configurazione che adotto, voglio permettere agli utenti di scegliere se connettersi a node o ad altri servizi. ax25d consente di fare questo attraverso l'intelligente creazione di alias delle porte. Ad esempio, data la configurazione di ax25d presentata sopra, si vuole configurare node in modo che venga lanciato per tutti gli utenti che si connettono a VK2KTJ-1 Per fare questo si aggiunge questo al file /etc/ax25/ax25d.conf:
[vk2ktj-1 via radio] default * * * * * 0 root /usr/sbin/node node |
Questo dice che il kernel di Linux risponderà ad ogni richiesta di connessione al nominativo 'VK2KTJ-1' ascoltato sulla porta chiamata 'radio' lanciando il programma node
Se si vuole che i propri utenti siano in grado di fare telnet su una porta della macchina e avere accesso a node lo si può fare piuttosto facilmente. La prima cosa da decidere e a quale porta gli utenti si devono connettere In questo esempio si è arbitrariamente scelta la porta 4000, sebbene Toi nella sua documentazione fornisca i passi per sostituire il normale demone Telnet con node.
Occorre modificare due file.
In /etc/services occorre aggiungere:
node 3694/tcp #OH2BNS's node software |
E in /etc/inetd.conf va aggiunto:
node stream tcp nowait root /usr/sbin/node node |
Una volta fatto questo, facendo ripartire il programma inetd, ogni utente connesso via telnet alla porta 3694 della macchina riceverà la richiesta di login, l'eventuale richiesta di password e sarà connesso a node.