Una semplice VPN con tinc
da Nss il agosto 14, 2010
Collegare due (o più) computer tramite internet come se fossero in una rete locale??
Che ne dite di una VPN[1]??
Ci sono differenti soluzioni per la creazione di VPN quella che noi vedremo è tinc[2] essendo particolarmente leggero e avendo le seguenti peculiarità:
- Automatic full mesh routing
- Easily expand your VPN
- Ability to bridge ethernet segments
Regardless of how you set up the tinc daemons to connect to each other, VPN traffic is always (if possible) sent directly to the destination, without going through intermediate hops.
When you want to add nodes to your VPN, all you have to do is add an extra configuration file, there is no need to start new daemons or create and configure new devices or network interfaces.
You can link multiple ethernet segments together to work like a single segment, allowing you to run applications and games that normally only work on a LAN over the Internet.
Verranno mostrati i passi essenziali da seguire…
- Abbiamo 2 computer PCA e PCB
- PCA con direttamente raggiungibile e con ip pubblico x.y.z.t
- PCB dietro nat quindi non direttamente raggiungibile
- Su entrambi i PC:
- Installiamo i pacchetti necessari
- Definiamo la variabile
$VPNNAMEassegnandole il nome che vogliamo dare alla vostra VPN - Creiamo i file e le directory necessarie
- Ora spostiamoci su PCA (quello con ip pubblico x.y.z.t)
-
Inseriamo le seguenti righe nel file
/etc/tinc/$VPNNAME/tinc.conf - Creiamo il file
/etc/tinc/$VPNNAME/hosts/$PCAHOSTNAMEe all’interno mettiamo:
l’ip 10.0.10.1 è stato preso a caso dalla classe 10.x.x.x, potrete cambiarlo a vostro piacimento - Aggiungiamo al file
/etc/tinc/$VPNNAME/tinc-up - Mentre nel file
/etc/tinc/$VPNNAME/tinc-downmettiamo - Lanciamo il comando per generare la chiave per criptare la comunicazione e diamo invio alle successive richieste
- Possiamo finalmente passare a PCB, i passi saranno uguali se non per alcuni dettagli
- Configuriamo il portforwarding del router in modo da mandare tutte le richieste delle porte 655 TCP/UDP su PCB
- Inseriamo le seguenti righe nel file
/etc/tinc/$VPNNAME/tinc.conf - Creiamo il file
/etc/tinc/$VPNNAME/hosts/$PCBHOSTNAMEe inseriamoci: - Aggiungiamo al file
/etc/tinc/$VPNNAME/tinc-up - Mentre nel file
/etc/tinc/$VPNNAME/tinc-downmettiamo - Lanciamo il comando per generare la chiave per criptare la comunicazione e diamo invio alle successive richieste
entrambi i pc hanno installata la distribuzione ArchLinux.
pacman -S openssh zlib lzo yaourt -S tinc
VPNNAME=mia_vpnmkdir -p /etc/tinc/$VPNNAME/hosts mkdir -p /usr/var/run/ touch /etc/tinc/$VPNNAME/tinc.conf touch /etc/tinc/$VPNNAME/tinc-down touch /etc/tinc/$VPNNAME/tinc-up chmod +x /etc/tinc/$VPNNAME/tinc-up chmod +x /etc/tinc/$VPNNAME/tinc-down
ATTENZIONE: sostituire a $PCxHOSTNAME l’hostname della macchina, a $INTERNETIF l’interfaccia con la quale la macchina esce su internet e a $VPNNAME il nome della vpn usato precedentemente (VPNNAME=mia_vpn)
Name = $PCAHOSTNAME AddressFamily = ipv4 BindToInterface = $INTERNETIF Device = /dev/net/tun PrivateKeyFile=/etc/tinc/$VPNNAME/rsa_key.priv
Address = x.y.z.t Subnet = 10.0.10.1/32
#!/bin/bash ifconfig $VPNNAME 10.0.10.1 netmask 255.255.0.0 up
#!/bin/bash ifconfig $VPNNAME down
tincd -K -n $VPNNAME
Rispetto alla configurazione di PCA abbiamo aggiunto le righe 5 e 6.
1 2 3 4 5 6 7 | Name = $PCBHOSTNAME AddressFamily = ipv4 BindToInterface = $INTERNETIF Device = /dev/net/tun ConnectTo = $PCAHOSTNAME TCPOnly = yes PrivateKeyFile=/etc/tinc/$VPNNAME/rsa_key.priv |
l’ip 10.0.10.2 è stato preso a caso dalla classe 10.x.x.x, potrete cambiarlo a vostro piacimento
Subnet = 10.0.10.2/32
#!/bin/bash ifconfig $VPNNAME 10.0.10.2 netmask 255.255.0.0 up
#!/bin/bash ifconfig $VPNNAME down
tincd -K -n $VPNNAME
La procedura è quasi terminata, dovremmo solo copiare i file
/etc/tinc/$VPNNAME/hosts/$PCAHOSTNAMEsulla stessa directory in PCB/etc/tinc/$VPNNAME/hosts/$PCBHOSTNAMEsulla stessa directory in PCA
In questo momento dovremmo avere nella directory etc/tinc/$VPNNAME/ di entrambe le macchine i seguenti file
./tinc.conf ./tinc-up ./rsa_key.priv ./tinc-down ./hosts ./hosts/$PCAHOSTNAME ./hosts/$PCBHOSTNAME
Se tutto è stato configurato in maniera corretta, basterà dare il seguente comando su entrambi i pc
tincd -n $VPNNAME
e per verificare l’effettivo funzionamento
- Da PCA proviamo:
- Da PCB proviamo:
ping 10.0.10.2ping 10.0.10.1In caso di problemi è possibile lanciare tinc in modalità debug per analizzare al meglio eventuali errori
tincd -D -d5 -n $VPNNAME
[1] http://it.wikipedia.org/wiki/Virtual_Private_Network
[2] http://www.tinc-vpn.org/
Lascia un commento