Cos'è ed a cosa serve Hamachi?
Esistono già molte soluzioni di interconnessione di nodi che utilizzano diverse tecnologie ma tutte indistintamente più o meno presentano difficoltà di configurazione quando i nodi si trovano in particolari topologie tipo indietro a un firewall o a un router ecc.
Hamachi è un gran bel software per i newbies perché permette di abbassare drasticamente la learning curve su argomenti non certo banali come quelli di networking aumentando il numero di persone coinvolto su tali tematiche un po come ha fatto Windows nel campo degli OS.
Non è Open source ma il suo uso per ciò che ci riguarda è gratuito, inoltre viene assicurata da Applied Networking Inc. l' assenza di adware & spyware all' interno del programma... meglio di niente.
Hamachi crea delle VPNs che lavorano sul protocollo UDP. Garantisce connessioni (su mezzi insicuri come Internet) sicure attraverso autenticazione e criptazione del traffico fra le parti. In altre parole ci permette di creare una VPN con altri nodi ed accedere a servizi di condivisione come Samba e FTP o server per giochi online in modo privato e sicuro e soppratutto fa tutto ciò richiedendoci un davvero minimo sforzo.
Una VPN e' un infrastruttura che permette di utilizzare vari servizi fra i host client e server dislocati su una WAN (come Internet) utilizzando per la comunicazione il sistema di collegamenti della WAN stessa impedendo però tutto cio' che sta al di fuori della VPN di accedere alla VPN stessa. Alcuni scenari d' uso esemplificativi potrebbero essere:
- Condivisione file/stampanti attraverso NFS o SMB/CIFS fra nodi geograficamente distanti utilizzando come mezzo trasmissivo non una LAN Ethernet ma Internet (che come ben sappiamo e' totalmente insicura anzi...)
- Accedere in remoto ad un host con VNC
- Utilizzare servizi Web o email visibili solo ai nodi che compongono la VPN ed invisibili all' esterno di essa
- giocare game online non con tutto il mondo ma con alcuni nodi selezionati(p.e. solo con gli amici)
- .... ecc... mettiamo come limite la nostra fantasia
In Hamachi oltre ai nodi di tipo client (degli utenti della VPN) c' è un tipo di nodo server chiamato mediation server (un po come un tracker in una rete bittorent) ed appartiene alla Hamachi che viene utilizzato solo inizialmente per la configurazione dei client:
- in tal modo la rete Hamachi è capace di inizializzare le connessioni VPN fra i client nella quasi totalità dei casi senza dover ricorrere a complesse procedure di configurazione anche nel caso i client si trovino dietro firewall o NAT
- Il mediation server raccoglie informazioni solo sui nodi della VPN nessun pacchetto (fra l' altro cifrato) dati fra i nodi passa attraverso di lui. Le communicazioni fra i nodi sono P2P
- Cioè uno o più server di backend si utilizzano per tener traccia di tutte le informazioni che riguardano i nodi della rete ed ovviamente dell' autenticazione di essi
Sicurezza
L' aspetto di sicurezza in una VPN e' essenziale. Se non c'è non andiamo da nessuna parte. Questo perché in una VPN si utilizza un canale insicuro come Internet per trasmettere dati confidenziali ed è quindi necessario utilizzare- un qualche modo di autenticazione per stabilire chi può far parte di essa e chi no
- un qualche modo di criptazione per garantire la confidenzialità nello scambio di informazioni
Nella fase di login (autenticazione) da parte di un client il mediation server Hamachi possiede già una coppia (pubblica, privata) di chiavi RSA. La chiave pubblica del server viene distribuita insieme al software client che noi installiamo sul PC. In questo modo il client può verificare l' autenticità del server.
D' altra parte il nodo client genera la propria coppia di chiavi RSA che utilizzerà ogni volta che dovrà connettersi per l' autenticazione durante la fase di login
In seguito se la fase di login è andata a buon fine si stabilisce la connessione P2P su protocollo UDP questa volta fra il client autenticato e i nodi della VPN
Installazione e configurazione
A quanto pare è stato pensato inizialmente per la piattaforma Windows e poi solo ultimamente ha cominciato ad emigrare verso altre piatteforme fra cui la nostra Linux.
La versione Linux (che ha qualche funzionalità in meno rispetto a quella per Windows) ha un interfaccia nativa CLI anche se sono gia diffuse due GUI di terze parti. Inoltre il modo di installazione è quello tradizionale (anche se ben fatto quindi facile e paragonabile ad un installazione da pacchetto) non essendo distribuite versioni pacchettizzate per la nostra Ubuntu. Inoltre la documentazione è ottima direi.
- Vediamo adesso i passi di download:
- Qui scarichiamo i sorgenti di Hamachi per linux
- Qui c' è una prima GUI abbastanza datata e qui una molto più recente che a parte i gusti personali consiglierei solo per il fatto che c'è in versione pacchettizzata .deb (Quella per hardy va bene pure per intrepid)
- Hamachi abbisogna dell' interfaccia standard tun/tap che si usa per creare un tunnel o bridge anche da altri software come OpenVPN. Il kernel delle maggiori disto Linux dispone già di tale modulo solo che noi lo dobbiamo abilitare con:
sudo modprobe tun
- e poi farlo caricare automaticamente al boot di Linux immettendo la linea tun nel file di configurazione di autocaricamento moduli /etc/ modules dando:
sudo gedit /etc/modules
- messa la linea e salvato il file abbiamo finito con i preliminari. In ogni caso prima di proseguire assicuriamoci che un valido tunnelling node è stato creato in /dev dando:
ls /dev/net/tun
- se otteniamo un output di errore No Such File or Directory provvediamo a creare manualmente un nuovo nodo dando:
sudo mkdir /dev/net sudo mknod /dev/net/tun c 10 200
NB: Nel qualcaso si abbia un kernel modificato o addirittura compilato a mano ci sarà bisogno di ricompilare il kernel col supporto per l' IP Tunnelling. In tal caso un' occhiata qui può essere d' aiuto.
Andiamo a vedere adesso l' installazione vera e propria di Hamachi
tar -zxvf hamachi-0.9.9.9-x.tar.gz cd hamachi-0.9.9.9-x/ sudo make install sudo tuncfgOutput:
harrykar@harrykar-desktop:~$ cd /home/harrykar/my_dws/hamachi-0.9.9.9-20-lnx harrykar@harrykar-desktop:~/my_dws/hamachi-0.9.9.9-20-lnx$ sudo make install 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. harrykar@harrykar-desktop:~/my_dws/hamachi-0.9.9.9-20-lnx$ sudo tuncfg harrykar@harrykar-desktop:~/my_dws/hamachi-0.9.9.9-20-lnx$
- Le prima istruzione scompatta l' archivio e con la seconda entriamo nella directory hamachi
- la terza fa l' installazione vera e propria provvedendo a copiare i file binari in /usr/bin, a compilare ed a creare un simbolic link per hamaki-init
- la quarta fa avviare hamachi. tuncfg (un programma utile per la configurazione dell' interfaccia che si deve eseguire come root a differenza del comando hamachi che può essere eseguito come normal-user)
Configurazione base di Hamachi
Qui ci sarebbero 2 scenari possibili:
- Eseguire Hamachi in background come un servizio di sistema. Questo scenario è il più adeguato per un utilizzo continuativo di Hamachi
- oppure come come una semplice user application usando magari un gui frontend. Noi seguiremo quest' ultimo scenario che è di gran lunga il più semplice oltre che il più flessibile (non trattiene risorse di rete e del pc quando non serve ossia quando hamachi non viene usato) se usiamo Hamachi solo occasionalmente quando ci serve.
hamachi-init
e otteniamo un output simile a
harrykar@harrykar-desktop:~/my_dws/hamachi/hamachi-0.9.9.9-20-lnx$ hamachi-init Initializing Hamachi configuration (/home/harrykar/.hamachi). Please wait .. generating 2048-bit RSA keypair .. ok making /home/harrykar/.hamachi directory .. ok saving /home/harrykar/.hamachi/client.pub .. ok saving /home/harrykar/.hamachi/client.pri .. ok saving /home/harrykar/.hamachi/state .. ok Authentication information has been created. Hamachi can now be started with 'hamachi start' command and then brought online with 'hamachi login'.
Una volta generata la coppia di chiavi e creata la configurazione iniziale come dicono le note dell' output diamo:
hamachi start
Output
harrykar@harrykar-desktop:~/my_dws/hamachi/hamachi-0.9.9.9-20-lnx$ hamachi start Starting Hamachi hamachi-lnx-0.9.9.9-20 .. ok
che eseguirà il demone. Per assicurarci se diamo ifconfig vedremo che si è creata una nuova interfaccia virtuale (qui chiamata ham0) con indirizzo IP assegnato della classe 5.x.y.z
harrykar@harrykar-desktop:~/my_dws/hamachi/hamachi-0.9.9.9-20-lnx$ ifconfig eth0 Link encap:Ethernet HWaddr 00:1e:2a:bd:1e:9a inet addr:192.168.x.x Bcast:192.168.x.x Mask:255.255.x.x inet6 addr: fe80::21e:2aff:xxxx:xxxx/x Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2479753 errors:0 dropped:0 overruns:0 frame:0 TX packets:3467201 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1317222970 (1.3 GB) TX bytes:3645142390 (3.6 GB) Interrupt:10 Base address:0xa000 ham0 Link encap:Ethernet HWaddr 56:65:fa:48:87:8a inet addr:5.90.182.148 Bcast:5.255.255.255 Mask:255.0.0.0 UP BROADCAST RUNNING MULTICAST MTU:1200 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:500 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:645 errors:0 dropped:0 overruns:0 frame:0 TX packets:645 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:69744 (69.7 KB) TX bytes:69744 (69.7 KB) harrykar@harrykar-desktop:~/my_dws/hamachi/hamachi-0.9.9.9-20-lnx$
Una volta che hamachi gira possiamo settare il nostro nickname dando:
hamachi set-nick "NostroNickname"
Output
harrykar@harrykar-desktop:~/my_dws/hamachi/hamachi-0.9.9.9-20-lnx$ hamachi set-nick harrykar Setting nickname .. ok
Adesso è arrivato finalmente il momento di fare il login con un mediation server
dando:
hamachi login
Output
harrykar@harrykar-desktop:~/my_dws/hamachi/hamachi-0.9.9.9-20-lnx$ hamachi login Logging in ......... ok
NB:--se invece diamo prima $hamachi login di default ci viene assegnato un nick generico che comunque poi possiamo personalizzare con $hamachi set-nick nickname
Hamachi cataloga le VPN con un nome mnemonico che indica una particolare rete. Se non abbiamo una possiamo crearla adesso dando:
hamachi create nomerete password
Output
harrykar@harrykar-desktop:~/my_dws/hamachi/hamachi-0.9.9.9-20-lnx$ hamachi create ciaoatutti 12345 Creating ciaoatutti .. ok
Chi crea una rete diventa suo proprietario ed è l' unico che potrà in seguito eliminarla col comando $hamachi delete oppure forzare un nodo a scollegarsi col comando: $hamachi evict
*Circa le NETWORK PASSWORDS*
Raccomando di scegliere con cura la password. Se non si ha idea di quel intendo dire visitare il sito grc per ottenere una random string password. Queste sono passwords molto forti che doneranno sicurezza alla nostra configurazione.
Se invece abbiamo già una rete o conosciamo una e vogliamo farne parte diamo:
hamachi join
Adesso è giunta l' ora di andare on-line diamo:
hamachi go-online
Se abbiamo o facciamo parte di più reti VPN posso vedere la loro lista senza però gli identificativi dei peer associati (guarda il prossimo comando) dando:
hamachi list
Gli identificativi dei peer invece si possono ottenere con:
hamachi get-nicks
- Il nome della rete spunta fra [nomerete]
- *[nomerete] vuol dire che siamo membri di questa rete
- I nicknames spuntano sotto *[nomerete]. Se c'è asterisco davanti * 5.x.x.x nick vuol dire che il peer è in fase di connessione nel caso invece sia già collegato dovrà spuntare l' IP virtuale e senza asterisco
Uno degli obiettivi di questa hamachi-gui è: aspirare di essere un clone di quella di Windows (e in effetti lo è). Abbiamo quindi an secondo metodo di gestione per Hamachi. I gusti sono gusti...
NB:--per i newbies sconsiglio caldamente di scaricare i sorgenti anzichè il . deb (per hardy) perchè già col primo comando otteranno la prima delusione:
harrykar@harrykar-desktop:~$ cd /home/harrykar/my_dws/hamachi/ham_gui_temp/hamachi-gui-0.9.6 harrykar@harrykar-desktop:~/my_dws/hamachi/ham_gui_temp/hamachi-gui-0.9.6$ ./configure checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether to enable maintainer-specific portions of Makefiles... no ./configure: line 2298: ALL_LINGUAS: command not found checking for style of include used by make... GNU checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking dependency style of gcc... gcc3 checking for library containing strerror... none required checking for gcc... (cached) gcc checking whether we are using the GNU C compiler... (cached) yes checking whether gcc accepts -g... (cached) yes checking for gcc option to accept ISO C89... (cached) none needed checking dependency style of gcc... (cached) gcc3 checking for gcc... (cached) gcc checking whether we are using the GNU C compiler... (cached) yes checking whether gcc accepts -g... (cached) yes checking for gcc option to accept ISO C89... (cached) none needed checking dependency style of gcc... (cached) gcc3 checking how to run the C preprocessor... gcc -E checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ANSI C header files... yes checking for intltool >= 0.34... 0.37.1 found checking for xgettext... /usr/bin/xgettext checking for msgmerge... /usr/bin/msgmerge checking for msgfmt... /usr/bin/msgfmt checking for perl... /usr/bin/perl checking for XML::Parser... ok checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking locale.h usability... yes checking locale.h presence... yes checking for locale.h... yes checking for LC_MESSAGES... yes checking libintl.h usability... yes checking libintl.h presence... yes checking for libintl.h... yes checking for ngettext in libc... yes checking for dgettext in libc... yes checking for bind_textdomain_codeset... yes checking for msgfmt... (cached) /usr/bin/msgfmt checking for dcgettext... yes checking if msgfmt accepts -c... yes checking for gmsgfmt... /usr/bin/msgfmt checking for xgettext... (cached) /usr/bin/xgettext checking for catalogs to be installed... sv pl fr it de no es bg sk checking for pkg-config... /usr/bin/pkg-config checking pkg-config is at least version 0.9.0... yes checking for GTK... configure: error: Package requirements (gtk+-2.0 >= 2.10) were not met: No package 'gtk+-2.0' found Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GTK_CFLAGS and GTK_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. harrykar@harrykar-desktop:~/my_dws/hamachi/ham_gui_temp/hamachi-gui-0.9.6$
La compilazione quando problematica la potranno benissimo fare dopo un bel po di esperienza ;-) .__
No comments:
Post a Comment