[IP Tunneling]

13 risposte [Ultimo messaggio]
Ritratto di erpupone10
erpupone10
(Geek)
Offline
Geek
Iscritto: 23/11/2007
Messaggi: 63

Ciao a tutti,
devo realizzare un'applicazione client - server che realizzi la struttura dell'IP Tunneling.
Questo si traduce nell'incapsulamento di un pacchetto IP in un altro nel router della rete sorgente (client) e nel decapsulamento al router della rete di destinazione (server). Poi si tratterà di realizzare una terza applicazione (il vero destinatario prima dell'incapsulamento) che riceve il pacchetto decapsulato e ne visualizza il contenuto.
Vorrei realizzare quest'applicazione in C su macchina UNIX, qualcuno mi saprebbe dare qualche consiglio su come implementare ? Oppure linkare qualche riga di codice da cui prendere spunto?

Grazie

Ciao

Giovanni

--

Giovanni

Ritratto di hmandevteam
hmandevteam
(Monster)
Offline
Monster
Iscritto: 29/12/2006
Messaggi: 255

Potresti scriverti una sorta di proxy esterno alle due reti che smista il pacchetto embedded verso la vera destinazione.

Io sto facendo una cosa simile per usare l'ssh dall'interno dell'azienda in cui lavoro verso server esterni, devo oltrepassare un firewall.

ho visto degli esempi step by step du codeproject:
http://www.codeproject.com/KB/aspnet/asproxy.aspx

Mandriva 2010.1 x86_64 - Athlon 64 X2 Dual Core 5200 - Ram 4 GB - Mb Asus M2N - Sk Video NVidia 7300 GT - Wireless RaLink RT2561
Projects:
- http://www.integrazioneweb.com/themonospot
- http://www.integrazioneweb.com/monosim
- http://www.integrazionew

Ritratto di filotux
filotux
(Monster)
Offline
Monster
Iscritto: 07/12/2006
Messaggi: 245

Quote:

hmandevteam ha scritto:
Io sto facendo una cosa simile per usare l'ssh dall'interno dell'azienda in cui lavoro verso server esterni, devo oltrepassare un firewall.

Per far passare il protocollo SSH attraverso un proxy puoi usare Proxytunnel. Io l'ho provato su un proxy HTTPS aziendale e funziona bene. Su HTTP potresti incontrare dei problemi se il firewall aziendale blocca le connessioni verso specifici host o verso specifiche porte.

filotux

Debian Lenny on BeagleBoard

Ritratto di hmandevteam
hmandevteam
(Monster)
Offline
Monster
Iscritto: 29/12/2006
Messaggi: 255

purtroppo ho provato proxytunnel ma il firewall mi ha bloccato. Ne ho provati diversi ma tutti utilizzano il metodo CONNECT che viene intercettato dal firewall.

allora ho pensato...
http://docs.google.com/Doc?id=df9ddzfx_0dk5m8zg2

Mandriva 2010.1 x86_64 - Athlon 64 X2 Dual Core 5200 - Ram 4 GB - Mb Asus M2N - Sk Video NVidia 7300 GT - Wireless RaLink RT2561
Projects:
- http://www.integrazioneweb.com/themonospot
- http://www.integrazioneweb.com/monosim
- http://www.integrazionew

Ritratto di filotux
filotux
(Monster)
Offline
Monster
Iscritto: 07/12/2006
Messaggi: 245

Il problema potrebbe essere dovuto al fatto che vengono bloccate tutte le porte ad eccezione di quelle del web (80 e 443). A me ha funzionato poiche' il proxy aziendale permetteva esplicitamente connessioni sulla porta 22 (SSH).

