marco.r
13-12-2007, 01:06
Devo simulare il collegamento di rete tra due programmi che comunicano tramite TCP/IP, nel senso che devo prendere i dati che produce l'uno, gestirne in qualche modo la spedizione e quindi darlo in pasto all'altro. Il modo piu' semplice che mi era venuto in mente era quello di far partire ognuno dei due programmi su di una interfaccia tun, e quindi con un programma maneggiare direttamente i pacchetti tcp, copiandoli in qualche modo da una interfaccia all'altra. Ovviamente se i due processi, e quindi le due tun, stanno sulla stessa macchina, si vedono gia' e quindi quando uno cerca di comunicare con l'altro lo fanno direttamente. C'e' un modo per far si' che passino per il tunnel ?
Cerco di chiarire con un esempio.
Ho un programma X che mi crea tun0 e tun1, e poi semplicemente copia i pacchetti dall'uno all'altro.
Una volta lanciato, configuro le due interfacce con degli indirizzi di rete
ifconfig tun0 192.168.1.1/24
ifconfig tun1 192.168.1.2/24
Faccio poi partire due programmi, server e client, vincolando server a girare solo sul primo dei due indirizzi. Vorrei a questo punto far si che client possa collegarsi a server, ma passando per l'interfaccia tun1, in modo che i pacchetti passino per il mio programma. Ovviamente in condizioni normali non e' cosi', e il mio dubbio e': e' fattibile ? Non mi sembra ce la si possa cavare con dei giochi sulla tabella di routing, e l'unica alternativa che mi viene e' quella di usare qualche software di virtualizzazione in modo da separare i due processi in modo piu' netto, ma vorrei se possibile evitare questa soluzione. Qualche idea (o anche notizie di software analogo gia' esistente) ?
Marco
Cerco di chiarire con un esempio.
Ho un programma X che mi crea tun0 e tun1, e poi semplicemente copia i pacchetti dall'uno all'altro.
Una volta lanciato, configuro le due interfacce con degli indirizzi di rete
ifconfig tun0 192.168.1.1/24
ifconfig tun1 192.168.1.2/24
Faccio poi partire due programmi, server e client, vincolando server a girare solo sul primo dei due indirizzi. Vorrei a questo punto far si che client possa collegarsi a server, ma passando per l'interfaccia tun1, in modo che i pacchetti passino per il mio programma. Ovviamente in condizioni normali non e' cosi', e il mio dubbio e': e' fattibile ? Non mi sembra ce la si possa cavare con dei giochi sulla tabella di routing, e l'unica alternativa che mi viene e' quella di usare qualche software di virtualizzazione in modo da separare i due processi in modo piu' netto, ma vorrei se possibile evitare questa soluzione. Qualche idea (o anche notizie di software analogo gia' esistente) ?
Marco