[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]

183. Ridirezione del traffico IP

Nel momento in cui nella rete si inseriscono dei nodi intermediari, come i firewall, diventa interessante la possibilità di ridirigere il traffico IP.

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

				+------------+
Rete				|   Host A   |
------------------------------->|     	     |
		192.168.1.1:80	|   router   |
				+------------+
				       |  ^
				       |  |
				       |  |	    +------------+
				       |  +---------|            |
				       +----------->|   Host B   |
				    192.168.7.7:80  |            |
						    +------------+

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

183.1 Conseguenze

La ridirezione del traffico IP non appare in modo manifesto: il client che accede al servizio intrattiene una connessione con il router che ridirige il traffico, e non si rende conto di questo fatto; nello stesso modo, il server viene interpellato dal router, che a lui appare essere il client.

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 183.2 dovrebbe chiarire il concetto.

				+-------------+
Rete pubblica			|   Host A    |
------------------------------->| firewall di |
	    123.122.121.120:80	|mascheramento|
				+-------------+
				       |  ^
		    Rete locale	 - - - |  | - - -
		    mascherata	       |  |	    +------------+
				       |  +---------|            |
				       +----------->|   Host B   |
				    192.168.7.7:80  |            |
						    +------------+

Figura 183.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.

Naturalmente, questo sistema di ridirezione può essere sfruttato 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, e non c'è 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.

183.2 Rinetd

Il pacchetto Rinetd permette di ridirigere una destinazione TCP, definita attraverso una coppia <indirizzo-ip>:<numero-di-porta>, presso un'altra coppia di questi valori. Lo scopo di questo 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 che stanno 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, si quelli che lo offrono veramente, non possono avere le informazioni relative alle connessioni intrattenute realmente.

183.2.1 # rinetd

rinetd

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

È 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 qualunque indirizzo, 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>.

183.2.2 /etc/rinetd.conf

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 unico 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 9999 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 Linux 1999.09.21 --- Copyright © 1997-1999 Daniele Giacomini --  daniele @ pluto.linux.it


[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]