NOS (1) è una sorta di sistema operativo per le reti IPv4 nato per soddisfare le esigenze dei radioamatori. Se si considerano l'età e il fatto che funziona perfettamente su un sistema operativo Dos, si tratta di un applicativo eccezionale quando si dispone di hardware molto vecchio. La sigla KA9Q è il nominativo da radioamatore dell'autore originale di questo programma, Phil Karn, ma spesso si fa riferimento a questo software indifferentemente con le sigle KA9Q, NOS o qualcosa che termina per *NOS.(2)
Esistono diverse interpretazioni del sistema NOS-KA9Q; probabilmente il riferimento migliore per ottenere il materiale necessario è il deposito Simtel.Net, che ospita una directory apposita per questo: ftp://ftp.simtel.net/pub/simtelnet/msdos/tcpip/. In particolare è necessario prelevare il file contenente l'eseguibile NET.EXE, che potrebbe avere un nome simile a e920603.zip
(dove il numero corrisponde alla data ed eventualmente potrebbe essere sostituito da una versione più recente) e poi conviene prelevare altri file per ottenere della documentazione: intronos.zip
, ka9qbgn.zip
e nos_slfp.zip
(questo ultimo file può essere utile soprattutto per vedere come potrebbe essere effettuata una connessione PPP attraverso la porta seriale e il modem).
La versione 920603, corrispondente al file |
NOS, una volta avviato, prende il controllo del sistema e i comandi che si impartiscono sono interpretati da questo, senza passare per il Dos sottostante. Anche per questa ragione si introduce l'uso di NOS in un capitolo separato, rispetto a quello già dedicato agli applicativi Dos (capitolo u87).
Qui si mostrano le caratteristiche «normali» di NOS, nel senso che di questo sistema di rete sono state realizzate un'infinità di varianti. Evidentemente, il NOS che si può trovare può corrispondere o meno alle caratteristiche che vengono descritte qui. Se il pacchetto NOS che si trova contiene qualche file di documentazione, conviene leggerlo per verificare che tutto corrisponda a quanto previsto. |
Anche se non si intendono sfruttare a fondo tutte le possibilità di NOS, conviene creare tutte le directory previste da questo mini sistema di rete. Se non si vuole fare fatica nella configurazione, conviene predisporre quelle seguenti, che riguardano le versioni «normali» di NOS:
C:\SPOOL C:\SPOOL\HELP C:\SPOOL\MAIL C:\SPOOL\MQUEUE C:\SPOOL\RQUEUE C:\SPOOL\NEWS |
Come si può intuire, si tratta di spazi predisposti per la gestione della posta elettronica; cosa che comunque non viene mostrata in questo capitolo.
Volendo utilizzare una posizione diversa, nello stesso disco o in un altro, occorre almeno mantenere la stessa struttura; per esempio come nel modo seguente, tenendo conto che occorre avviare il programma NET.EXE specificando questa variante nelle opzioni.
D:\NOS\SPOOL D:\NOS\SPOOL\HELP D:\NOS\SPOOL\MAIL D:\NOS\SPOOL\MQUEUE D:\NOS\SPOOL\RQUEUE D:\NOS\SPOOL\NEWS |
Nella directory utilizzata come punto di inizio della gerarchia del sistema NOS, va collocato il file di configurazione AUTOEXEC.NET
. Questo rappresenta semplicemente una sequenza di comandi NOS da eseguire prima di mostrare l'invito all'utente. È abbastanza importante predisporre questo file, per non dover ogni volta ridefinire la configurazione delle interfacce e gli instradamenti relativi.
Ovviamente, per sapere come predisporre questo file occorre conoscere i comandi del sistema NOS. Per cominciare si tenga presente che sono ammessi i commenti prefissati dal simbolo # e terminati dalla fine della riga in cui appaiono; inoltre, se si utilizza un elaboratore appartenente alla famiglia «AT», cioè quelli che hanno un'architettura i286 o superiore, può essere utile indicare il comando isat on. Per il momento si osservi l'esempio seguente, che si riferisce all'uso di una scheda di rete gestita attraverso un driver di pacchetto di quelli descritti nel capitolo precedente (u87).
|
Il sistema NOS richiede per funzionare che le interfacce di rete da utilizzare siano controllate da un driver di pacchetto, tranne nei casi in cui è in grado di gestirsele da solo. NOS può utilizzare i driver di pacchetto già mostrati nel capitolo u87 e altri specifici, come nel caso del file nos_slfp.zip
che contiene il necessario per gestire una connessione PPP partendo dal controllo della porta seriale e del modem.
Per non appesantire troppo la presentazione del sistema NOS, vengono mostrati solo esempi che fanno riferimento a una scheda di rete gestita attraverso un driver di pacchetto configurato in modo da utilizzare l'indirizzo IRQ 7E16 per comunicare con le applicazioni. Volendo fare il solito esempio della scheda NE2000 configurata per usare l'indirizzo IRQ 11 e la porta di I/O 30016, si tratta di usare il comando seguente:
|
Tutto il sistema NOS è inserito in un solo eseguibile Dos: NET.EXE. All'avvio del programma può essere conveniente utilizzare qualche opzione.
NET [-b] [-s n_porte] [-d directory_nos] [file_configurazione] |
Dopo l'avvio, il sistema NOS mostra alcune informazioni riferite alla versione e quindi l'invito a inserire dei comandi:
|
Qui viene mostrata una versione particolarmente vecchia del programma; se si trattasse di un'edizione specifica per microprocessori i386 o superiori, tale informazione apparirebbe tra quelle che precedono l'invito.
Tutti i comandi che vengono descritti nelle sezioni successive devono essere impartiti al sistema NOS attraverso l'invito net>, oppure possono essere collocati nel file di configurazione (di solito AUTOEXEC.NET
).
|
Segue la descrizione di alcuni esempi.
C:\>
NET
[Invio]
Avvia il sistema NOS utilizzando la gerarchia che si articola a partire dalla directory radice del disco C:
(C:\SPOOL\*
) e il file di configurazione C:\AUTOEXEC.NET
.
C:\>
NET -d C:\NOS
[Invio]
Avvia il sistema NOS utilizzando la gerarchia che si articola a partire dalla directory C:\NET\
(C:\NET\SPOOL\*
) e il file di configurazione C:\NET\AUTOEXEC.NET
.
C:\>
NET -d C:\NOS C:\NOS.RC
[Invio]
Avvia il sistema NOS utilizzando la gerarchia che si articola a partire dalla directory C:\NET\
(C:\NET\SPOOL\*
) e il file di configurazione C:\NOS.RC
.
Dal momento che il sistema NOS si comporta come una shell, si può intuire il modo attraverso il quale si conclude il suo funzionamento: con il comando exit:
net>
exit
[Invio]
Come suggerisce lo stesso NOS quando si inserisce un comando errato, è disponibile una mini guida interna costituita dall'elenco dei comandi. Si ottiene con help, oppure semplicemente con ?. Non è molto, dal momento che non viene mostrata la sintassi rispettiva, comunque è sempre meglio di nulla.
net>
help
[Invio]
Le cose più importanti da fare per poter utilizzare il sistema NOS, sono la definizione delle interfacce, l'instradamento e la risoluzione dei nomi. Le interfacce vengono «attaccate» attraverso il comando attach, quindi vengono configurate attraverso ifconfig, alla fine l'instradamento viene definito attraverso il comando route. NOS non ha funzionalità di DNS, a parte la possibilità di risolvere alcuni nomi a dominio per conto proprio, ma si può avvalere di un DNS esterno attraverso il comando domain.
I comandi che vengono descritti in queste sezioni sono usati generalmente per la configurazione attraverso il file AUTOEXEC.NET
. Ciò dovrebbe essere intuitivo dato il tipo di operazioni che si svolgono con questi.
Attraverso il comando attach si possono definire le interfacce utilizzate. Di solito l'eseguibile NET.EXE è predisposto per la gestione delle porte seriali (asy) e per l'uso di un driver di pacchetto esterno.
attach asy i/o irq { ppp | slip } nome_interfaccia dim_buffer mtu bps [c][r][v] |
attach packet irq nome_interfaccia coda_trasmissione mtu |
Quello che si vede rappresenta la sintassi per la definizione di un'interfaccia seriale (PPP, SLIP, o altre che non sono state indicate) e per un'interfaccia comandata da un driver di pacchetto esterno.
Nel caso del tipo asy, cioè della connessione seriale, il numero di IRQ e l'indirizzo di I/O si riferiscono a quelli della porta seriale stessa; inoltre, gli ultimi argomenti sono la velocità espressa in bit/s (bps) e una stringa facoltativa dove possono apparire le lettere c, r e v. Queste lettere rappresentano tre modalità: se appare la c si utilizza il protocollo RTS/CTS; se appare la r si abilita la sensibilità al segnale CD (Carrier detect); se appare la v si abilita la compressione Van Jacobson delle intestazioni TCP/IP, ma solo per le connessioni SLIP.
Con le interfacce gestite da un driver di pacchetto esterno diventa tutto più facile, dal momento che la cosa più importante è solo l'indicazione dell'indirizzo IRQ software (quello che serve a individuare il driver).
Per eliminare un'interfaccia si utilizza invece il comando detach secondo la sintassi seguente:
detach interfaccia |
Segue la descrizione di alcuni esempi.
|
Utilizza un driver di pacchetto per gestire una scheda Ethernet. L'indirizzo IRQ per comunicare con il driver è 7E16; viene definito il nome ethernet0 per fare riferimento a questa scheda; si pone il limite di otto pacchetti per la coda di trasmissione; si stabilisce l'unità massima di trasmissione in 1 500 byte.
|
Questo esempio è tratto dalla documentazione di NOS e si riferisce a una connessione SLIP attraverso la porta seriale individuata dall'indirizzo di I/O 3F816 e dall'indirizzo IRQ 4. Il nome che viene attribuito è sl0; viene definito un buffer di ricezione di 1 024 byte; la dimensione massima dei pacchetti trasmessi è di 256 byte; la velocità della porta seriale è di 9 600 bit/s.
|
Anche questo esempio è tratto dalla documentazione di NOS e si riferisce a una connessione PPP attraverso la porta seriale individuata dall'indirizzo di I/O 3F816 e dall'indirizzo IRQ 4. Il nome che viene attribuito è pp0; viene definito un buffer di ricezione di 4 096 byte; la dimensione massima dei pacchetti trasmessi è di 1 500 byte; la velocità della porta seriale è di 9 600 bit/s; viene abilitato il controllo della linea CD del modem.
|
Elimina l'interfaccia ethernet0.
Attraverso il comando ifconfig si possono configurare le interfacce definite in precedenza con il comando attach. Il comando può assumere diverse forme, ma in particolare sono importanti gli schemi seguenti:
ifconfig [nome_interfaccia] |
ifconfig nome_interfaccia ipaddress indirizzo_ip |
ifconfig nome_interfaccia netmask maschera_ip |
Utilizzando il comando da solo, senza argomenti, si ottiene la visualizzazione dello stato di tutte le interfacce di rete, comprese quelle predefinite; se si specifica il nome di un'interfaccia, il risultato si limita allo stato di questa. La seconda e la terza modalità servono invece per abbinare un indirizzo IP e una maschera di rete all'interfaccia.
Segue la descrizione di alcuni esempi.
|
Mostra lo stato dell'interfaccia ethernet0, che in precedenza è stata dichiarata con questo nome.
|
Abbina all'interfaccia l'indirizzo IP 192.168.1.10.
|
Abbina all'interfaccia la maschera IP 255.255.255.0.
Il comando route permette di definire gli instradamenti attraverso le interfacce di rete configurate precedentemente, specificando eventualmente anche i router necessari a raggiungere le reti esterne.
route |
route add indirizzo_ip/n_bit_maschera nome_interfaccia [router] |
route add default nome_interfaccia [router] |
La sintassi mostrata rappresenta una semplificazione del comando necessario a definire un instradamento. La coppia indirizzo_ip/n_bit_maschera è un modo per rappresentare l'indirizzo di una rete in modo compatto: il numero di bit rappresenta quanti bit iniziali devono essere posti a uno nella maschera di rete.
Per eliminare un instradamento si utilizza la forma seguente:
route drop indirizzo_ip/n_bit_maschera |
route drop default |
Segue la descrizione di alcuni esempi.
|
Mostra l'instradamento delle interfacce.
|
Definisce l'instradamento per la rete identificata dagli indirizzi 192.168.1.* attraverso l'interfaccia ethernet0.
|
Definisce l'instradamento predefinito attraverso il router 192.168.1.254.
Il comando domain permette di definire quali sono i servizi DNS a cui il sistema NOS può rivolgersi; permette anche di configurare il loro utilizzo e di definire eventualmente una risoluzione locale per alcuni indirizzi. Qui viene mostrato solo come dichiarare l'uso dei servizi DNS e il dominio predefinito.
domain addserver indirizzo_ip_DNS |
domain suffix [suffisso_predefinito] |
Segue la descrizione di alcuni esempi.
|
Dichiara l'uso del servizio DNS collocato presso i nodi 192.168.1.1 e 192.168.1.2.
|
Dichiara che in caso di nomi a dominio incompleti viene aggiunto il suffisso brot.dg
.
|
Mostra il suffisso predefinito per i nomi a dominio.
Il sistema NOS può gestire diverse sessioni di lavoro, corrispondenti ad altrettante attività che implicano l'instaurarsi di una connessione. Per esempio si possono gestire diverse connessioni TELNET simultaneamente e lo stesso vale per l'utilizzo del protocollo FTP. Tutto questo funziona in modo paragonabile al sistema delle console virtuali di GNU/Linux: con il sistema NOS c'è una finestra per la modalità di comando, dove si trova l'invito, attraverso la quale si impartiscono i comandi, e le finestre delle sessioni che vengono aperte automaticamente in base al tipo di comando che viene dato.
Quando ci si trova a interagire con una sessione è possibile tornare alla finestra della modalità di comando attraverso il tasto [F10] (vale solo per il NOS che si basa sul Dos) e poi, da lì è possibile tornare a una sessione attraverso il comando session. Da questo si comprende che le sessioni sono numerate, cosa che avviene in modo automatico. Una di queste è anche la sessione attiva, ovvero quella a cui si potrebbe fare riferimento quando non se ne specifica il numero.
|
Dal momento che non è possibile intervenire direttamente sul sistema operativo sottostante senza interrompere le connessioni che eventualmente fossero state instaurate, NOS deve incorporare alcune funzionalità che non hanno attinenza con la rete, ma che sono indispensabili a livello pratico.
Per quanto riguarda i percorsi delle directory possono essere indicati utilizzando sia le barre oblique inverse (\) che quelle normali (/) per la separazione dei nomi che li compongono.
|
Oltre a quanto visto inizialmente per ciò che riguarda la definizione delle interfacce, la loro configurazione, l'instradamento e la risoluzione dei nomi, c'è una serie di comandi e di funzionalità per la gestione della rete.
arp |
arp flush |
Il comando arp permette di conoscere il contenuto della tabella di trasformazione degli indirizzi IP in indirizzi fisici e viceversa. Questa viene costruita automaticamente dal sistema, durante il suo funzionamento. Sono disponibili degli argomenti particolari per inserire a forza delle voci nella tabella, anche se questa operazione non dovrebbe essere necessaria. In particolare, il comando arp flush svuota la tabella attuale, costringendo il sistema NOS a ricominciare a costruirsela.
Attraverso il comando ping si può inviare una richiesta di eco utilizzando il protocollo ICMP. Questo è il modo consueto per verificare che sia presente un certo nodo nella rete. In generale conviene utilizzare soltanto la sintassi seguente, con la quale viene inviata un'unica richiesta.
ping nodo |
Per verificare il percorso dei pacchetti lungo la rete si può utilizzare il comando hop. Il comando normale si articola nel modo seguente:
hop check nodo |
Tuttavia, si può intervenire su alcuni parametri di funzionamento di questo comando: il TTL (Time to live),
hop maxttl max_salti |
l'attesa massima,
hop maxwait n_secondi |
e il numero di pacchetti di prova che vengono inviati a ogni nodo.
hop queries n_pacchetti |
Infine, è possibile abilitare o meno la visualizzazione di informazioni aggiuntive:
hop trace [on|off] |
hostname [nome] |
Attraverso il comando hostname è possibile definire o visualizzare il nome attribuito al nodo. Questo dovrebbe corrispondere alla parte finale del nome a dominio, ma in ogni caso serve solo nei messaggi di presentazione del sistema.
socket [n_porta] |
Attraverso il comando socket è possibile conoscere lo stato delle porte. Utilizzandolo senza argomenti si ottiene l'elenco delle porte utilizzate, generalmente quelle dei servizi in ascolto ed eventualmente anche quelle gestite dalle sessioni in cui si utilizzano dei clienti di qualche tipo, mentre specificando una porta precisa si ottengono le statistiche sul traffico intrattenuto.
L'uso più importante del sistema NOS è quello di cliente in grado di utilizzare i servizi fondamentali di una rete TCP/IP. Si tratta principalmente di TELNET e FTP.
Il sistema NOS permette di attivare una sessione TELNET verso un altro sistema che offra la possibilità di accedere attraverso questo tipo di protocollo. Purtroppo, il tipo di terminale corrispondente alla sessione TELNET è molto modesto, tanto che nelle versioni più limitate di NOS non si possono usare nemmeno i tasti freccia.
telnet nodo |
Quando si utilizza questo tipo di cliente TELNET per accedere a un nodo corrispondente a un elaboratore GNU/Linux, il tipo di terminale che si vede nella variabile TERM è network, che però non corrisponde ad alcuna voce nel sistema Terminfo o nel sistema Termcap. Eventualmente si può cambiare questo nome con ansi, o ansi-mono se si preferisce.
Da una sessione TELNET è possibile tornare alla modalità di comando premendo il tasto [F10]. Per ritornare alla sessione con TELNET, si può poi utilizzare il comando session. |
Il sistema NOS permette di attivare una sessione FTP. Una volta avviata, si ha a disposizione un cliente FTP tradizionale, con comandi molto simili a quelli del programma ftp dei sistemi Unix.
ftp nodo |
L'unico vero difetto sta nel sistema operativo sottostante: utilizzando il Dos i nomi dei file che vengono salvati sono ridotti al modello «8.3».
È importante ricordare di modificare sempre il tipo di trasferimento dati, in modo che sia di tipo binario (image): type i. |
I servizi offerti da NOS sono limitati e comunque dipendono dalla versione di questo sistema. Questi servizi devono essere abilitati attraverso il comando start. Dal momento che dipende dalla versione di NOS se un tipo di servizio è disponibile o meno, attraverso il comando start ? si ottiene l'elenco di questi.
In generale non conviene avere grandi pretese; probabilmente è il caso di attivare sempre i servizi discard, echo, ftp e finger (ammesso che questo ultimo possa avere senso).
|
Per converso, volendo disattivare un servizio basta utilizzare il comando stop nello stesso modo.
NOS permette di annotare gli accessi in un registro abbastanza semplificato. Si attiva questa funzionalità attraverso il comando log:
log [stop | file_delle_registrazioni] |
Per esempio, per attivare la registrazione degli accessi nel file C:\ACCESSI.LOG
, si può usare il comando seguente:
|
Come si può intuire, il comando log stop termina l'attività di registrazione degli accessi, senza interferire con gli accessi stessi. Infine, il comando log senza argomenti permette di sapere se questo sia attivo e in tal caso su quale file vengono fatte le annotazioni.
Per abilitare il servizio FTP, oltre che usare il comando start ftp, occorre predisporre un file di autorizzazioni: ftpusers
collocato nella directory radice del servizio NOS. Il file deve contenere delle righe scomposte in quattro campi separati da uno o più spazi e si possono indicare anche dei commenti che si introducono con il simbolo #.
utente parola_d'ordine percorso permessi |
I quattro campi sono obbligatori e il significato è intuitivo:
utente serve a specificare il nome dell'utente che può accedere;
parola_d'ordine rappresenta la parola d'ordine in chiaro necessaria per l'accesso -- se si utilizza un asterisco (*), viene accettata qualunque parola d'ordine;
percorso indica la directory a partire dalla quale si concede l'accesso all'utente;
permessi è un numero che esprime i permessi consentiti all'utente.
I permessi non sono indicati secondo la tradizione Unix, quindi occorre fare attenzione. I permessi sono espressi con un solo numero ottenuto sommandone altri, che comunque si riferiscono alla directory di partenza e a tutte le sottodirectory: uno rappresenta un permesso di lettura; due rappresenta un permesso di creazione (di aggiunta di file senza poter sovrascrivere o eliminare quelli esistenti); quattro rappresenta un permesso di scrittura (o di sovrascrittura). Si osservi l'esempio seguente:
|
Gli utenti tizio e caio hanno una loro directory personale in cui possono fare quello che vogliono; l'utente sempronio partecipa a un lavoro che si trova nella directory \PROGETTO\
e lì ha la possibilità di immettere file, senza cancellare o sovrascrivere quelli presenti. Infine, gli utenti ftp e anonymous accedono con una parola d'ordine qualunque alla directory \PUB\
, con il solo permesso di lettura.
NOS funziona perfettamente come router se l'elaboratore in cui si utilizza dispone di più interfacce di rete. A titolo di esempio viene mostrato in che modo potrebbero essere utilizzate due schede di rete compatibili NE2000. Supponendo che queste utilizzino rispettivamente le risorse IRQ 10, I/O 28016, e IRQ 11, I/O 30016, la configurazione del driver di pacchetto (si fa riferimento a quanto descritto nella sezione u0.1) potrebbe essere quella seguente:
|
Supponendo che queste due schede servano a connettere le reti 192.168.1.* e 192.168.2.*, supponendo anche che l'instradamento predefinito passi per il router 192.168.1.254, il file di configurazione di NOS potrebbe contenere in particolare le righe seguenti:
|
Non c'è bisogno di fare altro: l'attraversamento dei pacchetti da un'interfaccia all'altra avviene automaticamente (purché gli instradamenti siano corretti).
1) NOS GNU GPL come descritto in http://www.ka9q.net/code/
2) NOS è disponibile in varie versioni per diversi sistemi operativi: PMNOS per Presentation Manager (OS/2), AmigaNOS per Amiga e TNOS per GNU/Linux! L'attenzione di questo capitolo è comunque rivolta alle versioni di NOS per Dos.
«a2» 2013.11.11 --- Copyright © Daniele Giacomini -- appunti2@gmail.com http://informaticalibera.net