Se puoi intervenire sui server SSH esterni, puoi provare a far girare unl server SSH sulla porta 443 al posto della 22 e riprovare il tunnel sul proxy HTTPS (oppure sulla porta 80 se usi il proxy HTTP ma a me non ha funzionato poiche' la porta 22 era aperta solo su HTTPS). Devi ovviamente configurare il file ~/.ssh/config.

filotux

Debian Lenny on BeagleBoard

Ritratto di fabio
fabio
(Geek)
Offline
Geek
Iscritto: 13/10/2004
Messaggi: 81

@erpupone
Ciao, forse non ho letto bene quello che devi fare. Se devi scrivere da te tutto il codice dell'applicazione, il consiglio che ti ho dato non c'entra nulla.
Ciao
fabio

Ritratto di Moreno
Moreno
(Guru)
Offline
Guru
Iscritto: 24/09/2004
Messaggi: 16862

Ciao

Da quello che dici sembra che tu voglia implementare una VPN a quel punto bastano OpenVPN o IPSec

Se invece ti basta una connessione cifrata puoi usare le porte SSL con la libreria openssl.

Ciao Ciao, Moreno

Addio, e grazie per tutto il pesce.
Avatar by moonlight-dream.

Ritratto di erpupone10
erpupone10
(Geek)
Offline
Geek
Iscritto: 23/11/2007
Messaggi: 63

Si diciamo che è una cosa un po' particolare, nel senso che sì in pratica realizzo una VPN, però essendo studente universitario questo è un piccolo progetto che devo presentare, perciò lo realizzo io da zero e volevo vedere di trovare un po' di spunto da qualche parte..
L'idea del proxy può fare la caso mio, il mio obiettivo è quello di nascondere il vero destinatario della comunicazione durante la trasmissione sulla Internet, una volta giunto alla rete di destinazione decapsulare il pacchetto e consegnare al destinatario.
Non so se mi sono spiegato bene..mi basta realizzare un piccolo server e un client in C. Il client preso un pacchetto in ingresso (con specificata la vera destinaizone) lo incapsula lo trasmette al server che lo decapsula, vede a chi era diretto e lo trasmette, poi una terza applicazione ne visualizza il contenuto. Non so se secondo voi la cosa abbia molto senso, torno a ripetere che è un progetto puramente didattico, mi serve solo per prendere confidenza con il concetto di ip tunneling. (So che per molti non ha molto senso!!)
Io pensavo di usare le RAW Socket e siccome sto imparando e non sono molto esperto e cercavo qualche suggerimento su come utilizzarle.

Ciao e grazie a tutti

Giovanni

--

Giovanni

Ritratto di hmandevteam
hmandevteam
(Monster)
Offline
Monster
Iscritto: 29/12/2006
Messaggi: 255

se non ti viene imposto di utilizzare C, puoi scrivere sia l'oggetto lato server che il client in C# o Java. Ci sono molti esempi di cose simili e il codice a basso livello è gestito dal framework, così ti puoi concentrare sulla funzionalità che devi implementare.

E' molto usata la soluzione del proxy http perchè quasi in tutte le reti protette, almeno la porta 80 in uscita verso l'esterno è aperta, e se utilizzi HTTP come protocollo di trasporto nessun firewall bloccherà il tuo pacchetto Smile

Mandriva 2010.1 x86_64 - Athlon 64 X2 Dual Core 5200 - Ram 4 GB - Mb Asus M2N - Sk Video NVidia 7300 GT - Wireless RaLink RT2561
Projects:
- http://www.integrazioneweb.com/themonospot
- http://www.integrazioneweb.com/monosim
- http://www.integrazionew

Ritratto di erpupone10
erpupone10
(Geek)
Offline
Geek
Iscritto: 23/11/2007
Messaggi: 63

Si sicuramente hai ragione il proxy è la soluzione migliore per il tipo di applicazione che devo realizzare che comunque essendo un progetto per un esame nasce e muore con esso. Sicuramente utilizzando Java mi troverei più a mio agio visto che lo conosco meglio (anche se più rivolto all'ambito JSP e quindi alla programmazione Web), il problema è che devo lavorare in team con altri studenti che con la programmazione fanno un po' fatica e conoscono il C, perciò visto che comunque mi è utile riprenderlo un po' in mano penso che utilizzerò quest ultimo linguaggio.
Grazie comunque dei consigli, se hai altri suggerimenti sono sempre graditi

Ciao

Giovanni

PS. Un altra richiesta, come posso attraverso righe di codice C acquisire i permessi di root?? Come chiamo il comando "su"? Mi è necessario per usare le RAW Socket.

--

Giovanni

Ritratto di fabio
fabio
(Geek)
Offline
Geek
Iscritto: 13/10/2004
Messaggi: 81

Ciao,
non ho molte esperienze in questo campo, ma in questi giorni mi sono divertito un po' (si fa per dire) con STUNNEL, la cui definizione classica e' quella di wrapper SSL per la cifratura dei dati.
Ti dico la verita', non ho ancora capito bene il suo modo di funzionare, ma funziona nonostante la mia ignoranza (almeno cosi' mi sembra: ho realizzato un collegamento remoto "sicuro" tra un client e un server postgresql). Comunque, serve per cifrare connessioni client - server utilizzando la struttura SSL sottostante. Posso dirti che e' di facile installazione, ed e' abbastanza leggero.
C'e' parecchia documentazione su internet, anche se, in generale, poco approfondita.
Se lo trovi usabile, potremmo continuare a discuterne anche dopo.
Ciao
fabio