Hamachi: una semplice VPN distribuita

Hamachi

Un mio collega che utilizza Fastweb mi ha fatto notare che le normali VPN PPTP non funzionano attraverso la rete Fastweb, non conosco la ragione o un modo di aggirare questo limite di Fastweb ma Hamachi, una VPN distribuita e senza configurazione (zero configuration), è in grado di superare questi problemi.

Si presenta molto utile per la semplicità di utilizzo e per il suo funzionamento su Windows, Linux e OSX. Con praticità potremo disporre di tutte le macchine collegate, usare le risorse condivise con Samba o connetterci tramite VNC o altre metodologie e persino con videogiochi.

L’installazione non è così semplice come potrebbe sembrare e richiede un po’ di attenzione su Ubuntu. Iniziamo scaricando il pacchetto per Linux da https://secure.logmein.com/products/hamachi/list.asp (lasciamo stare il frontend grafico, ha tantissimi problemi, ci ritorneremo più avanti) ad oggi chiamato hamachi-0.9.9.9-20-lnx.tar.gz, apriamo un terminale e scriviamo:

tar xvzf hamachi-0.9.9.9-20-lnx.tar.gz

Verrà decompresso il file tar.gz riportando:

hamachi-0.9.9.9-20-lnx/
hamachi-0.9.9.9-20-lnx/Makefile
hamachi-0.9.9.9-20-lnx/LICENSE
hamachi-0.9.9.9-20-lnx/README
hamachi-0.9.9.9-20-lnx/LICENSE.tuncfg
hamachi-0.9.9.9-20-lnx/LICENSE.openssh
hamachi-0.9.9.9-20-lnx/LICENSE.openssl
hamachi-0.9.9.9-20-lnx/hamachi
hamachi-0.9.9.9-20-lnx/tuncfg/
hamachi-0.9.9.9-20-lnx/tuncfg/Makefile
hamachi-0.9.9.9-20-lnx/tuncfg/tuncfg.c
hamachi-0.9.9.9-20-lnx/tuncfg/tuncfg
hamachi-0.9.9.9-20-lnx/CHANGES

Troveremo quindi una directory di nome hamachi-0.9.9.9-20-lnx contenente il programma di installazione e alcuni altri files. Spostiamoci in quella directory e installiamo Hamachi:

cd hamachi-0.9.9.9-20-lnx
sudo make install

La fase di installazione riporterà il messaggio di conferma:

Copying hamachi into /usr/bin ..
Creating hamachi-init symlink ..
Compiling tuncfg ..
Copying tuncfg into /sbin ..

Hamachi is installed. See README for what to do next.

Evitiamo per il momento le istruzioni del file README poiché su Ubuntu Gutsy si verifica uno strano bug che crea dei problemi alla decompressione del programma di Hamachi. L’eseguibile hamachi infatti risulta compresso con UPX. Installiamo upx-ucl con:

sudo apt-get install upx-ucl

Una volta installato decomprimiamo il programma hamachi come segue:

sudo upx-ucl -d /usr/bin/hamachi

Verremo quindi informati dell’avvenuta decompressione:

                    Ultimate Packer for eXecutables

Copyright (C) 1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007
UPX 3.00    Markus Oberhumer, Laszlo Molnar & John Reiser   Apr 27th 2007

        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
    830676 <-    331144   39.86%    linux/386    hamachi

Unpacked 1 file.

Nulla di veramente importante da notare qui, soltanto l’ultima riga: Unpacked 1 file. Adesso siamo pronti ad utilizzare veramente Hamachi come indicato sulla guida ufficiale, digitiamo quindi:

hamachi-init

Creerà i files di configurazione e la chiave crittografica che verrà utilizzata per la comunicazione delle informazioni protette:

Initializing Hamachi configuration (/home/paperotto/.hamachi). Please wait ..

  generating 2048-bit RSA keypair .. ok
  making /home/utente/.hamachi directory .. ok
  saving /home/utente/.hamachi/client.pub .. ok
  saving /home/utente/.hamachi/client.pri .. ok
  saving /home/utente/.hamachi/state .. ok

Authentication information has been created. Hamachi can now be started with
'hamachi start' command and then brought online with 'hamachi login'.

Generalmente la creazione della configurazione e della chiave crittografica è necessaria soltanto la prima volta. Per l’utilizzo quotidiano sarà necessario avviare il servizio tun con:

sudo tuncfg

