[bglug] IP curioso!

Diego Tironi bglug@lists.linux.it
Fri, 13 Sep 2002 00:39:20 +0200


Riccardo Mottola wrote:
> non ti so dire molto.
> In ogni caso IRC e' curioso come protocollo e mi ero interessato
> della cosa quando attraverso il mio router (sono NAT-tato) funziona
> tutto, dal webserver all'ftp... ma il DCC in IRC proprio no. La
> scoperta e' che aprendo una DCC in IRC e' IRC stesso che invia il
> proprio IP nel pacchetto come dato (non come intestazione del

si chiama CTCP, che a discapito del nome (Client-To-Client-Protocol) serve per comunicare fra due client in maniera indiretta
(passando per il server IRC)incapsulando i messaggi nel protocollo IRC.

> pacchetto). Quindi affinche' il NAT funzioni il router deve essere a
> conoscenza che si tratti di "IRC" e cambiare materialemente il
> contenuto, non l'intestazione. Credo (ma non ho mai controllato) che
> le intestazioni risultino normalissimamente nat-tate, ma il dcc non
> fuziona. Cosi' mi e' perlomeno stato spiegato.

brevemente:
- pippo vuole comunicare con paperino tramite protocollo DCC.
- pippo invia un CTCP a paperino indicante l'indirizzo IP della propria macchina e una porta TCP che mette in stato di LISTEN.
- paperino accetta la DCC request
- paperino apre una connessione TCP verso PIPPO sull'IP e sulla porta precedentemente comunicatagli

A questo punto se c'e' di mezzo un router che fa NAT, come e' facilmente intuibile, il meccanismo si spezza. Pippo (che ha una
macchina con indirizzo IP di classe riservata, cioe' e' dietro ad un NAT) inserisce nel CTCP l'indirizzo IP di classe privata,
supponiamo 192.168.0.1, al quale paperino non riuscira' mai a collegarsi. Per rimediare a questo fastidio e' necessario dotarsi di
un router che esegua il tracciamento delle connessioni (sia cioe' in grado di fare della stateful inspection) e che
- modifichi il segmento TCP contenente il CTCP di pippo con l'indirizzo di rete locale in modo da inserirvi l'indirizzo IP pubblico
assegnato alla propria connessione Internet
- esegua un redirect dei datagrammi IP contenenti le risposte di paperino, indirizzate all'IP pubblico, verso l'indirizzo IP di
classe privata della macchina di pippo.

--
Diego Tironi - diego@tironi.net
PGP DH/DSS Key ID: 0x23570D06
Fingerprint: 17CB 8495 2471 9AD9 C052  A8E7 3602 1BC7 2357 0D06
Veritas vos liberabit