Nelle lezioni precedenti la Bourne shell è stata introdotta come linguaggio di comandi per accedere alle funzionalità della macchina, possibilmente creando script che fossero di una qualche utilità per l'utente finale.
Fra le molte possibili funzionalità ci sono quelle che riguardano l'accesso alla rete e il relativo controllo del traffico di pacchetti su di essi. Da questo punto di vista ogni piattaforma Unix è dotata da una miriade di comandi per configurare, controllare, modificare le funzionalità di rete.
Nella lezione odierna, dopo un brevissimo escursus nel mondo delle reti per comprenderne i meccanismi base di funzionamento, verranno presentati un certo numero di comandi, fra i più famosi, che un utente può impiegare per gli scopi indicati. Si fa presente, comunque, che tali comandi sono pensati più per il system manager piuttosto che per l'utente normale per cui la loro piena funzionalità è possibile solo in modalità root.
Quando furono sviluppati i primi calcoltori elettronici si pensò, innanzitutto, a costruire grossi sistemi sia hardware che software capaci di rispondere alle richieste di parecchie centinaia, fino a migliaia, di utenti contemporaneamente connessi col sistema.
La politica dei mainframe fu alla base dello sviluppo degli elaboratori fino alla fine degli anni '70 quando cominciarono a diffondersi elaboratori di dimensioni più contenute e quindi più abbordabili dal punto di vista dei costi.
Con i minicomputer e microcomputer la connessione in rete divenne una necessità e ancora una volta il sistema operativo UNIX era in prima linea nell'affrontare questa scommessa sul futuro.
Fino a dieci anni fa l'attuale sviluppo della rete internet era del tutto impensabile per il modo stesso con cui fu concepita e sviluppata. La sua antenata, arpanet, nacque placidamente durante gli anni '70 nei campus californiani e, assieme alla sua controparte militare, milnet, sviluppata dal Dipartimento della Difesa statunitense, costituì il nucleo della rete che fu chiamata TCP/IP per via dei due protocolli base che fanno di un insieme di calcolatori una rete di calcolatori.
Infatti, una rete di calcolatori per potersi definire tale deve possedere una particolare struttura funzionale sulla quale possano trasferirsi, in modo trasparente, messaggi potenzialmente bidirezionali per ogni coppia di elaboratori dove un processo, in esecuzione sul primo, voglia scambiare dati con un secondo processo, in esecuzione su un altro elaboratore.
Dunque, una rete di calcolatori è un grafo i cui nodi rappresentano elaboratori (host) e i cui archi sono connessioni fisiche che permettono ad elaboratori, giograficamente vicini, di parlarsi direttamente.
Naturalmente, questa è soltanto una definizione approssimata perchè è necessario specificare nel dettaglio quali convenzioni (i cosiddetti protocolli) devono essere rispettate affinchè gli elaboratori della rete possano realmente scambiarsi messaggi, in modo trasparente rispetto all'implementazione della rete e alle specificità con cui ciascun elaboratore diventa un nodo della rete.
C'è, infine, un ulteriore problema e che si riferisce alle dimensioni fisiche della rete e che, attualmente, non bisogna dimenticarlo si attesta su una struttura comprendente 300-400 milioni di nodi la cui gestione richiede algoritmi di gestione della rete pensati ad hoc per poter lavorare bene con questi numeri.
Così, la rete, oggi generalmente conosciuta col nome internet, è dotata di due strutture connettive che la sostengono permanentemente e che si presentano come due sottoreti dense sulla rete stessa:
La rete per poter assolvere al suo compito deve essere implementata in modo che, quando due processi in esecuzione remota su due distinti calcolatori, vogliono comunicare fra loro sia possibile determinare nella rete un cammino lungo il quale i messaggi, transitando di nodo in nodo, possano giungere a destinazione.
A tale scopo è necessario specificare un certo un insieme di protocolli che, realizzate dalle convenzioni rispettate da tutti gli elaboratori della rete, permettono di sezionare un messaggio di arbitraria lunghezza (sessione) in pacchetti di dimensione fissa opportunamente segnati tali da ricostruire (trasporto, giunti a destinazione, il messaggio originale.
Naturalmente, ciascun pacchetto deve essere in grado di seguire il giusto cammino (istradamento) attraversando i nodi della rete (router) le cui tabelle forniscono localmente la direzione più conveniente (RIP e splitting the horizon) per proseguire. Ma i pacchetti devono essere trasmessi come segnali elettrici per cui devono essere divisi in frame che i protocolli ARP e PPP destinano senza indugi.
Comunque sia, la rete internet utilizza le convenzioni definite dai protocolli TCP e IP per generare, mantenere, istradare e ricostruire i messaggi per cui TCP/IP è la suite di protocolli che talvolta identifica la rete internet per cui questi termini vanno considerati come sinonimi.
Nel seguito viene riportata una collezione di comandi che il sistema operativo Unix mette a disposzione sia dell'utente normale che del system manager per gestire l'accesso in rete ed avere da questa utili informazioni.
Qualunque distribuzione di Linux si consideri risulta dotata di molti comandi per configurare, verificare lo stato e accedere alla rete. Si tratta di comandi resi disponibili al momemto dell'installazione. Nel seguito verrà data una breve descrizione dei comandi di rete più utilizzati, per i quali è comodo organizzarli nelle seguenti categorie:
Configurazione Di Rete |
I comandi più importanti sono quelli usati per configurare le interfacce e i metodi di accesso alla rete e, in quanto tali, sono normalmente utilizzati dagli amministratori di sistema, avendo la responsabilità ed il permesso di configurare le macchine di cui sono gestori. Ciò non toglie che gli utenti normali possano utilizzare tali comandi per determinare lo stato dell'installazione in rete della macchina.
Si noti che la maggior parte di questi comandi compaiono negli shell script lanciati durante la fase di boot del sistema che installa la rete. Linux riconosce automaticamente le interfacce della rete al momento del boot, purchè il nucleo sia configurato correttamente. Ad ogni interfaccia viene assegnata automaticamente un'etichetta - come l'interfaccia lo0 di "loopback"con cui la macchina comunica con se stessa, oppure eth0, la prima scheda di rete installata nel sistema.
Questi comandi sono elencati nell'ordine con cui sarebbe necessario invocarli qualora la rete venisse installata manualmente.
TCP/IP: Analisi del Traffico |
Il comando ping (così chiamato per il suono prodotto da un sistema sonar attivo) trasmette le richieste di eco all'host remoto seconde le specifiche indicate nella linea di comando. Le righe di risposta contengono il tempo totale impiegato dal pacchetto per raggiungere l'host remoto e tornare indietro. Terminata l'esecuzione di ping (mediante un control-C) il comando ricapitola i risultati, fornendo il "tempo totale medio di viaggio" e la "perdita percentuale dei pacchetti". Usate questo comando per verificare se ci sia qualche problema di collegamento fra voi e l'host remoto.
Tutti questi comandi effettuano interrogazioni ai DNS che possono essere semplici (dal nome dell'host all'indirizzo), inverse (dall'indirizzo al al nome dell'host), complesse (come l'elenco degli host in un dominio). Il comando dig è considerato quello in grado di fornire il maggior numero di informazioni mentre host produce l'output di default più semplice.
Clienti e Servizi di Rete |
Per configurare o eseguire servizi di rete, il primo package necessario allo scopo è quello dei TCP wrapper che gestiscono la maggior parte delle connessioni entranti. Una volta, ad esempio, il daemon FTP andava in esecuzione fin dall'inizio agganciandosi alla porta 21 per eseguire successivamente ascolti di richieste ftp e poi servirle. Ma il fatto che ciascun servizio prendesse la propria decisione sulle connessioni da accettare, ha reso più difficile o impossibile la creazione e l'applicazione di una politica uniforme degli accessi
Attualmente i sistemi sono realizzati con TCP wrapper, che controllano tutte le porte su cui possono essere fatte richieste di servizio. Quando si realizza una connessione i wrapper decidono se consentire o meno l'accesso e soltanto nel caso di connessione permessa viene attivato il daemon che deve rispondere ad essa. Tali regole si trovano nei file di configurazione etc/hosts.deny e etc/hosts.allow.
Porta | Client | Server | Descrizione |
---|---|---|---|
21 | ftp | in.ftpd | File Transfer Protocol - il protocollo standard per il trasferimento di file attraverso Internet, disponibili sia da account d'utente protetti da parola chiave sia da server "anonimi" pubblicamente disponibili |
23 | telnet | in.telnetd | Protocollo telnet d'accesso remoto via terminale - il protocollo standard per connettersi remotamente ad una macchina. |
37 | rdate | in.timed | Tempo di sistema - risponde con il tempo fornito dall'orologio di sistema. |
67 | bootptest | bootpd | Protocollo di Bootstrap da Internet - se si vuole controllare l'assegnazione di IP ADDRESS da una postazione centrale, si permette a tali macchine di trasmettere un messaggio broadcast al momento del booting in modo che un server della LAN risponda con IP ADDRESS che la macchina dovrebbe usare e possibilmente e un nome di file di configurazione da richiamare attraverso tftp |
69 | tftp | in.tftpd | Trivial File Transfer Protocol - un File Transfer Protocol molto semplice che permette a qualunque host di trasferire qualunque file dal sistema centrale pubblicamente leggibile nella propria directory (normalmente /tftpboot ). |
70 | Gopher | gn | Gopher - un browser gerarchico delle informazioni che era in uso prima dell'introduzione di HTML. |
79 | finger | in.fingerd | User Information Lookup - introdotti una username (o, per alcuni server, parte del nome di un utente) fornisce alcune statistiche generali, compreso l'ultimo periodo di inizio delle attività e se l'utente ha letto la sua posta. L'accesso al servizio è spesso limitato dai TCP wrapper poichè la conoscenza pubblica degli utenti riduce la sicurezza. |
110 | (vario) | ipop3d | PostOffice V.3 - Un protocollo per ricupero a distanza della posta |
113 | (vario) | in.identd | Autenticazione dell'utente - un servizio importante che, dato il numero di una porta attiva e dell'IP di un host, restituisce lo username dell'utente che sta impiegando quella porta. Usato in molte applicazioni che hanno a che fare con il controllo d'accesso e la sicurezza. |
119 | NNTP | in.nntpd | Usenet Transfer Protocol - il protocollo che permette ad un cliente remoto di interrogare un server di notizie. |
512 | rexec | in.rexecd | Esecuzione remota di un comando - permette ad un utente di eseguire un comando su un sistema remoto. I servizi seguenti forniscono un metodo di autenticazione abbreviato, permettendo ad un utente di creare un file .rhosts nella propria home directory che elenca i login name e le macchine che possono accedere il proprio account senza dovere digitare la password. La possibilità di utilizzare questi servizi va considerata in termini di sicurezza. |
513 | rlogin | in.rlogind | Remote login - Permits login from a remote system (see rexec above). |
514 | rsh | in.rshd | Remote shell - Gives a user a command prompt on a remote machine (see rexec above). |
517 | talk | in.talkd | (BSD) Talk to another user - Allows two users to type live messages back and forth to each other over the Internet. Popular for dating couples at different colleges or institutions. |
540 | uucp | uucico | Unix-to-Unix Copy protocol - An Internet incarnation of the ancient and venerated UUCP protocol which linked the world of Unix computers back when periodic modem connections were the primary means of communication. |
There are some more complex services which are usually always TCP wrapped:
Network Monitoring |
Dialup Networking |