E da adesso in poi sarà possibile utilizzare i comandi di hamachi descritti qui di seguito:

  • hamachi start
    Avvia il servizio di hamachi, necessario prima di poter eseguire qualsiasi altra operazione nella rete. Sarà confermato l’avvio col messaggio:

    Starting Hamachi hamachi-lnx-0.9.9.9-20 .. ok

    E’ inoltre possibile avviare hamachi mediante il comando hamachi start debug per osservare le attività eseguite, le porte e gli indirizzi utilizzati e per diagnosticare problemi di funzionamento o di connessione.

  • hamachi
    Riporta lo stato corrente nella rete hamachi:

    Hamachi, a zero-config virtual private networking utility, ver 0.9.9.9-20
    
      version  : hamachi-lnx-0.9.9.9-20
      pid      : 8366
      status   : offline
      nickname : anonymous
  • hamachi set-nick “Nuovo Nick”
    Cambia il nick utilizzato, che gli altri utenti collegati leggeranno accanto al nostro indirizzo hamachi. Fino a che non verrà cambiato il nick saremo identificati col nick anonymous.
  • hamachi login
    Effettua il collegamento alla rete hamachi, ci sarà confermata la connessione con:

    Logging in ....>....... ok
  • hamachi create “Nome della rete” “Password di accesso”
    Crea una nuova rete con la password di accesso indicata. Per creare una rete pubblica senza password basterà ometterla come pure le virgolette.
  • hamachi join “Nome della rete” “Password di accesso”
    Aderisce ad una rete esistente di cui naturalmente conosciamo la password per l’accesso. Nelle reti a cui siamo collegati non siamo proprietari ma utenti, non avremo quindi privilegi. Se la rete non prevede alcuna password di ingresso non sarà necessario immetterla, omettendo anche le virgolette.
  • hamachi leave “Nome della rete”
    Abbandonerà la rete indicata, disconnettendoci del tutto. Non sarà possibile accedere a nessuno dei computer collegati. Possibile solo ai membri della rete ma non al proprietario.
  • hamachi delete “Nome della rete”
    Elimina permanentemente l’intera rete, disconnettendo tutti i client collegati. Possibile solamente al proprietario della rete.
  • hamachi evict “Nome della rete” 5.x.x.x
    Disconnette ed elimina dalla rete un membro, identificato dal suo indirizzo IP. Possibile unicamente al proprietario della rete.
  • hamachi go-online “Nome della rete”
    Accede alla rete indicata di cui dobbiamo già essere proprietari (con create) oppure membri (con join). Questo ci connetterà effettivamente alla rete e potremo comunicare con le altre macchine della rete.
  • hamachi go-offline “Nome della rete”
    Disconnetterà dalla rete indicata, senza abbandonarla definitivamente. Risulteremo quindi irraggiungibili dagli altri utenti della rete ma continueranno a vederci come parte della rete.
  • hamachi get-nicks
    Recupera i nick degli utenti collegati alla rete per mostrarli in seguito col comando list.
  • hamachi list
    Elenca le reti di cui facciamo parte e tutti gli utenti iscritti alla rete. Se è stato eseguito in precedenza hamachi get-nicks saranno riportati anche i nick degli utenti collegati. Il risultato sarà simile al seguente:

     * [Nuova Paperopoli]
         * 5.153.193.218    paperone
           5.144.241.101    topolino

    In questo schema gli asterischi indicano lo stato online, sia per la rete sia per gli utenti collegati. Più precisamente risultiamo collegati alla rete Nuova Paperopoli, composta da altri 2 utenti oltre il proprietario che l’ha fondata (noi stessi) ma solo l’utente paperone risulta attualmente online.

  • hamachi logout
    Disconnette completamente dalla rete hamachi e da tutte le reti di cui facciamo parte. Fino a che non ci ricollegheremo non sarà possibile eseguire comandi con la rete.
  • hamachi stop
    Chiude il servizio hamachi, disconnettendo da tutte le reti. Ricorderà lo stato precedente in modo che al prossimo avvio con start verremo ricollegati alle stesse reti in cui eravamo collegati in precedenza.

Collegati e online in una rete hamachi potremo eseguire qualsiasi operazione sia prevista. Ogni connessione su un IP di hamachi 5.x.x.x verrà diretta verso l’interfaccia ham0 gestita da hamachi. Chi fa uso di firewall dovrà configurare l’accesso verso la porta TCP 12975 utilizzata per l’autenticazione, nel caso fosse chiusa sarà tentata la connessione mediante la porta TCP 443. Tutto il traffico diretto al server invece passerà attraverso la porta di destinazione TCP 32976.

E’ possibile configurare alcune opzioni nascoste inserendole nel file ~/hamachi/config prima di avviare hamachi:

UdpPort xxxx
KeepAlive xxx
TxRate xxxx
RxRate xxxx

L’opzione UdpPort consente di regolare la porta UDP che resterà in ascolto per le connessioni tra i client, se non viene specificata verrà usata una porta casuale. KeepAlive indicherà il numero di secondi dopo i quali, in assenza di traffico di informazioni, sarà inviato un pacchetto per mantenere attiva la connessione: il valore predefinito se non indicato è 90 secondi, il minimo ammesso è 10, mentre il valore 0 indicherà di non utilizzare KeepAlive. Le opzioni TxRate e RxRate e consentono di limitare il traffico trasmesso e ricevuto in bytes per secondo.

Per ulteriori informazioni consultare il changelog per Hamachi/Linux e il forum di Hamachi.

9 Risposte a “Hamachi: una semplice VPN distribuita”

  1. TSbrego Dice:

    Cit:
    “Un mio collega che utilizza Fastweb mi ha fatto notare che le normali VPN PPTP non funzionano attraverso la rete Fastweb, non conosco la ragione o un modo di aggirare questo limite di Fastweb ma Hamachi, una VPN distribuita e senza configurazione (zero configuration), è in grado di superare questi problemi.”

    Il motivo per cui le normali VPN non funzionano con fastweb è perchè un pc o un router facente parte della rete fastweb non è direttamente esposto in internet, non ha cioè un indirizzo pubblico, e le porte di servizio delle VPN non sono nattate. Infatti non sono accessibili neanche servizi come http, ftp, ssh, ecc.
    Hamachi invece usa un server esterno “di appoggio” per iniziare la connessione. Un punto si connette al server principale di hamachi, l’altro punto si connette al server principale, gli instradamenti dei due punti vengono controllati e i due punti vengono messi in collegamento presumibilmente alterando gli header dei pacchetti. Se non sbaglio le specifiche di hamachi non sono state rilasciate.
    Per saperne di più prova a cercare informazioni su NATT.
    Non so se con openvpn o simili si possa fare lo stesso, in effetti sarei curioso perchè hamachi in quanto software closed non offre un adeguato livello di sicurezza ;)

  2. mpeg Dice:

    Utilissio, ti ho linkato ;D

  3. Muflone Dice:

    TSBrego grazie della precisazione ma quel che mi sfugge e` il perche` via fastweb i client non possano autenticarsi non avendo bisogno infatti di porte nattate o in ascolto ma unicamente di connettersi a 2 porte tcp

    volendo per forza di cose, ssh e` in grado di fare tunnel crittografati, da e verso tutto, per tutti i servizi. questo e` imho il miglior articolo sul web di tutti i tempi http://www.progbox.co.uk/wordpress/?p=434

  4. furester Dice:

    si sa nulla sul supporto di hamachi ai proxy http?

  5. Muflone Dice:

    purtroppo non v’è ancora alcuna notizia
    su Windows fu introdotto il supporto nella 1.qualcosa
    sul forum di supporto https://forums.hamachi.cc dicono chiaramente che non sanno dare una data

  6. furester Dice:

    peccato, farebbe veramente comodo in università!

  7. stefanox Dice:

    Davvero conciso ed utilissimo!!!!!

    Grazie =)

  8. discofabry Dice:

    Ciao….avrei una curiosita da chiederti e spero mi risponderai al piu presto….
    come si fa a vedere l’ip assegnatomi da hamachi?? ho controllato tutti i comendi e non c’è ne uno che mi dia uno straccio di ip…l’unico è start debug ma non va bene…
    dimmi che ci si riesce senza la gui (non mi funziona) sono su ubuntu 7.10

    aiuto

    thx

    ciao

    PS: complimenti

  9. Muflone Dice:

    ciao discofabry, grazie della visita

    una volta avviato hamachi ti verrà creata un’interfaccia, generalmente ham0 dalla quale potrai leggere l’indirizzo IP assegnatoti con ifconfig ham0 oppure ip addr show ham0

    inoltre, a patto che non usi configurazioni strane, dentro il file ~/.hamachi/state trovi le informazioni, puoi leggerlo con cat ~/.hamachi/state oppure grep Identity ~/.hamachi/state

    ciau

Lascia una Risposta