TINC VPN. Ecco come crearsi la propria rete virtuale.

« Older   Newer »
 
  Share  
.
  1. PsynfecteD
        Like  
     
    .

    User deleted


    TINC VPN. Ecco come crearsi la propria rete virtuale

    Bene, oggi vi spiegherò cosa sia una VPN e perché non usare Hamachi. Quindi, una volta ‘depurati’ dall’idea del facile VPN, vi spiegherò come crearvi la vostra prima Virtual Private Network (che brutta parola!)


    Allora: innanzi a tutto dovete avere un’idea, quanto meno basilare, di cosa sia una rete privata… Niente paura!
    Altro non è che una rete nella quale più utenti connessi a questa ‘rete’ possono comunicare tra di loro.
    Di per sé la rete privata non richiede internet (vedete la intranet degli uffici per esempio, con sambio di dati, condivisione di stampanti e così via).
    Quindi la rete privata è un’luogo’ all’interno del quale gli utenti possono scambiarsi dati in modo del tutto anonimo rispetto all’esterno (alias: internet).

    A volte avviene che si abbia la necessità di ricreare una LAN (Local Area Network, rete privata) ma a grandi distanze (dove per grandi si intende all’esterno della propria casa).
    Un esempio molto pratico è lo scambio di dati tra utente esterno ad una NAT come Fastweb ed un utente all’interno di essa.
    Per semplificare la vita gli ingegneri del software hanno sviluppato l’idea di una LAN virtuale, ossia una LAN… su internet, e l’hanno chiamata VPN (Virtual Private Network), ma per configurare una VPN non è come accedere ad internet semplicemente inserendo nel PC il cavo di rete attaccato al router, ed ecco perché un gruppo di sviluppatori hanno sviluppato un programma closed-source e gratuito chiamato ‘Hamachi‘.

    Questo programma non fa altro che configurare la rete in modo autonomo, ma ha 3+1 pecche:

    1. Si appoggia a server esterni alla rete per mettere in comunicazione i vari client.

    2. Anche se il programma è gratuito, per avere reti da più di 10 utenti bisogna sborsare un quantitativo non giustificato di soldi.

    3. E’ stato comprato da una società che sta lucrando con gli account ‘premium’ accennati al punto 2.

    4. E’ closed-source, il ché non è propriamente un male, ma di sicuro non è un bene.


    Detto questo voi direte: sì vabbeh, io mica sto con uno stadio nella mia VPN! Ma non è finita qui: solo gli account ‘Premium’ hano la possibilità di connettersi attraverso un tunneling esterno ai client più remoti (problema non esistente in una rete P2P diretta)

    Allora, ora che avete capito cosa è Hamachi e siete pronti per proseguire, ecco che vi presento TINC.

    TINC è un programma open-source e gratuito che permette di fare tutte le VPN che volete come hamachi, ma si distingue per questi punti:


    1. SNon si connette ad un host fisso, ma si connette in modo diretto ad un altro client.

    2. AnIl concetto di client/server è superato, in quanto tutti i partecipanti sono server e possono fare anche da client (dopo vi spiegherò cosa significa).

    3. Ci possono essere virtualmente infiniti utenti in una singola rete.

    4. E’ completamente gratuito.

    5. E’ un programma leggerissimo.


    Se siete ancora convinti a voler proseguire, ecco come si configura una rete VPN con TINC, partendo dalla compilazione dei sorgenti fino all’attuazione della rete in ambiente Ubuntu (attualmente 7.04), ma dovrebbe essere uguale per qualsiasi ambiente linux.

    Download e compilazione dei sorgenti

    Avviate il terminale (o konsole che sia) e seguite queste indicazioni:
    CODICE
    mkdir ~/Sources
    cd Sources
    wget http://www.tinc-vpn.org/packages/tinc-1.0.8.tar.gz
    tar -xvfz tinc-1.0.8.tar.gz
    cd tinc-1.0.8


    A questo punto vi conviene editare il file configure, cercando /etc e /var e togliendo ${EPREFIX} davanti ad essi, quindi:

    CODICE
    ./configure
    make
    make install


    (Oppure se preferite prima lanciate dh_make, poi configurate e quindi date il comando debuild binary per crearvi il vostro file .deb). Nel caso di errori nel configure, cercate ed installate eventualmente le varie dipendenze (tra le quali mi ricordo libssh-dev).

    Una volta installato, possiamo passare alla fase successiva:

    Configurazione della rete VPN

    Non vi scoraggiate, è un po’ lunghino (relativamente), ma poi vi assicuro che sarà soddisfacente

    Nota Bene: Ubuntu ha già attivato nel kernel il modulo del device tun/tap. Questo modulo è necessario e deve essere attivato nel caso in cui la distro non ce l’abbia di default.

    Si presuppone che la connessione ha il nome di mia_vpn, avverrà tra computera e computerb, e che computerb sia dietro ad una NAT, in modo che senza la VPN il computera non potrebbe comunicare direttamente col computerb. Inoltre computera dovrà avere la porta 655 TCP/UDP forwardata in caso di router.

    computera

    Innanzi tutto create le giuste cartelle per far andare tincd (tinc daemon). Ecco il comando da dare:

    CODICE
    sudo mkdir -p /etc/tinc/mia_vpn/hosts


    Quindi ci creiamo il nostro file di configurazione della connessione e lo apriamo:

    CODICE
    sudo touch /etc/tinc/mia_vpn/tinc.conf
    sudo nano /etc/tinc/mia_vpn/tinc.conf


    Ecco il contenuto del file tinc.conf

    CODICE
    Name = computera
    AddressFamily = ipv4
    BindToInterface = eth0
    Device = /dev/net/tun
    PrivateKeyFile = /etc/tinc/casa_fw/rsa_key.priv


    Allora… Name è il nome del computer (andrà ad influenzare i file contenuti nella cartella hosts); AddressFamily è l’IPv4 (quello usato oggigiorno, alternativamente se sapete cosa sia l’IPv6 e volete usarlo, omettete la linea, o se volete usare solo quello mettete ipv6); BindToInterface ha come valore il vostro device connesso alla rete Internet (nella stra-grande maggioranza dei casi è eth0 o eth1, ma non è detto… un ifconfig vi dirà tutto ); Device è il device tun/tap, nel caso di Ubuntu è /dev/net/tun, ma potrebbe essere anche /dev/tun… Infinte PrivateKeyFile è il percorso contenente il file di chiave privata di criptazione, che vedremo poi come creare (ogni host della rete VPN ha una chiave pubblica, contenuta all’interno della cartella hosts, ed una privata, appunto la PrivateKeyFile). Notate che questa configurazione non fa connettere TINC a nessun altro PC, in quanto non può connettersi ad un PC il quale è dietro ad una NAT, ossia una specie di router con tutte le porte chiuse al singolo utente.

    Quindi dobbiamo creare il file contenente la chiave pubblica e metterci all’interno dei dati sul PC.

    CODICE
    sudo touch /etc/tinc/mia_vpn/hosts/computera
    sudo nano /etc/tinc/mia_vpn/hosts/computera


    All’interno dovremo metterci indirizzo di rete IP reale (Address) con il quale siamo connessi alla rete, e l’indirizzo IP che vogliamo assegnare alla singola macchina nella VPN… io di solito suggerisco di usare 10.x.x.x poiché non è usato come IP pubblico su internet. Notare che nella stessa VPN ogni macchina deve avere un IP distinto. Ecco il contenuto del file:

    CODICE
    Address = mio.indirizzo.ip.pubblico
    Subnet = 10.20.30.40/32


    Abbiamo quasi finito, sin ora è stato tutto chiaro, vero? Il prossimo passaggio sarà quello di creare le chiavi che saranno uniche per ogni host (pc collegato alla rete). Niente di più semplice

    CODICE
    sudo tincd -K -n mia_vpn


    Che sarebbe: -K genera le chiavi (pubblica e privata) della -n rete. Rispondete con un paio di colpi di ‘Invio’ (lasciate le impostazioni di default) ed automagicamente dovreste avere il file /etc/tinc/mia_vpn/rsa_key.priv ed il file /etc/tinc/mia_vpn/computera modificato. Se tutto è filato liscio, ora basterà semplicemente creare due file bash che andranno eseguiti da tinc al giusto momento.

    CODICE
    sudo touch /etc/tinc/mia_vpn/tinc-up
    sudo touch /etc/tinc/mia_vpn/tinc-down


    tinc-up

    CODICE
    #!/bin/bash

    ifconfig mia_vpn 10.20.30.40 netmask 255.255.0.0 up


    tinc-down

    CODICE
    #!/bin/bash

    ifconfig mia_vpn down


    E date l’oro la flag di eseguibilità:

    CODICE
    sudo chmod +x /etc/tinc/mia_vpn/tinc-up
    sudo chmod +x /etc/tinc/mia_vpn/tinc-down


    Bene! Tutto finito Ora non ci rimane che configurare computerb

    computerb

    Ora non starò a dirvi tutto, ma ecco le differenze: il computerb conosce l’IP pubblico di computera, quindi computerb si comporterà come solo client. E’ vero, esso è un nodo della rete ed è considerato quindi server, ma visto che nessuno si connetterà a lui, sarà un semplice client.

    Innanzi a tutto il file tinc.conf conterrà queste modifiche:

    CODICE
    Name = computerb


    Ed aggiungerà queste due righe:

    CODICE
    ConnectTo = computera
    TCPOnly = yes


    La prima indica di connettersi a ‘computera’, la seconda dice di usare solo connessioni TCP (le connessioni UDP passeranno per le TCP, con perdita di prestazioni, ma accettabile). Quindi nella cartella hosts anziché creare computera, creerete il file computerb, ometterete la linea Address e come Subnet metterete 10.20.30.41/32. Non metterete la linea Address semplicemente perché l’IP di computerb non è un IP pubblico. Bene, ora in tinc-up sostituite 10.20.30.40 con 10.20.30.41 ed avviate sudo tincd -K -n mia_vpn per creare le chiavi.

    Ora che avete configurato entrambi i PC siete quasi pronti per la prima connessione!! Infatti l’ultima cosa da fare è scambiarsi i file nella cartella hosts, così che entrambi i PC abbiano questi file:

    CODICE
    /etc/tinc/mia_vpn/tinc.conf
    /etc/tinc/mia_vpn/tinc-up
    /etc/tinc/mia_vpn/tinc-down
    /etc/tinc/mia_vpn/rsa_key.priv
    /etc/tinc/mia_vpn/hosts/computera
    /etc/tinc/mia_vpn/hosts/computerb


    Pronti per l’ultimo, grande passo? Bene! Su entrambi i PC digitate il seguente codice:

    CODICE
    sudo tincd -n mia_vpn


    e se tutto è andato per il verso giusto… provate a pingare l’altro (es. ping 10.20.30.40 da computerb e ping 10.20.30.41 da computera)… Se riuscite a pingarvi… complimenti, siete in VPN!

    Se non riuscite a pingarvi, probabilmente avete sbagliato di settare l’IP pubblico di computera, oppure c’è qualche problema in tinc… chiudete tincd con un bel sudo killall tincd ed avviatelo con questi parametri aggiuntivi: -D -d5 (ossia: -D debug -d5 livello di debug 5) e postate qui gli errori.

    Ora, per aggiungere un altro PC… avete capito no? Condividete tutti i file della cartella hosts per tutta la rete e connettetevi almeno ad un nodo. Notate che potete usare plurime opzioni ConnectTo… e ricordatevi che se due PC sono dentro la stessa NAT, allora dovete aggiungere Address nel file hosts/nomecomputer con il valore dell’IP privato interno alla NAT… e se volete collegarvi ad un PC esterno alla NAT, ricordatevi di impostare TCPOnly!

    Se avete domande/dubbi/correzioni, commentate pure
     
    .
0 replies since 26/4/2011, 22:47   441 views
  Share  
.