[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico] [volume] [parte]


Capitolo 179.   Ridirezione del traffico IP senza l'ausilio del kernel

Nel momento in cui nella rete si inseriscono dei nodi intermediari, come i firewall, diventa interessante la possibilità di ridirigere il traffico IP. In questo capitolo si vuole mostrare come agire quando tale funzionalità non può essere gestita dal kernel.

L'idea alla base di questo concetto è quella di poter trasferire un servizio presso un nodo diverso da quello che appare nelle richieste dei clienti, soprattutto quando questo nodo nuovo non potrebbe essere raggiungibile direttamente.

Figura 179.1. il nodo «A» ridirige il traffico diretto a lui, nella porta 80 (HTTP), verso il nodo «B», alla stessa porta 80.

                                .------------.
Rete                            |   nodo A   |
------------------------------->|            |
                192.168.1.1:80  |   router   |
                                `------------'
                                       |  ^
                                       |  |
                                       |  |         .------------.
                                       |  `---------|            |
                                       `----------->|   nodo B   |
                                    192.168.7.7:80  |            |
                                                    `------------'

179.1   Conseguenze

La ridirezione del traffico IP non appare in modo manifesto: il cliente che accede al servizio intrattiene una connessione con il router che ridirige il traffico, senza potersi rendere conto di questo fatto; nello stesso modo, il servente viene interpellato dal router, che a lui appare essere il cliente.

Il meccanismo permette la gestione di servizi all'interno di una rete mascherata, che in generale non risulta raggiungibile all'esterno. In tal caso, il firewall utilizzato per gestire il mascheramento, è il router che può ridirigere alcuni servizi all'interno della rete mascherata. La figura 179.2 dovrebbe chiarire il concetto.

Figura 179.2. Il nodo «A» funge da firewall di mascheramento e invece di fornire direttamente il servizio HTTP (80), si avvale di un nodo collocato nella rete locale mascherata.

                                .-------------.
Rete pubblica                   |   nodo A    |
------------------------------->| firewall di |
            123.122.121.120:80  |mascheramento|
                                `-------------'
                                       |  ^
                    Rete locale  - - - |  | - - -
                    mascherata         |  |         .------------.
                                       |  `---------|            |
                                       `----------->|   nodo B   |
                                    192.168.7.7:80  |            |
                                                    `------------'

Naturalmente, questo sistema di ridirezione può essere sfruttato anche da persone in mala fede, per ridirigere il traffico che transita attraverso un router di loro competenza. Gli scopi per questo tipo di comportamento possono essere vari, senza che ci sia bisogno di spiegarlo.

È importante sottolineare che la ridirezione può riguardare tutto il traffico in transito attraverso un router. Con questo si intende che si può ridirigere una certa porta di un certo indirizzo IP, anche se questo indirizzo non appartiene alle interfacce del router.

179.2   Rinetd

Il pacchetto Rinetd (1) permette di ridirigere una destinazione TCP, definita attraverso una coppia indirizzo_ip:numero_di_porta, presso un'altra coppia di questi valori. Lo scopo può essere semplicemente quello di dirigere una porta locale verso un'altra porta locale, oppure si può arrivare a intercettare il traffico IP che attraversa un router in modo da ridirigere alcune coppie di indirizzi e porte presso altre destinazioni.

Tutto è composto semplicemente da un demone, rinetd, che si avvale di un file di configurazione, /etc/rinetd.conf, nel quale si indicano semplicemente le ridirezioni da applicare.

La presenza in funzione del demone rinetd è incompatibile con altri demoni in ascolto delle stesse porte che devono essere ridirette, anche se queste sono intese appartenere a nodi differenti.

Rinetd non è in grado (attualmente) di annotare nel registro del sistema il traffico ridiretto. Questo può costituire un problema, dal momento che sia i nodi che richiedono il servizio, di quelli che lo offrono veramente, non possono avere le informazioni relative alle connessioni intrattenute realmente.

rinetd è il demone che si occupa di ridirigere il traffico TCP in base a quanto contenuto nel file di configurazione /etc/rinetd.conf:

rinetd

È sufficiente avviarlo; se il file di configurazione è corretto, inizia il suo lavoro. All'avvio, dopo aver letto la configurazione, rinetd deve poter stare in ascolto dell'indirizzo da ridirigere e della porta relativa. Qualunque sia l'indirizzo in questione, è necessario che non ci sia già un programma locale che fa la stessa cosa su quella stessa porta; per esempio, non si può tentare di ridirigere il servizio HTTP di un indirizzo qualunque, se questo è presente localmente.

Il sintomo di questo tipo di errore è dato da un messaggio del tipo: Couldn't bind to address indirizzo_da_ridirigere port porta_da_ridirigere.

Il file /etc/rinetd.conf permette di definire la ridirezione del traffico TCP attuata da rinetd. Il file può contenere commenti, introdotti dal simbolo # e conclusi dalla fine della riga; inoltre possono apparire righe vuote o bianche, che vengono ignorate, come i commenti. Le altre righe vengono trattate come direttive, interpretate secondo la sintassi seguente:

ip_destinazione porta_destinazione ip_nuova_destinazione porta_nuova_destinazione

Un esempio dovrebbe essere sufficiente a chiarire l'utilizzo di questo file. Si suppone di voler dirottare il traffico diretto verso l'indirizzo IP 120.121.122.123 alla porta 80, in modo che questo vada verso l'indirizzo IP 192.168.1.7, alla porta 80.


120.121.122.123 80 192.168.1.7 80

Se la cosa può risultare preferibile, sia i numeri di porta che gli indirizzi IP possono essere sostituiti con nomi equivalenti. Nell'esempio seguente si lasciano gli indirizzi IP e si indicano i servizi per nome.


120.121.122.123 html 192.168.1.7 html

L'indirizzo da ridirigere, può appartenere a un'interfaccia del nodo presso cui si trova in funzione il demone rinetd, oppure no, purché i pacchetti diretti a tale indirizzo transitino attraverso il nodo che attua la ridirezione.

Se si vuole apprendere il funzionamento di Rinetd senza disporre di una rete vera e propria, basta una direttiva di configurazione simile a quella seguente:


localhost 9999 localhost html

In questo modo, la porta locale 9 999 viene ridiretta sulla porta del servizio HTTP (80). Se il servizio HTTP è attivo, si può verificare la ridirezione con un programma di navigazione qualunque, puntando all'URI http://localhost:9999.

Appunti di informatica libera 2003.01.01 --- Copyright © 2000-2003 Daniele Giacomini -- daniele @ swlibero.org

1) Rinetd   GNU GPL


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome ridirezione_del_traffico_ip_senza_l_ausilio_del_kernel.html

[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico]