a
La home page di Lorenzo
Home

FidoCAD
    Introduzione
    FidoCAD Win
    FidoCAD FAQ
    FidoCAD sources

Elettronica
    Oscilloscopio
    Misurare la potenza
    CS low-cost
    SMD for dummies
    PIC16x84
    Propic2clone
    IR-displ

Software
    EZ Tunnel
    Varie

Varie
    Segnalare lo spam

Links
Forum
Guestbook
Contattami

Ritirare le truppe italiane dall'IRAQ:

Si

No

Risultati

EZ Tunnel


Volete accedere a un vostro server che si trova dietro a un firewall, ma non avete alcun potere amministrativo per farlo? Forse questo programmino fa al caso vostro!
Quello che segue è un normale schema di connessione client-server senza nessun firewall:

Il server risiede nel PC1 e accetta le connessioni dall'esterno attraverso la porta 80 (ad esempio potrebbe essere un web server). Questa malauguratamente è una situazione abbastanza rara, specialmente se PC1 si trova in una rete aziendale. In quest'ultimo caso probabilmente accadrà ciò che segue:

Il client in PC2 tenta di connettersi a PC1, ma trova un firewall che gli blocca l'accesso verso l'interno della rete in cui risiede PC1.

EZ Tunnel si inserisce come "cuscinetto" in modo che il server si comporti come un client e il client come un server:

La copia di EZ Tunnel che gira sul PC1 è un "doppio client", si collega al programma server (questo è consentito, perché la connessione è locale) e contemporaneamente cerca di collegarsi alla copia di EZ Tunnel che gira sul PC2. Quest'ultimo è invece un "doppio server", accetta le connessioni dall'esterno e contemporaneamente accetta anche quelle dall'interno. Il client deve essere configurato in modo da collegarsi alla copia locale di EZ Tunnel anziché al programma server. In questo modo tutte e quattro le connessioni sono lecite, quindi non resta altro che "attaccarle" assieme per ottenere un canale virtuale dal programma client al programma server. Ovviamente la cosa potrebbe funzionare anche in questo modo:


PC3 è un computer connesso alla stessa rete di PC1, e quindi tipicamente non è soggetto alle limitazioni del firewall. In questa versione del programma comunque ho precluso questa possibilità per evitare degli abusi, e quindi EZ Tunnel dovrà essere eseguito sullo stesso PC in cui risiede il server.
Se abbastanza gente cattivella mi chiede di eliminare questa limitazione, ci posso pensare. ;-)

Configurazione

Supponiamo di essere nella situazione descritta nelle immagini precedenti; PC1 è il server locale, PC2 è il vostro computer "casalingo". Innanzi tutto lanciate EZ Tunnel su PC1 e configuratelo così:



"Tempo di polling" è l'intervallo in secondi che trascorrerà fra una ricerca e l'altra del PC remoto. È bene che non sia troppo breve, per non generare traffico inutile (e aggiungerei sospetto: credo che alcuni amministratori un po' sul paranoico non gradirebbero molto un programma di questo genere).

"Porta listening server" è la porta sulla quale ascolta il server, in questo caso ho messo 80 (supponiamo che si tratti di un web server).

"Indirizzo client" è l'indirizzo completo della vostra macchina casalinga; molti di voi ovviamente non dispongono di un indirizzo IP fisso, né tantomeno di un dominio di secondo livello. Questo non è grave, perché esistono un'infinità di gestori che vi permettono di registrare gratis un dominio dinamico di terzo livello: uno di essi è homeip.net, Con homeip.net potete registrare un dominio del tipo xyz.homeip.net, dove xyz è a vostra scelta; dopodiché a ogni vostra connessione a Internet un client (che potete scaricare gratuitamente) aggiornerà il DNS con il vostro nuovo indirizzo IP.

"Porta client" è la porta sulla quale ascolta la copia remota di EZ Tunnel. È superfluo precisare che nella rete del vostro PC casalingo (inclusa quella del provider, vedi Fastweb) non dovranno esserci firewall! È impossibile collegare direttamente due PC che sono entrambi dietro a un firewall (anche se... leggete dopo!).
Di default la porta client è impostata a 10000, e di solito potete lasciarla così. Certi amministratori di sistema però bloccano anche le connessioni in uscita, permettendo di collegarsi soltanto a certe porte remote, per cui può essere utile poterla impostare a un valore che è certamente non bloccato (come 80, 21 e tutte le altre porte "well known").

A questo punto siete a posto; premete Start e tornate a casa! ;-)



Una volta a casa, collegatevi a Internet, aggiornate il DNS di homeip.net (o chi per lui) e lanciate EZ Tunnel, questa volta in modalità client. Qui la configurazione è molto più semplice, perché basta impostare la porta client (che dovrà essere uguale alla porta client specificata nell'altra copia di EZ Tunnel), e la "porta di listening", che è la porta che accetta le connessioni provenienti dalla vostra rete locale. A questo punto non vi resta che configurare il vostro client in modo che si colleghi a localhost:101...



...et voilà, sarà come se vi collegaste al server remoto! ;-)

C'è un'ulteriore possibilità che potrebbe risultare utile a qualcuno di voi. In precedenza ho detto che non è possibile collegare direttamente due PC che sono entrambi dietro a un firewall, e questo è vero. Però si può benissimo connetterli indirettamente, usando un tramite compiacente! Guardate come:



In questo caso il vostro PC casalingo è PC4, che ad esempio potrebbe essere un PC connesso a Internet attraverso Fastweb (che usa i firewall in ingresso). PC2 è il PC di un vostro amico, al quale non interessa un fico secco di ciò che state facendo, ma si limita a eseguire EZ tunnel in modalità client sul suo PC. In tal caso dal PC4 dovrete digitare dentro a Explorer (o chi per lui):



Dove computer_amico.homeip.net (in luogo di localhost) è il dominio con il quale potete raggiungere il vostro amico. Ovviamente dovrà essere un vostro buon amico, perché va da sè che la quantità di scherzoni che vi può fare è virtualmente illimitata. :-)

Problematiche di sicurezza

L'ultima frase vi ha un po' messo in allerta? Ottimo, perché questo è il sentimento che dovete costantemente mantenere vivo se usate questo programma. Tipicamente se un amministratore installa un firewall ci sono dei motivi più che buoni per farlo; i server dietro al firewall forniscono dati e servizi che non dovrebbero essere accessibili dall'esterno. Pensare che voi "siete bravi" e che quindi non meritate l'ingiusta vessazione imposta "solo perché ci sono anche gli utonti" è molto presuntuoso, tutti prima o poi sbagliano. È per questo che sulle matite mettono le gomme per cancellare.

Moralismi a parte, è importante che conosciate i potenziali rischi ai quali potreste andare incontro, fra i quali:
  • Violazione delle policy in fatto di utilizzo della rete aziendale. Si può andare in grane molto, molto pesanti, e ovviamente io non mi prenderò alcuna responsabilità di alcun genere per quello che farete con questo software;
  • "Spoofing al contrario". EZ Tunnel nella versione server va a cercare costantemente un host remoto a cui collegarsi. Se non fate attenzione, e non mantenete sempre coerente il vostro indirizzo IP nel DNS (in particolare non lo impostate a un indirizzo "innocuo" - come 0.0.0.0 o 127.0.0.1 - quando vi scollegate da Internet), può capitare che il programma contatti qualcun altro anziché voi. Vi sembra improbabile? Ripensateci. Se ad esempio vi collegate a Libero e poi vi scollegate, il vostro IP può venire riassegnato molto rapidamente a un utente che si collega dopo di voi. A quel punto, se l'utente non è uno sprovveduto (ma nemmeno un hacker), è in grado di accorgersi dei tentativi di connessione a intervalli regolari, installare un server che accetti le connessioni e vedere "cosa volete". Se dall'altra parte c'è ad esempio un web server, quanto credete che gli ci vorrà per capirlo? Basta che prema Invio un paio di volte e gli tornerà indietro il classico messaggio 400 Bad request.
  • Attacco al client. Si tratta della possibilità, molto più innocua e improbabile, che qualcuno si connetta all'istanza di EZ Tunnel che gira sul vostro PC casalingo. Innanzi tutto potete installare un personal firewall che riduca al minimo i rischi (è probabile che la rete aziendale abbia un suo IP o range di IP, per cui potete filtrare le connessioni "buone" in base a ciò); poi in ogni caso anche se qualcuno si collega non se ne farà di nulla, dato che deve aspettare che voi gli inviate qualcosa attraverso il client! Al massimo si potrebbe spacciare per il server e darvi informazioni false ma, ripeto, questa è una possibilità poco plausibile.

Varie ed eventuali

  • Utilizzo di EZ Tunnel con i server FTP. Come noto, il protocollo FTP usa due collegamenti, uno per il controllo di flusso e l'altro per il trasferimento dati vero e proprio, che viene attivato all'evenienza (dal server o dal client, a seconda che venga usata o meno la modalità passiva). Per ora EZ Tunnel può funzionare con i server FTP soltanto se alcune pesanti condizioni vengono soddisfatte: la comunicazione deve essere obbligatoriamente di tipo passivo (e fin qui nessun problema); occorre lanciare due coppie di EZ Tunnel, una per la porta 21 e una per la porta usata per il trasferimento (fastidioso, ma nessun problema); occorre configurare il server FTP in modo che utilizzi sempre la stessa porta per il trasferimento passivo (e questa è la nota dolente, a meno che non siate voi che configurate il server FTP è altamente improbabile che accada una cosa del genere).
  • Connessioni concorrenti. Mentre EZ Tunnel ha difficoltà a gestire servizi che utilizzano più porte (come FTP), non ha problemi a gestire servizi che possono usare connessioni multiple sulla stessa porta, come HTTP. È più che frequente che un web browser apra contemporaneamente più di una connessione sulla porta 80 di un server, ad esempio per scaricare più immagini di una stessa pagina. Questo funziona senza problemi con EZ Tunnel.
  • Prestazioni. EZ Tunnel è beta software, il codice di rete deve essere migliorato moltissimo. Per ora non me ne sono curato più di tanto, perché il suo utilizzo classico è attraverso Internet e connessioni relativamente lente, per cui anche se il codice ha un collo di bottiglia attorno ai 5 MB/s non credo che sia un grosso problema per la maggior parte di voi. ;-)

Download

Dopo questo lungo papiro, in merito al quale sono sorpreso della mia pazienza nello scriverlo e della vostra pazienza nel leggerlo, ecco finalmente il link al file da scaricare:

eztunnel.zip (8 kB)