The Linux Networking Overview HOWTO Daniel López Ridruejo, ridruejo@esi.us.es v0.31, 17 settembre 1999 Lo scopo di questo documento è di dare una panoramica alle possibilità di rete del sistema operativo Linux e di fornire puntatori a ulteriori informazioni e dettagli implementativi. Traduzione di Salvatore Passerini(s.passerini@mclink.it). 1. Introduzione Lo scopo di questo documento è di dare una panoramica delle possibilità di rete del sistema operativo Linux. Sebbene uno dei punti di forza di Linux è il fatto che ci sono moltissime informazioni disponibili praticamente su ogni cosa, molte di queste sono focalizzate sull'implementazione. Molti nuovi utenti di Linux, in particolare coloro che provengono da un ambiente Windows, non sono consci delle possibilità di networking che offre Linux. Questo documento vuole mostrare una rappresentazione generica di tali possibilità con una breve descrizione di ognuna di esse e puntatori per avere ulteriori informazioni. Le informazioni sono state raccolte da molte fonti: howto, faq, pagine web dei progetti e dalla mia esperienza personale. Ai diversi autori sono riconosciuti i loro meriti. Senza di loro e i loro programmi questo documento non sarebbe stato possibile o necessario. 2. Linux 2.1. Cos'è Linux? L'autore principale di Linux è Linus Torvalds. Sin dalla sua versione originale, è stato migliorato da un numero imprecisato di persone. È un clone, scritto partendo dal nulla, del sistema operativo UNIX. Uno dei fatti più interessanti su Linux è che il suo sviluppo avviene contemporaneamente in tutto il mondo. Linux è sotto copyright nei termini della GNU General Public License (GPL). Questa licenza, scritta dalla Free Software Foundation (FSF), è pensata per impedire a chiunque di imporre restrizioni sulla distribuzione del software. In breve, dice che sebbene possano essere richiesti dei soldi per una copia, alla persona che riceve la copia non può essere impedito di distribuirla gratuitamente. Ciò significa, inoltre, che dev'essere reso disponibile il codice sorgente. Questo è utile per i programmatori. Chiunque può modificare Linux e persino distribuire le sue modifiche, a patto che mantenga il codice sotto il medesimo copyright. 2.2. Che cosa rende Linux diverso? Perché lavorare su Linux? Linux generalmente è più economico (o almeno non più costoso) di altri sistemi operativi e frequentemente meno problematico di molti sistemi commerciali. Ciò che rende Linux diverso, tuttavia, non è il suo prezzo (dopo tutto, chi vorrebbe un sistema operativo, anche se fosse gratis, se non funzionasse bene?) ma le sue notevoli possibilità: · Linux è un vero sistema operativo multitasking a 32 bit, abbastanza robusto e potente da essere usato da università fino a grosse aziende. · Funziona su vecchie macchine 386 fino a macchine con parallelismo massiccio dei centri di ricerca. · Sono disponibili versione pronte all'uso per architetture Intel/Alpha/Sparc, e supporto sperimentale per Power PC e sistemi embedded oltre a molti altri (SGI, Ultra Sparc, AP1000+, Strong ARM, MIPS R3000/R4000...) · Per finire, quando si vuole fare qualcosa in rete, Linux è la scelta giusta. Non solo perché la rete è strettamente integrata nel S.O. stesso e sono liberamente disponibili una pletora di applicazioni, ma soprattutto per la sua robustezza anche sotto carichi elevati che è potuta essere stata raggiunta solo dopo anni di debug e di test nel progetto Open Source. 3. Protocolli di rete Linux supporta molti protocolli di rete diversi: 3.1. TCP/IP L'Internet Protocol è stato sviluppato una ventina di anni fa dal Dipartimento della Difesa (DoD) degli Stati Uniti, principalmente con lo scopo di connettere computer di diverse marche. La suite di protocolli TCP/IP permette, attraverso la sua struttura a strati, di isolare le applicazioni dall'hardware di rete. Sebbene sia basato sul modello a strati, è focalizzato più sulla distribuzione della interconnettività che sull'aderenza rigida agli strati funzionali. Questo è una delle ragioni per cui di fatto TCP/IP, piuttosto che OSI, è diventato il protocollo di internetworking standard. Il networking TCP/IP è stato presente in Linux sin dagli inizi. È stato implementato partendo da zero. È una delle implementazioni più robuste, veloci e affidabili e uno dei fattori chiave del successo di Linux. HOWTO Collegato: http://metalab.unc.edu/mdw/HOWTO/NET-3-HOWTO.html 3.2. TCP/IP versione 6 IPv6, qualche volta detto anche IPng (IP Next Generation) è un aggiornamento del protocollo IPv4 indirizzato alla risoluzione e al miglioramento di diversi fattori. Fra questi: la scarsità di indirizzi IP disponibili, la mancanza di un meccanismo per gestire traffico sensibile all'orario, la mancanza di sicurezza a livello di rete, ecc. L'incremento nello spazio di indirizzamento sarà accompagnato da uno schema di indirizzamento espanso, che avrà un grande impatto sulle prestazioni dell'instradamento. Per Linux esiste già un implementazione beta e una versione stabile è attesa per la versione 2.2.0 del kernel Linux. · Linux IPv6 HOWTO: http://www.terra.net/ipv6/linux-ipv6.faq.htm · IPv6 start page: http://playground.sun.com/pub/ipng/html/ipng- main.html 3.3. IPX/SPX IPX/SPX (Internet Packet Exchange/Sequenced Packet Exchange) è uno stack di protocollo proprietario sviluppato da Novell e basato sul protocollo Xerox Network Systems (XNS). IPX/SPX è diventato importante nei primi anni '80 come parte integrante di NetWare della Novell Inc. NetWare è diventato lo standard de facto nei sistemi operativi di rete (NOS - Network Operating System) della prima generazione di LAN. Novell ha completato il suo NOS con una suite di applicazioni orientate al business e con utilità di connessione per il lato client. Linux ha un'implementazione di IPX/SPX molto elegante, che gli permette di essere configurato come · IPX router · IPX bridge · NCP client e/o NCP Server (per la condivisione dei file) · Novell Print Client, Novell Print Server E di: · Abilitare PPP/IPX, permettendo a una macchina Linux di comportarsi sia come client sia come server PPP. · Tunnelling IPX attraverso IP, che permette la connessione di due reti IPX attraverso un semplice collegamento IP. Inoltre, Caldera offre il supporto commerciale per Novell Netware sotto Linux. Caldera fornisce un client Novell NetWare completo basato su tecnologia sotto licenza di Novell Corporation. Il client fornisce una completa accessibilità ai server di file basati su Novell 3.x e 4.x e include caratteristiche quali il Servizio di Directory NetWare (NDS) e la crittografia RSA. · IPX HOWTO: http://metalab.unc.edu/mdw/HOWTO/IPX-HOWTO.html 3.4. Suite di protocolli AppleTalk Appletalk è il nome dello stack di rete della Apple. Permette un modello di rete paritetico, fornendo funzionalità di base come la condivisione di file e stampanti. Ogni macchina può funzionare simultaneamente sia come un client che come server, e sia il software che l'hardware necessari sono inclusi in qualsiasi computer Apple. Linux fornisce supporto completo per le reti Appletalk. Netatalk è l'implementazione a livello kernel dell'Appletalk Protocol Suite, derivata da sistemi BSD. Include il supporto per l'instradamento Appletalk, la condivisione di filesystem Unix e AFS su AFP (AppleShare), la condivisione di stampanti Unix e l'accesso a stampanti Appletalk tramite PAP. Si veda la sezione 5.1 per maggiori informazioni. 3.5. WAN Networking: X.25, Frame-relay, ecc... Molte terze parti forniscono prodotti T-1, T-3, X.25 e Frame Relay per Linux. In genere è necessario hardware specifico per questi tipi di connessione. I produttori che forniscono l'hardware procurano anche i driver per il supporto del protocollo. · Risorse WAN per Linux: http://www.secretagent.com/networking/wan.html 3.6. ISDN Il kernel Linux ha al suo interno il supporto per ISDN. Isdn4linux controlla le schede ISDN per PC e può emulare un modem con l'insieme dei comandi Hayes (i comandi "AT"). Le possibilità vanno dal semplice uso di un programma di terminale per connessioni via HDLC (usando il dispositivo incluso), alla completa connessione Internet via PPP fino alle applicazioni audio. · FAQ per isdn4linux: http://www.lrz- muenchen.de/~ui161ab/www/isdn/faq_e.html 3.7. PPP, SLIP, PLIP Il kernel Linux ha al suo interno il supporto per PPP (Point-to-Point- Protocol - Protocollo Punto Punto), SLIP (Serial Line IP - IP su Linea Seriale) e PLIP (Parallel Line IP - IP su Linea Parallela). PPP è il metodo più popolare usato dai singoli utenti per accedere al proprio ISP (Internet Service Provider). PLIP permette di effettuare in maniera economica una connessione fra due macchine. Usa la porta parallela ed un cavo speciale, raggiungendo velocità che vanno da 10kBps fino a 20kBps. · Linux PPP HOWTO · PPP/SLIP emulator · Informazioni su PLIP possono essere trovate in The Network Administrator Guide 3.8. Radioamatori Il kernel Linux ha al suo interno il supporto per i protocolli dei radioamatori. Di particolare interesse è il supporto AX.25. Il protocollo AX.25 offre modi di funzionamento sia in maniera connessa (connected) che non connessa (connectionless), ed è usato o per una connessione punto punto oppure per trasportare altri protocolli come TCP/IP e NetRom. La sua struttura è simile a X.25 livello 2, con alcune estensioni per renderlo più utile in ambito radioamatoriale. · Amateur radio HOWTO 3.9. ATM Il supporto ATM per Linux attualmente è in uno stato pre alpha. C'è una release sperimentale che supporta connessioni ATM raw (PVC e SVC), IP su ATM, emulazione di LAN... · Linux ATM-Linux home page 4. Hardware di rete supportato Linux supporta una grande varietà di hardware di rete, compreso molto hardware ormai obsoleto. Alcuni documenti interessanti: · Hardware HOWTO · Ethernet HOWTO 5. Condivisione di file e stampanti La scopo primario di molte reti locali (Local Area Network) basate su PC è di fornire ai propri utenti la condivisione dei servizi di stampa e di accesso ai file. Linux è una grande soluzione ai server aziendali per tali servizi. 5.1. Ambiente Apple Come evidenziato nelle precedenti sezioni, Linux supporta la famiglia di protocolli Appletalk. Il netatalk di Linux permette ai client Macintosh di vedere i Sistemi Linux come altri Macintosh nella rete, condividere file e usare stampanti connesse ai server Linux. FAQ e HOWTO su netatalk: · http://thehamptons.com/anders/netatalk/ · http://www.umich.edu/~rsug/netatalk/ · http://www.umich.edu/~rsug/netatalk/faq.html 5.2. Ambiente Windows Samba è una suite di applicazioni che permette a molti Unix (e in particolare a Linux) di integrarsi in una rete Microsoft sia come client sia come server. Funzionando da server si permette ai client Windows 95, Windows for Workgroups, DOS e Windows NT di accedere ai file e ai servizi di stampa di Linux. Può sostituire completamente Windows NT per i servizi sui file e sulla stampa, incluso il download automatico nei client dei driver di stampa. Funzionando come client permette alla workstation Linux di montare localmente le condivisioni esportate di Windows. Secondo la SAMBA Meta-FAQ: "Molti utenti dicono che rispetto ad altre implementazioni di SMB, Samba è più stabile, veloce e compatibile con più client. Gli amministratori di alcune grosse installazioni dicono che Samba è il solo server SMB che può essere scalato da molte decine a migliaia di utenti senza andare in crash" · Samba project home page · Samba HOWTO · Printing HOWTO 5.3. Ambiente Novell Come evidenziato nei paragrafi precedenti, Linux può essere configurato per funzionare sia come client sia come server NCP, fornendo quindi il servizio di condivisione di file e stampanti in una rete Novell sia per client Unix sia per client Novell. · IPX HOWTO 5.4. Ambiente UNIX La modalità preferenziale per la condivisione dei file in una rete UNIX è tramite NFS. NFS sta per Network File Sharing ed è un protocollo inizialmente sviluppato da Sun Microsystems. È un metodo per condividere file attraverso più macchine come se fossero locali. Un client ``monta'' un file system ``esportato'' da un server NFS. Il filesystem così montato apparirà alla macchina client come fosse parte del filesystem locale. È possibile montare il filesystem di root all'avvio, permettendo quindi il boot e l'accesso a tutti i file di un server a client diskless. In parole povere, è possibile avere macchine completamente funzionananti senza che queste abbiano un disco fisso. Coda è un file system di rete (come NFS) che supporta, tra le altre cose, il funzionamento senza connessione e la cache permanente. È incluso nei kernel 2.2.x. Molto utile per reti lente o poco affidabili e per i portatili. Documenti relativi a NFS: · http://metalab.unc.edu/mdw/HOWTO/mini/NFS-Root.html · http://metalab.unc.edu/mdw/HOWTO/mini/Diskless.html · http://metalab.unc.edu/mdw/HOWTO/mini/NFS-Root-Client.html · http://www.redhat.com/support/docs/rhl/NFS-Tips/NFS-Tips.html · http://metalab.unc.edu/mdw/HOWTO/NFS-HOWTO.html Coda può essere reperito a http://www.coda.cs.cmu.edu 6. Internet/Intranet Linux è una grande piattaforma per il funzionamento come Server Internet/intranet. Il termine intranet fa riferimento all'applicazione delle tecnologie di Internet dentro a un azienda, principalmente con lo scopo di distribuire e rendere disponibili informazioni all'interno della società. I servizi Internet e intranet offerti da Linux comprendono, tra gli altri, server per email, news e WWW e molti altri che saranno spiegati nei paragrafi successivi. 6.1. E-Mail 6.1.1. Server E-Mail Sendmail è di fatto il programma server per la posta elettronica standard per piattaforme UNIX. È robusto, scalabile e, adeguatamente configurato e dotato dell'hardware necessario, può gestire carichi di migliaia di utenti senza fare una piega. Altri server di e-mail (MTA - Mail Transport Agent - Agenti di Trasporto della Posta) sono, per esempio, smail e qmail, entrambi progettati come rimpiazzo per sendmail. · Sito web di Sendmail · Smail faq · Qmail web site Mail HOWTO: · http://metalab.unc.edu/mdw/HOWTO/Mail-HOWTO.html · http://metalab.unc.edu/mdw/HOWTO/mini/Qmail+MH.html · http://metalab.unc.edu/mdw/HOWTO/mini/Sendmail+UUCP.html · http://metalab.unc.edu/mdw/HOWTO/mini/Mail-Queue.html 6.1.2. Accesso remoto alla posta In un'azienda o in un ISP, gli utenti vorranno accedere alla loro posta in maniera remota dalle loro postazioni di lavoro. In Linux esistono diverse alternative, tra cui i server POP (Post Office Protocol) e IMAP (Internet Message Access Protocol). Il protocollo POP solitamente è usato per trasferire messaggi dal server al client. IMAP permette anche la manipolazione dei messaggi nel server, la creazione e cancellazione remota di folder (cartelle di posta) nel server, l'accesso concorrente a folder condivisi, ecc. · Breve confronto tra IMAP e POP (in inglese) HOWTO relativi all'email: · http://metalab.unc.edu/mdw/HOWTO/Mail-HOWTO.html · http://metalab.unc.edu/mdw/HOWTO/mini/Cyrus-IMAP.html 6.1.3. Mail User Agent In Linux esistono diversi MUA (Mail User Agent), sia grafici che testuali. Fra i più usati ci sono: pine, elm, mutt e Netscape. · Elenco del software relativo all'email · http://metalab.unc.edu/mdw/HOWTO/mini/TkRat.html 6.1.4. Software per mailing list Ci sono molti programmi di MLM (Mail List Management - Gestione di Mail List) disponibili per i generici UNIX e in particolare per Linux. · Un buon confronto tra i diversi MLM può essere reperito a: ftp://ftp.uu.net/usenet/news.answers/mail/list-admin/ · Listserv · Majordomo home page 6.1.5. Fetchmail Un utile programma per la posta è fetchmail. Ha molte funzionalità, è robusto, ben documentato e gratuito. È stato pensato per essere usato su collegamenti TCP/IP provvisori (come ad esempio nelle connessioni SLIP o PPP). Supporta ogni protocollo di posta remota in uso attualmente su Internet. Può supportare anche IPv6 e IPSEC. Fetchmail recupera la posta dal server di posta remoto e la inoltra via SMTP, in modo che possa essere letta dai normali agenti di posta quali mutt, elm o BSD Mail. Possiede tutte le capacità di filtraggio, inoltro e aliasing del sistema MTA per lavorare come con la posta normale. Fetchmail può essere usato come gateway da POP/IMAP a SMTP per l'intero dominio DNS, riunendo la posta da una singola mailbox su un ISP e inoltrandola via SMTP basandosi sugli indirizzi degli header. Una piccola azienda potrebbe centralizzare la sua posta in una singola mailbox e programmare fetchmail per riunire tutta la posta uscente, inviarla su Internet e recuperare quella entrante. · Fetchmail home page 6.2. Server Web La maggior parte delle distribuzioni di Linux includono Apache . Apache è il server numero uno in Internet http://www.netcraft.co.uk/survey/ dove più di metà dei siti Internet usano Apache o un suo derivato. Tra i vantaggi di Apache si hanno la sua modularità, stabilità e velocità. Dotato di hardware appropriato e opportunamente configurato può supportare i carichi più elevati: Yahoo, Altavista, GeoCities, Hotmail sono basati su versioni personalizzate di questo server. Il supporto opzionale per SSL (che abilita le transizioni sicure) è disponibile a: · http://www.apache-ssl.org/ · http://raven.covalent.net/ · http://www.c2.net/ HOWTO collegati: · http://metalab.unc.edu/mdw/HOWTO/WWW-HOWTO.html · http://metalab.unc.edu/mdw/HOWTO/Virtual-Services-HOWTO.html · http://metalab.unc.edu/mdw/HOWTO/Intranet-Server-HOWTO.html · Web server per Linux 6.3. Browser Web Per la piattaforma Linux esistono diversi browser web. Netscape Navigator è una delle possibili scelte sin dall'inizio e il sopraggiungente Mozilla (http://www.mozilla.org) avrà una versione Linux. Un altro popolare browser web testuale è lynx. È veloce e maneggevole quando non è disponibile alcun ambiente grafico. · Software browser per Linux · http://metalab.unc.edu/mdw/HOWTO/mini/Public-Web-Browser.html 6.4. Server e client FTP FTP sta per File Transfer Protocol (Protocollo di Trasferimento File). Un server FTP permette ai client di connettersi e di recuperare (scaricare) file. Per Linux esistono molti server e client ftp e sono solitamente inclusi nella maggior parte delle distribuzioni. Esistono sia client testuali che grafici. Il software (server e client) relativo all'FTP per Linux può essere trovato a: http://metalab.unc.edu/pub/Linux/system/network/file-transfer/ 6.5. Servizio news Usenet (noto anche come news) è un grande sistema a bacheca (BBS) organizzato gerarchicamente che ricopre ogni genere di argomento. Una rete di computer su Internet (Usenet) scambia articoli attraverso il protocollo NNTP. Ne esistono molte implementazioni per Linux, sia per siti con un alto carico sia per siti che ricevono solo pochi newsgroup. · INN home page · Software Linux per le news 6.6. Domain Name System Il lavoro di un server DNS è quello di tradurre nomi (leggibili per gli esseri umani) in indirizzi IP. Un server DNS non conosce tutti gli indirizzi IP al mondo; piuttosto è in grado di effettuare richieste ad altri server in caso di indirizzi sconosciuti. Il server DNS allora restituirà all'utente l'indirizzo IP desiderato oppure dirà che il nome non può essere trovato nelle tabelle. Il name serving su Unix (e sulla maggioranza dei sistemi in Internet) è svolto da un programma chiamato named, che fa parte del pacchetto integrato dell'Internet Software Consortium. · BIND · DNS HOWTO 6.7. DHCP, bootp DHCP e bootp sono protocolli che permettono a una macchina client di ottenere informazioni sulla rete (come per esempio il proprio indirizzo IP) da un server. Molte organizzazioni hanno iniziato a usarli in quanto facilitano l'amministrazione specialmente in grandi reti o in reti che hanno un gran numero di utenti mobili. Documenti correlati: · DHCP HOWTO 6.8. NIS Il Network Information Service (NIS, o servizio di informazione di rete) fornisce un semplice servizio di consultazione di rete consistente in database e processi. Il suo scopo è quello di fornire informazioni, che devono essere conosciute da un capo all'altro della rete, a tutte le macchine sulla rete stessa. Esso permette, per esempio, che una persona possa effettuare il login su una qualsiasi macchina sulla quale giri NIS senza bisogno che l'amministratore di sistema debba aggiungere una voce per la password per ogni macchina, ma solo nel database principale. HOWTO correlato: · NIS HOWTO 6.9. Autenticazione Ci sono molti modi di autenticare gli utenti in reti miste · Linux/WindowsNT: http://www.mindware.com.au/ftp/smb-NT- verify.1.1.tar.gz · Il PAM (pluggable authentication module) che è un sistema flessibile di autenticazione UNIX: PAM library . · Infine, LDAP in Linux 7. Esecuzione remota di applicazioni Una delle caratteristiche più affascinanti di Unix (e una delle più sconoscite ai nuovi utenti) è il grande supporto per l'esecuzione remota e distribuita di applicazioni. 7.1. Telnet Telnet è un programma che permette a una persona di usare un computer remoto come se si trovasse veramente su quella macchina. Telnet è uno degli strumenti più potenti di UNIX, che permette una reale amministrazione da remoto. È anche un programma interessante dal punto di vista degli utenti, poiché permette l'accesso remoto a tutti i loro file e programmi da qualsiasi parte di Internet. Combinato con un X server, non c'è nessuna differenza (trascurando il ritardo) tra essere in console o in qualsiasi altra parte del pianeta. I demoni e client telnet sono disponibili con la maggior parte delle distribuzioni di Linux. Sessioni shell remote sono possibili attraverso SSH (http://www.cs.hut.fi/ssh/) che quindi permette l'effettiva amministrazione sicura in remoto. · Software relativo a Telnet 7.2. Comandi remoti In Unix, e in particolar modo in Linux, esistono comandi remoti che permettono l'interazione con altri computer dal prompt della shell. Esempi sono: rlogin, che permette di accedere a una macchina remota in maniera simile al telnet, rcp, che permette trasferimenti remoti di file fra macchine, ecc. Infine, il comando di shell remoto rsh permette l'esecuzione di un comando su una macchina remota senza dover accedere a tale macchina. 7.3. X-Window Il sistema X-Window è stato sviluppato al MIT alla fine degli anni '80 ed è rapidamente diventato il sistema standard di gestione finestre nelle workstation grafiche UNIX. Questo software è liberamente disponibile, molto versatile e adattabile a una gran varietà di piattaforme hardware. Consiste di due parti distinte: il server X e uno o più client X. È importante capire la distinzione fra il server e il client. Il server controlla direttamente il display ed è responsabile di tutto l'input/output della tastiera, del mouse o del display. I client, d'altra parte, non accedono direttamente allo schermo, ma comunicano col server, che gestisce tutti gli I/O. Sono i client che svolgono il lavoro ``reale'' di calcolo, facendo girare applicazioni e quant'altro. I client comunicano col server causando l'apertura, da parte di quest'ultimo, di una o più finestre per gestire l'input-output di ogni client. Brevemente, il sistema X-Window permette a un utente di connettersi a una macchina remota, eseguire un processo (per esempio aprire un browser Web) e avere l'output mostrato sulla propria macchina. Poiché il processo è attualmente eseguito sul server, è necessaria poca potenza di calcolo da parte della CPU del client. È quindi possibile avere computer il cui scopo principale è quello di agire come puri client X-Window; essi sono conosciuti come terminali-X. Esiste per Linux una versione gratuita del sistema X-Window che può essere trovata in: Xfree . Essa è normalmente inclusa nella maggior parte delle distribuzioni Linux. HOWTO correlati: · How-to per applicazioni X remote 7.4. VNC VNC sta per Virtual Network Computing. Esso è, essenzialmente, un sistema di visualizzazione remota che permette di vedere un ambiente di calcolo `a scrivania' (desktop) non solo sulla macchina ove esso sta girando, ma ovunque su Internet e su una gran quantità di architetture differenti. Esistono per Linux, così come per molte altre piattaforme, sia il client che il server. È possibile eseguire MS- Word in una macchina Windows NT o 95 e avere l'output mostrato su di una macchina Linux. È anche possibile l'opposto, cioè eseguire un'applicazione su una macchina Linux e avere l'output mostrato su un'altra macchina Linux o Windows. Esiste un client Java che permette di far girare il display remoto all'interno di un web browser. Infine c'è una versione per Linux che usa le librerie grafiche SVGAlib, permettendo ai 386 con solo 4Mb di RAM di diventare terminali X perfettamente funzionanti. · Sito web di VNC 8. Interconnessioni di rete Le funzionalità di rete di Linux sono ricche di possibilità: una stazione Linux può essere configurata in modo da comportarsi come router, bridge ecc... Alcune delle possibili opzioni sono descritte di seguito. 8.1. Router Il kernel di Linux ha un supporto integrato per le funzioni di instradamento (routing). Una stazione Linux può comportarsi come router sia IP che IPX a una frazione del costo di un router commerciale. I recenti kernel includono speciali funzioni per macchine configurate per agire principalmente come router: · Multicasting: Permette alla macchina Linux di agire come router per pacchetti IP che hanno diversi indirizzi di destinazione. Ciò è necessario in MBONE, una rete a larga banda alla base di Internet che trasporta diffusioni audio e video. · Regole di routing IP: Normalmente un router decide cosa fare di un pacchetto ricevuto basandosi unicamente sull'indirizzo di destinazione finale del pacchetto ma può anche tener conto dell'indirizzo di provenienza e del dispositivo di rete dal quale gli è pervenuto il pacchetto. Ci sono dei progetti che mirano a costruire un router Linux perfettamente funzionante in un floppy disk: Linux router project 8.2. Bridge Il kernel di Linux ha un supporto integrato per agire come un bridge Ethernet, il che significa che i differenti segmenti Ethernet ai quali è connesso appariranno come un'unica Ethernet ai partecipanti. Usando l'algoritmo a misurazione di albero IEEE802.1, molti bridge possono funzionare insieme per formare reti ancora più estese. Allo stesso modo i bridge Linux funzioneranno correttamente con altri bridge prodotti da terze parti. Programmi aggiuntivi permettono il filtraggio basato su indirizzi IP, IPX o MAC. HOWTO correlati: · Bridge+Firewall · Bridge 8.3. Mascheramento-IP Il mascheramento-IP è una funzione di rete ancora in sviluppo. Se un host Linux è connesso a Internet col mascheramento-IP abilitato e altri computer si connettono a esso (sia dalla stessa LAN sia dall'esterno tramite modem), questi possono benissimo connettersi ad Internet a loro volta benché non abbiano indirizzi IP ufficialmente assegnati. Ciò permette una riduzione dei costi (dal momento che molte persone possono accedere a Internet usando una singola connessione modem) e contribuisce a incrementare la sicurezza (in qualche modo la macchina si comporta come un firewall, dal momento che gli indirizzi non ufficiali assegnati non possono essere raggiunti dall'esterno della rete). Pagine e documenti relativi al mascheramento-IP: · http://ipmasq.home.ml.org/ · http://www.indyramp.com/masq/links.pfhtml · http://metalab.unc.edu/mdw/HOWTO/mini/IP-Masquerade.html 8.4. Accounting IP Con questa opzione del kernel di Linux si può tener traccia del traffico di rete IP, registrare i pacchetti e produrre delle statistiche. Possono essere definite una serie di regole in modo che, quando un pacchetto rispecchia un certo modello venga incrementato un contatore oppure tale pacchetto sia accettato, rifiutato ecc... 8.5. Aliasing IP Questa caratteristica del kernel dà la possibilità di assegnare più indirizzi di rete per lo stesso driver di dispositivo di rete a basso livello (ad esempio due indirizzi IP per una stessa scheda Ethernet). È tipicamente usata per quei servizi che si comportano diversamente a seconda dell'indirizzo che vedono (ad esempio ``multihosting'' o ``virtual domains'' o ``virtual hosting services''). HOWTO Collegati: · IP Aliasing HOWTO 8.6. Controllo del traffico Il controllore del traffico è un dispositivo di rete virtuale che rende possibile limitare l'entità del flusso di dati uscente verso un'altro dispositivo di rete. Questo è utile specialmente in quegli scenari (come per ISP), nei quali è desiderabile una politica di controllo circa quanta larghezza di banda è usata da ogni client. Una differente alternativa (valida solo per i servizi Web) potrebbe essere l'utilizzo di certi moduli di Apache che pongono restrizioni sul numero di connessioni IP del client o sulla larghezza di banda usata. · http://metalab.unc.edu/mdw/HOWTO/NET-3-HOWTO.html#ss6.15 8.7. Firewall Un firewall è un dispositivo che protegge una rete privata dalla parte pubblica (l'intera Internet). È disegnato per controllare il flusso dei pacchetti basandosi sulle informazioni di origine, destinazione, porta e tipo contenute in ogni pacchetto. Esistono per Linux diversi programmi per il firewall, oltre al supporto integrato nel kernel, come TIS e SOCKS, che sono molto completi e, combinati con altri strumenti, permettono il blocco e la reindirizzazione di ogni tipo di traffico e protocollo. Possono essere adottate diverse politiche attraveso file di configurazione o programmi a interfaccia grafica. · TIS home page · SOCKS · Firewall HOWTO 8.8. Re-invio su porta (port forwarding) Un numero sempre crescente di siti Web stanno diventando interattivi grazie ai cgi-bin e agli applet Java che accedono a database o ad altri sevizi. Dal momento che tale accesso potrebbe portare a problemi di sicurezza, la macchina che contiene il database non dovrebbe essere connessa direttamente a Internet. Il re-invio su porta può fornire una soluzione quasi ideale a questo problema di accesso: sul firewall, i pacchetti IP che arrivano a uno specifico numero di porta, possono essere riscritti e re-inviati al server interno che fornisce il servizio attuale. I pacchetti di risposta provenienti dal server interno sono riscritti in modo da farli apparire come provenienti dal firewall. Informazioni sul re-invio su porta possono essere trovate qui 8.9. Bilanciamento del carico L'esigenza di avere un bilanciamento del carico sorge di solito per accessi a Web o a database quando molti client emettono richieste contemporanee a un server. Sarebbe auspicabile disporre di un certo numero di server identici e indirizzare le successive richieste a quello di volta in volta meno carico. Ciò può essere ottenuto attraverso la tecnica di Network Address Translation (traduzione di indirizzi di rete) (NAT) della quale il mascheramento IP è un sottoinsieme. Gli amministratori di rete possono sostituire un singolo server che fornisce servizi Web - o qualsiasi altra applicazione - con un insieme di server logici che condividono un indirizzo IP comune. Le connessioni entranti sono dirette verso un server particolare seguendo un algoritmo di bilanciamento del carico. Il server virtuale riscrive i pacchetti entranti e uscenti in modo che i client abbiano un accesso trasparente al server come se ne esistesse uno solo. Informazioni sull'IP-NAT di Linux possono essere trovate qui 8.10. EQL EQL è integrato all'interno del kernel Linux. Se esistono due connessioni seriali verso qualche altro computer (solitamente ciò richiede la disponibilità di due modem e di due linee telefoniche) e su di esse sono usati SLIP e PPP (protocolli per l'invio di traffico Internet su linee telefoniche), usando questo driver è possibile far sì che queste si comportino come un'unica connessione a velocità doppia. Ovviamente, dev'essere supportato a entrambi gli estremi della connessione. · http://metalab.unc.edu/mdw/HOWTO/NET-3-HOWTO-6.html#ss6.2 8.11. Proxy Server Il termine proxy significa ``fare qualcosa per conto di qualcun'altro''. In termini di networking, un server proxy può agire per conto di molti client. Un proxy HTTP è una macchina che riceve le richieste di pagine Web da un'altra macchina (Macchina A). Il proxy ottiene la pagina richiesta e restituisce il risultato alla Macchina A. Il proxy può avere una cache con le pagine richieste, cosicché se un'altra macchina chiede la stessa pagina le viene restituita la copia in cache. Ciò permette l'uso efficiente delle risorse di banda e tempi di risposta minori. Come effetto collaterale, poiché le macchine client non sono direttamente connesse al mondo esterno, questo è un modo per rendere sicura la rete interna. Un proxy ben configurato può essere tanto efficiente quanto un buon firewall. Esistono diversi proxy server per Linux. Una soluzione molto popolare è il modulo proxy di Apache. Una implementazione più completa e robusta di proxy HTTP è SQUID. · Apache · Squid 8.12. Composizione su richiesta Lo scopo della composizione su richiesta è quello di far sembrare, in modo trasparente, che gli utenti abbiano una connessione permanente a un sito remoto. Di solito c'è un demone che controlla il traffico di pacchetti: quando ne riceve uno interessante (l'interesse di un paccheto è definito da una serie di regole, priorità e permessi) stabilisce una connessione col termine remoto. Quando il canale è inoperoso per un certo periodo di tempo, fa cadere la connessione. · Diald HOWTO 8.13. Tunnelling, IP mobile e reti private virtuali Il kernel di Linux permette il tunnelling (incapsulamento) di protocolli. Ad esempio si può incapsulare il protocollo IPX dentro il protocollo IP, permettendo la connessione di due reti IPX attraverso un collegamento solo IP. Si può anche fare tunnelling IP-IP, cosa essenziale per il supporto degli indirizzi IP mobili e della diffusione multipla e per i radioamatori (vedere http://metalab.unc.edu/mdw/HOWTO/NET-3-HOWTO-6.html#ss6.13). L'IP mobile introduce miglioramenti nel protocollo che permettono l'instradamento trasparente di datagrammi IP verso nodi di Internet mobili. Ogni nodo mobile è sempre identificato attraverso il proprio indirizzo di base, indipendentemente dal punto di attacco corrente a Internet; quando si trova lontano da tale base viene associato al nodo anche un indirizzo di `prossimità', che fornisce l'informazione sul punto di attacco a Internet corrente. Il protocollo si occupa di registrare l'indirizzo di prossimità con un home agent. L'home agent invia i datagrammi destinati a un nodo mobile verso l'indirizzo di prossimità attraverso l'uso di un tunnel, alla fine del quale, ogni datagramma è consegnato al nodo mobile. Il Protocollo di Tunneling Punto-Punto (PPTP) è una tecnologia di rete che permette l'uso di Internet come una rete privata virtuale sicura (VPN). Il PPTP è integrato nel Servizio di Accesso Remoto (RAS) che fa parte di Windows NT Server. Col PPTP gli utenti possono connettersi con un ISP locale o direttamente a Internet e accedere alla propria rete come se si trovassero sulla propria scrivania. PPTP è un protocollo chiuso e la sua sicurezza è stata recentemente compromessa. Si raccomanda decisamente di utilizzare alternative differenti basate su Linux, dal momento che queste si basano su standard aperti che sono stati attentamente esaminati e testati. · Una implementazione client del PPTP per Linux è disponibile qui Mobile IP: · http://www-uk.hpl.hp.com/people/jt/mip.html · http://metalab.unc.edu/mdw/HOWTO/NET-3-HOWTO-6.html#ss6.12 Documenti correlati con le reti private virtuali: · http://metalab.unc.edu/mdw/HOWTO/mini/VPN.html · http://sites.inka.de/sites/bigred/devel/cipe.html 9. Gestione della rete (Network Management) 9.1. Applicazioni di gestione della rete Esiste un numero impressionate di strumenti focalizzati nella gestione della rete e l'amministrazione remota. Alcuni progetti interessanti per l'amministrazione remota sono linuxconf e webmin: · Webmin · Linuxconf Altri strumenti comprendono i tool per l'analisi del traffici di rete, della sicurezza della rete, di monitoraggio, di configurazione ecc. Un archivio con molti di questi strumenti può essere trovato a Metalab 9.2. SNMP Il Simple Network Management Protocol è un protocollo per la gestione dei servizi di rete Internet. Permette il monitoraggio e la configurazione remota di router, brigde, schede di rete, switch, ecc. Esistono moltissime librerie, client, demoni e programmi di monitoraggio basati su SNMP per Linux. Una bella pagina che tratta di SNMP e di software per Linux può essere trovata a: http://linas.org/linux/NMS.html 10. Reti aziendali con Linux In certe situazioni, è necessario per l'infrastruttura di rete disporre di meccanismi idonei a garantire la disponibilità del servizio per quasi il 100% del tempo. Alcune delle tecniche per ottenere ciò sono descritte nelle seguenti sezioni. La maggior parte del materiale seguente può essere trovata sull'eccellente sito Web Linas: http://linas.org/linux/index.html e su Linux High-Availability how-to 10.1. Alta disponibilità La ridondanza è usata per prevenire il sistema globale dai singoli punti di guasto. Un server con solo una scheda di rete e un singolo disco SCSI ha due singoli punti di guasto. L'obiettivo è mascherare agli utenti le rotture non previste, in modo che questi possano continuare a lavorare velocemente. Il software per l'alta disponibilità è composto da una serie di script e di strumenti che controllano e scoprono i guasti, muovendo i passi appropriati affinché siano ripristinate le normali operazioni notificando il tutto all'amministratore di sistema. 10.2. RAID RAID, acronimo di Redundant Array of Inexpensive Disks, è un metodo che permette l'immagazzinamento delle informazioni su più dischi, usando tecniche come lo striping dei dischi (RAID Livello 0) e il mirroring di dischi (RAID Livello 1) per ottenere ridondanza, bassa latenza e/o banda più elevata in lettura e/o scrittura, e la possibilità di recupero delle informazioni dopo la rottura di un disco. Sono stati definiti 6 diversi tipi di configurazioni RAID. Ci sono tre tipi di soluzioni RAID a disposizione degli utenti di Linux: RAID software, box DASD esterni e controller di dischi RAID. · RAID Software: il RAID puramente software implementa i diversi livelli RAID nel codice di gestione dei dischi (dispositivi a blocchi) del kernel. · Soluzioni DASD esterne: i DASD (Direct Access Storage Device) sono box separati dotati di alimentazione propria che forniscono un cabinet/chassis per sistemare i dischi fissi e appaiono a Linux come un altro dispositivo SCSI. Sotto molti aspetti, questi offrono la soluzione RAID più robusta. · Controller di Dischi RAID: i controller per i dischi sono schede da inserire nel bus ISA/EISA/PCI. Proprio come i normali controller, sono attaccatti con un cavo ai dischi fissi. Diversamente dai normali controller per i dischi, i controller RAID implementano RAID nella scheda stessa, effettuanado tutte le operazioni necessario per fornire i diversi livelli RAID. HOWTO sull'argomento: · http://metalab.unc.edu/mdw/HOWTO/mini/DPT-Hardware-RAID.html · http://metalab.unc.edu/mdw/HOWTO/Root-RAID-HOWTO.html · http://metalab.unc.edu/mdw/HOWTO/mini/Software-RAID.html RAID a linas.org: · http://linas.org/linux/raid.html 10.3. Networking con ridondanza Sostituzione di indirizzi IP (IPAT). Quando un adattatore di rete si guasta, il suo indirizzo IP dovrebbe essere rilevato da una scheda di rete funzionante, nello stesso o in un altro nodo. Sostituzione di indirizzo MAC: quando avviene una sostituzione di indirizzo IP, bisognerebbe assicurarsi che tutti i nodi della rete aggiornino le proprie cache ARP (che rappresentano la mappatura fra gli indirizzi IP e MAC). Vedere l'HOWTO sull'alta disponibilità per maggiori dettagli: http://metalab.unc.edu/pub/Linux/ALPHA/linux-ha/High-Availability- HOWTO.html 11. Fonti di informazione Se doveste incontrare problemi di rete con Linux, vi prego di non inviarmi domande via posta elettronica. Semplicemente non avrei il tempo per rispondere. È più facile ottenere aiuto attraverso il newsgroup com.os.linux.networking (accessibile attraverso http://www.dejanews.com). Prima di inviare un messaggio assicuratevi di aver letto la documentazione principale. Quindi effettuate una ricerca nell'archivio news, poiché è possibile che qualcuno abbia già posto la stessa domanda in precedenza (e che qualcuno abbia risposto). Quando si inviano un messaggio al gruppo, ricordatevi di indicare tutti i passi seguiti e i messaggi di errore ricevuti. Dove trovare ulteriori informazioni: · Linux: http://www.linux.org · Linux Documentation Project: http://metalab.unc.edu/mdw/linux.html (si veda la Linux Network Administrator Guide) · Freshmeat: le ultime release del software per Linux. http://www.freshmeat.net · Linux link: http://www.linuxlinks.com/Networking/ · Documentazione in italiano su Linux: http://www.pluto.linux.it/ildp/ 12. Cronologia · 0.31 (17 settembre 1999) Modificato l'indirizzo del progetto router (grazie a John Ellis) e aggiunto un altro collegamento PPTP (grazie a Benjamin Smith) · 0.30 (6 aprile 1999) Inserita sezione su CODA (grazie a Brian Ristuccia ) · 0.2-0.29 Correzioni di bug :-) (si vedano i ringraziamenti al termine di questo documento) · 0.1 (5 giugno 1998) 13. Ringraziamenti e liberatoria Questo documento è basato sul lavoro di molte altre persone che hanno reso possibile per Linux diventare quello che è ora: uno dei migliori sistemi operativi di rete. Tutti i meriti sono loro. Per redigere questo documento in maniera semplice ma accurata e per renderlo completo ma non eccessivamente lungo, è stato compiuto un grande sforzo. Tuttavia l'autore non si assume alcuna responsabilità in ogni circostanza. State usando le informazioni qui contenute a vostro rischio. Sentitevi liberi di inviarmi per e-mail suggerimenti, correzioni o commenti su questo documento in modo che io possa migliorarlo. Altri argomenti che probabilmente saranno trattati nelle future revisioni potrebbero essere radius, strumenti per il mirroring web e ftp come wget, analizzatori di traffico, CORBA... e molti altri che potrebbero essere suggeriti e adatti. Potete raggiungemi a daniel@rawbyte.com Per finire vorrei ringraziare Finnbjorn av Teigum, Cesar Kant, Mathieu Arnold e specialmente Hisakuni Nogami e Phil Garcia per la loro attenta revisione e i commenti a questo HOWTO. Ho apprezzato molto il loro aiuto. Potete trovare una versione di questo documento a http://www.rawbyte.com/lno/ . Daniel Lopez Ridruejo 17 Sept 1999