[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico] [volume] [parte]
IRC è un sistema di comunicazione in tempo reale per discussioni pubbliche, o private, in forma scritta. Di per sé, IRC è l'evoluzione della comunicazione attraverso talk (capitolo 142).
Lo scopo di IRC, ovvero la realizzazione di un sistema di discussione pubblica a livello globale, richiede un'infrastruttura composta dai serventi IRC articolati in modo da formare una «rete» IRC.
Ragionando in piccolo, si può pensare alla realizzazione di un servente IRC singolo, presso il quale si devono connettere tutte le persone che vogliono instaurare una forma di discussione qualunque. La distanza non è necessariamente un problema per chi si connette; tuttavia, diventa un problema la quantità di connessioni che verrebbero a essere aperte in modo simultaneo. Nella realtà, queste connessioni possono essere molto numerose (diverse migliaia), soprattutto a causa della filosofia di IRC per la quale l'organizzazione dei canali di discussione è libera, per cui è indispensabile la presenza di un'infrastruttura che sia in grado di recepire tale massa di utenze.
Si parla di reti IRC, a indicare i gruppi di elaboratori che gestiscono assieme gli stessi canali di comunicazione. Tali reti sono composte secondo una struttura ad albero, dove esiste un solo percorso possibile tra due nodi. Naturalmente, queste reti IRC si inseriscono praticamente sulla rete Internet, sfruttando il protocollo TCP per il transito delle informazioni.
|
L'organizzazione della rete IRC è importante per fare in modo che transitino al suo interno solo le informazioni che sono indispensabili, dal momento che il volume di messaggi gestiti è enorme.
A livello di rete IRC si può individuare una persone con un ruolo speciale: l'operatore IRC. L'operatore IRC è l'amministratore di uno o più serventi IRC, nel senso che può impartire a questi dei comandi speciali, relativi al loro funzionamento.
In una rete IRC, le comunicazioni avvengono all'interno di canali creati dinamicamente; gli utenti della rete IRC sono individuati in base a un nominativo, definito nick. Non esiste una regola nell'uso dei nominativi di identificazione degli utenti e nell'organizzazione dei canali di comunicazione: l'utente che si presenta nella rete IRC chiede di usare un nominativo e lo ottiene se questo non è già utilizzato; l'utente che chiede di accedere a un canale di comunicazione che non esiste, lo crea automaticamente e ne diventa il suo operatore.
È importante comprendere la filosofia di IRC per ciò che riguarda i canali: questi vengono creati automaticamente nel momento in cui vengono richiesti per la prima volta; quindi scompaiono nel momento in cui non ci sono più utenti collegati al loro interno. È importante anche chiarire il senso dell'operatore: si tratta dell'utente che crea inizialmente il canale, ovvero dell'utente che riceve questo privilegio da un altro operatore. L'operatore, noto anche con l'abbreviazione di «oper», oppure solo «op», ha la possibilità di stabilire la modalità di funzionamento del canale e può anche allontanare altri utenti dal canale stesso. Segue l'elenco delle modalità più importanti di un canale che sono controllate dall'operatore:
si può accedere al canale a richiesta, oppure solo a seguito di un invito;
si può specificare una parola d'ordine per l'accesso al canale;
si può specificare il numero massimo di accessi, oltre l'operatore;
si può rendere il canale moderato, per cui in pratica scrive solo l'operatore e gli utenti da lui autorizzati;
si può bloccare la scrittura nel canale;
si possono concedere i privilegi di operatore anche a un altro utente;
si può rendere il canale privato, nel senso che non ne viene pubblicizzata la presenza;
si può rendere il canale segreto, nel senso che non lo si vuole fare apparire nell'elenco dei canali presenti.(1)
Oltre al controllo sul funzionamento del canale, l'operatore può intervenire in modo privilegiato:
può specificare il fatto che si tratti di un canale a tema;
può consentire a un utente di scrivere in un canale moderato;
può allontanare un utente o gruppi di utenti;
può concedere un'eccezione nel caso di un canale che richieda l'invito.
Ogni utente, tra le altre cose, ha la possibilità di configurare il proprio accesso al canale in modo da rendersi parzialmente invisibile.
Una rete IRC può essere spezzata nel momento in cui un nodo che non è terminale cessa di funzionare per qualche ragione, oppure quando viene dato espressamente questo ordine da un operatore IRC. In questa situazione si formano due reti, in cui continuano a funzionare i canali per quanto possibile. Naturalmente, gli utenti che accedono a una di queste due reti risulteranno isolati rispetto all'altra rete.
La divisione della rete provoca quindi una crisi temporanea che alla fine si riassesta in qualche modo più o meno automatico. Il vero problema nasce nel momento in cui le reti vengono riunite: i canali con lo stesso nome vengono fusi assieme, riunendo gli utenti. Questa riunione può creare un po' di scompiglio, considerando che la modalità di funzionamento dei canali viene riadattata in modo da armonizzare le eventuali incompatibilità e che gli operatori vengono a sommarsi.
IRC è un sistema di comunicazione in cui gli utenti sono presenti simultaneamente nel momento in cui scrivono e leggono i messaggi. Nelle discussioni più o meno pubbliche come queste è comune il fatto che chi non sa stare alle regole di una discussione civile decida invece di esprimersi attraverso il dispetto, con la pretesa di dimostrare così la propria intelligenza.
Queste situazioni sono così comuni che ne derivano dei termini standard il cui significato dovrebbe essere conosciuto:
bot è un programma cliente automatico che funziona in modo autonomo (robot), senza un utente che sta comunicando effettivamente;
cloner è un utente che sta utilizzando presumibilmente più programmi clienti, ognuno dei quali è un clone in questo contesto;
flooder è colui che inonda in qualche modo un utente allo scopo di allontanarlo dalla comunicazione.
Il bot, ovvero il programma che usa IRC da solo, è il mezzo attraverso cui si compiono degli attacchi, altrimenti non ci sarebbe bisogno di un programma automatico, dato che IRC è fatta per comunicare tra esseri umani.
Il fatto di utilizzare diversi programmi clienti, mentre ne basterebbe uno solo per comunicare anche su più canali, può rappresentare l'intenzione di fare qualcosa di più della semplice comunicazione.
La realizzazione di un servente IRC isolato è un'operazione relativamente semplice, limitando il problema alla definizione di una politica di accessi al servizio. Qui non viene mostrato in che modo organizzare invece una vera rete IRC, che evidentemente è un problema più impegnativo.
Ircd (2) è il servente IRC tipico dei sistemi Unix. In generale sono essenziali solo due file: l'eseguibile ircd e il file di configurazione ircd.conf
, che in un sistema GNU dovrebbe trovarsi nella directory /etc/ircd/
.
Ircd può essere avviato in modo autonomo, senza l'intervento del supervisore dei servizi di rete, oppure sotto il suo controllo. Nel secondo caso, per quanto riguarda Inetd, si deve provvedere a sistemare il file /etc/inetd.conf
aggiungendo la riga seguente:
ircd stream tcp wait irc /usr/sbin/ircd ircd -i |
Come si può osservare dall'esempio, conviene avviare l'eseguibile ircd usando i privilegi di un utente fittizio definito appositamente per la gestione del servizio IRC; in questo caso si tratta di irc.
Come si può osservare ancora dall'esempio riferito al file /etc/inetd.conf
, si fa riferimento alla porta TCP attraverso la denominazione ircd, che di solito, secondo il file /etc/services
corrisponde al numero 6 667:
ircd 6667/tcp # Internet Relay Chat ircd 6667/udp # Internet Relay Chat |
Si intende che si tratta di una porta non privilegiata, giustificando la scelta di usare un utente fittizio diverso da root per avviare ircd.
Il demone ircd può essere configurato in modo da gestire autonomamente il protocollo IDENT e altri sistemi di controllo. In questo senso, generalmente non viene inserito il controllo del TCP wrapper. |
Nel momento di una nuova connessione al servizio IRC, il servente mostra il messaggio del giorno, che in un sistema GNU/Linux potrebbe essere contenuto nel file /etc/ircd/ircd.motd
(si tratta di un file di testo normale).
In generale è importante predisporre questo file in modo da mostrare le notizie essenziali che si vogliono far conoscere agli utenti IRC, soprattutto per ciò che riguarda le regole di comportamento richieste.
La configurazione può essere molto semplice per la realizzazione di un servente IRC interno, per una rete che non può essere raggiunta dall'esterno, ma ovviamente le cose cambiano nel momento in cui si vuole realizzare una rete IRC. Qui vengono mostrati solo alcuni elementi della configurazione, utili per realizzare un servente singolo, senza problemi di accesso.
Il file di configurazione è un file di testo normale, dove le righe che iniziano con il simbolo # sono commenti e le righe vuote o bianche vengono ignorate. Le direttive hanno una forma un po' strana, dove tutto inizia con una lettera che descrive il tipo di informazione che viene fornita dalla direttiva:
x:informazione_1:informazione_2:...:informazione_n
In generale si dovrebbe disporre di un file di configurazione di partenza commentato adeguatamente, con tutti gli esempi di queste direttive (anche se mostrate solo come commenti). Qui vengono descritte alcune direttive essenziali per la realizzazione di un servente IRC locale e isolato.
Una cosa da considerare nel caso il file contenga direttive che devono essere elaborate secondo un ordine preciso è il fatto che il file viene letto in ordine inverso, ovvero vengono lette prima le ultime direttive. |
M:nome_del_servente:*:descrizione:porta:numero_servente
Questa direttiva serve a definire il nome di dominio del servente, la descrizione del servizio IRC, la porta in cui resta in ascolto il servente e il numero di ordine nella rete IRC. Questo ultimo numero è un intero che va da 1 a 64 e va stabilito in base alla gerarchia di una rete IRC; se si tratta dell'unico servente, deve essere necessariamente indicato il numero uno, come si vede nell'esempio seguente:
M:dinkel.brot.dg:*:Mia IRC:6667:1 |
Nel caso in cui il demone ircd venga utilizzato attraverso il controllo del supervisore dei servizi di rete, potrebbe essere necessario indicare una porta diversa da quella standard, per non interferire proprio con il supervisore stesso, che già apre quella porta. Per esempio:
M:dinkel.brot.dg:*:Mia IRC:8005:1 |
A:riga_1:riga_2:...:riga_n
Si tratta della direttiva con cui si definiscono una serie di informazioni amministrative, che vengono elencate con il comando /admin. In pratica viene mostrato il contenuto dei campi in righe differenti. Si osservi l'esempio seguente che dovrebbe essere sufficientemente intuitivo:
A:Mia IRC:Servente IRC:Amministratore <root@dinkel.brot.dg> |
I:maschera_ip:parola_d'ordine:maschera_dominio::classe
Questa direttiva stabilisce i limiti di accesso al servizio in base a una maschera IP e a una maschera del nome di dominio; queste maschere si riferiscono ovviamente ai nodi che accedono come clienti. Le maschere in questione si realizzano facilmente utilizzando il simbolo * come variabile indefinita. In generale, l'esempio seguente consente qualsiasi accesso:
I:*::*::1 |
Il campo finale, riferito alla classe, deriva dalla definizione delle classi attraverso le direttive Y che qui non vengono descritte, non essendo indispensabili. In ogni caso, il numero uno rappresenta tutte le classi possibili simultaneamente.
K:maschera_nodo:motivazione:maschera_utente
Questa direttiva, che non è obbligatoria, consente di escludere esplicitamente una combinazione di nodi e di utenti che tentano di accedere da questi nodi. Le maschere in questione si realizzano con l'uso del carattere *, che rappresenta la solita stringa indefinita. In particolare, il nodo può essere indicato per nome (di dominio) oppure per numero IP. L'esempio seguente esclude gli utenti il cui nome inizia per dan e accedono dalla rete *.brot.dg
:
K:*.brot.dg:Accesso sospeso per un mese:dan* |
Per concludere la descrizione della configurazione, l'esempio seguente mostra il caso di una configurazione minima, con le sole direttive indispensabili:
M:dinkel.brot.dg:*:Mia IRC:8005:1 A:Mia IRC:Servente IRC:Amministratore <root@dinkel.brot.dg> I:*::*::1 |
ircd [opzioni]...
Il demone ircd può funzionare in due modi diversi: legato al supervisore dei servizi di rete, oppure indipendentemente da questo. Nel primo caso si utilizza l'opzione -i e nel file /etc/inetd.conf
non si inserisce il controllo di tcpd, perché si creerebbero dei problemi a causa dell'uso del protocollo IDENT:
ircd stream tcp wait irc /usr/sbin/ircd ircd -i |
Diversamente, il demone può essere avviato come un comando normale, senza nemmeno dover aggiungere la richiesta esplicita di funzionamento sullo sfondo. In effetti, dal momento che si utilizza normalmente una porta TCP non privilegiata, ogni utente comune può, teoricamente, avviare questo tipo di servizio.
Segue l'elenco di alcune opzioni della riga di comando di ircd.
Il compito di un programma cliente IRC è quello di consentire la comunicazione effettiva tra l'utente umano e il servente IRC. La prima cosa che avviene è la registrazione, attraverso la quale l'utente ottiene l'accesso al servizio assieme alla definizione del proprio nominativo.
Una volta instaurata la connessione, l'utente ha la possibilità di unirsi a uno o più canali di discussione, creandoli automaticamente se questi non sono già presenti.
ircII (3) è il programma cliente standard per comunicare con IRC. Si utilizza attraverso un terminale a caratteri normale, dove lo schermo è diviso in due parti: quella superiore per mostrare i messaggi che scorrono verso l'alto; quella inferiore che è semplicemente la riga da cui si impartiscono i comandi. Il programma eseguibile è irc e si avvia in maniera molto semplice, come nell'esempio seguente, dove viene specificato il nominativo desiderato e l'indirizzo del servente IRC:
$
irc tizio dinkel.brot.dg
[Invio]
|
In questo caso, il messaggio del giorno è soltanto «Benvenuto presso irc.brot.dg», che si vede in basso; il resto è stato generato automaticamente dal servente. La riga contenente la stringa
[1] 20:45 tizio * type /help for help
è la linea di demarcazione tra la parte superiore contenente i messaggi e la parte inferiore riservata ai comandi dell'utente. Come si può vedere, viene suggerito l'uso del comando /help per richiamare l'elenco dei comandi disponibili.
Se si impartisce il comando /help, come suggerito, si passa a un contesto differente, in cui si possono ottenere informazioni dettagliate su questo o quel comando:
/help
[Invio]
|
Si può osservare dalla figura che nella riga di comando appare un invito, che prima non era presente: Help?, a significare che si può indicare il nome di un comando di quelli elencati per conoscerne la sintassi. Per esempio:
Help?
help
[Invio]
|
Come si vede, se non c'è abbastanza spazio per visualizzare tutto il testo disponibile, basta digitare un carattere qualunque per vedere la pagina successiva, oppure basta inserire la lettera q per terminare.
Alla fine della navigazione nella guida interna, basta premere il tasto [Invio] senza specificare il nome di alcun comando per ritornare alla modalità di funzionamento normale, dove non appare alcun invito.
Help?
[Invio]
I comandi impartiti a ircII sono preceduti dal simbolo /, per distinguerli dal testo dei messaggi che invece vanno inviati al canale di discussione. |
Generalmente, quando ci si trova di fronte all'invito normale, è possibile richiamare i comandi precedenti scorrendo con i tasti [freccia su] e [freccia giù].
Si conclude il funzionamento di ircII con il comando /quit.
Tkirc (4) è un programma frontale per ircII. Il programma eseguibile è tkirc e si avvia in maniera molto semplice, come nell'esempio seguente, dove viene specificato il nominativo desiderato e l'indirizzo del servente IRC:
$
tkirc tizio dinkel.brot.dg
Utilizzando il menù a tendina, è possibile ottenere un'altra finestra con la quale comunicare in un altro canale. Si utilizza precisamente la voce {New window
} dal menù {Project
}.
Nella colonna destra, vengono elencati gli utenti che partecipano al canale con cui si sta comunicando. Con un clic doppio del mouse si ottengono le informazioni su di loro, come si vede nella figura 146.3.
Generalmente, prima di entrare in un canale si può avere l'interesse di visualizzare l'elenco di quelli disponibili. Questo si ottiene con il comando /list. Per esempio, con ircII:
/list
[Invio]
|
Come si vede, il nome di un canale inizia con il carattere # per convenzione. In alternativa, il nome di un canale può iniziare anche per &, ma in tal caso si tratta di un canale che riguarda esclusivamente il servente al quale si è connessi, per cui non si diffonde agli altri serventi della stessa rete IRC.
Nello stesso modo, può essere utile visualizzare l'elenco degli utenti collegati. Questo si ottiene con il comando /names, che va usato comunque con parsimonia, considerando che una rete IRC «normale» è sempre molto affollata.
/names
[Invio]
|
Nell'elenco degli utenti, gli operatori di canale sono evidenziati dal prefisso @. Eventualmente, se si vede il simbolo * come prefisso, si tratta di un operatore IRC.
Il programma cliente che si utilizza potrebbe attribuire automaticamente il nominativo per accedere alla rete IRC, sfruttando presumibilmente il nominativo utente usato per accedere al proprio elaboratore. Se il nome in questione non è compatibile, eventualmente perché già utilizzato, è il programma cliente stesso che richiede di indicare un altro nominativo. In ogni caso, è possibile cambiare il proprio nome attraverso il comando /nick:
/nick pinco
[Invio]
L'esempio mostra il caso in cui l'utente desideri usare il nome pinco, ammesso che questo non sia già utilizzato nella rete IRC in cui si è connessi.
Il nominativo usato all'interno di una rete IRC non può essere più lungo di nove caratteri. |
Ci si aggrega a un canale con il comando /join. Se il canale indicato non esiste ancora, viene creato per l'occasione e l'utente che lo crea ne diventa l'operatore.
/join #prova
[Invio]
L'esempio mostra il caso in cui ci si voglia aggregare al canale #prova. È importante ricordare che è necessario il prefisso davanti al nome, come si vede dall'esempio.
Quando ci si trova in un canale, ciò che si digita senza il prefisso /, viene trasmesso al canale stesso:
Ciao a tutti!
[Invio]
Come ci si unisce a un canale, ci si può allontanare. Questo si ottiene con il comando /leave:
/leave #prova
[Invio]
Segue il riepilogo di alcuni comandi essenziali per l'uso di un cliente IRC.
Internet Relay Chat (IRC) help
David Caraballo, Joseph Lo, The IRC prelude
daniele @ swlibero.org
1) In generale un canale può essere privato, segreto oppure pubblico.
2) Ircd GNU GPL con residui UCB BSD
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome irc.html
[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico]