|
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)
| |