Configurare una VPN con openVPN in modalità bridge
giovedì, novembre 27 2008 - 1.030 Visualizzazioni
Ultimamente ho avuto necessità, per motivi di lavoro, di poter utilizzare il mio PC di casa mia dal lavoro.
Per fare questo è necessario configurare sia lato server, che lato client una VPN.
Ma vediamo un po’ di capire cos’è una VPN.
Una VPN, il cui acronimo è Virtual Private Network, altro non è, come dice il nome stesso, che una Rete Private Virtuale, quindi immaginate di avere due computer, molto distanti fra loro, e grazie alla VPN potrete collegarli in rete, grazie alla sola connessione internet e uno strumento opensource chiamato openVPN.
OpenVPN, è uno strumento openSource, ed è anche multipiattaforma, ed è completamente gratuito.
La configurazione di openVPN è quasi identica fra Windows e Linux.
In questa guida vedremo come configurare una VPN in modalità bridge, che ci permetterà di entrare nel PC che fa da server, con il nostro IP Privato di casa nostra.
Per prima cosa installiamoci openVPN, per Linux è ormai presente in tutti i repository delle maggiori distribuzioni, per windows, se gradite anche un interfaccia grafica potete scaricarlo a questo sito: http://openvpn.se/files/install_packages/ e scaricate l’ultima versione disponibile attuale.
Su windows inutile dire come si installa, basta lanciare l’exe e il gioco è fatto, su Linux anche non è difficile, su distribuzioni Debian Based lanciate il comando da root: apt-get
Se volete installarlo a mano, andate sull’area download del sito ufficiale e scaricate i sorgenti, dopo averli scaricate lanciate i seguenti comandi:
./configure make make install
Ora openVPN è installato, per utilizzare la modalità bridge, come verà spiegato in questa guida, è necessario creare un bridge di rete fra l’interfaccia virtuale di openVPN tap0, e l’interfaccia di rete reale, eth0.
Per windows si chiameranno LAN quella reale, e TAP Windows32 Adapter, quella virtuale.
Su windows è molto semplice, andate su Connessioni di rete, e troverete le due interfaccie, quella LAN, e quella TAP per openVPN, selezionatele entrambe e andate su Collegamento Bridge, o qualcosa di simile. Dopo averle collegate iin bridge dovete andare nella configurazione del bridge, andare quindi su Proprietà -> Protocollo di Configurazione TCP/IP e impostare l’ip che prima era impostato sulla LAN.
Su linux invece è necessario installare anche un utility per il bridge, da console quindi digitate:
apt-get install bridge-utils se usate Debian Based, o yum install bridge-utils se usate Red Hat Based.
Ora è necessario intervenire nella configurazione della rete per la realizzazione del bridge su Linux, io vi mostrerò come deve essere configurato su Debian - Ubuntu, dato che openVPN l’ho configurato solo su Debian, Ubuntu e Windows.
Aprite quindi con un editor di testo il file: /etc/network/interfaces e il suo contenuto deve essere simile a questo:
auto lo iface lo inet loopback auto br0 iface br0 inet static address 192.168.1.5 netmask 255.255.255.0 gateway 192.168.1.1 pre-up /usr/sbin/openvpn –mktun –dev tap0 pre-up /sbin/ip link set tap0 up pre-up /sbin/ip link set eth0 up pre-up /usr/sbin/brctl addbr br0 pre-up /usr/sbin/brctl addif br0 eth0 pre-up /usr/sbin/brctl addif br0 tap0 post-up /etc/init.d/openvpn start pre-down /etc/init.d/openvpn stop pre-down /usr/sbin/brctl delif br0 eth0 pre-down /sbin/ip link set eth0 down pre-down /usr/sbin/brctl delif br0 tap0 pre-down /sbin/ip link set tap0 down post-down /usr/sbin/brctl delbr br0 post-down /usr/sbin/openvpn –rmtun –dev tap0
Se usate programmi che gestiscono le interfacce, assicuratevi che al riavvio la rete viene avviata come bridge, e che eth0 e tap0 non abbiano indirizzo, e l’indirizzo ip che usavate per eth0, dovete inerirlo in br0, che farà da bridge.
Per esempio io uso wicd per gestire la rete su Ubuntu, e non mi ero accorto che lui all’avvio gestiva eth0 e dovevo cambiarlo in br0, in questo modo al riavvio carica il bridge di rete.
Ora il bridge è fatto, ora possiamo passare alla generazione dei certificati per server e client.
Per prima cosa se usiamo Linux, copiamoci tutta la cartella easy-rsa/2.0 in /etc/openvpn, quindi diamo il seguente comando:
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/
Su windows questa cartella si trova sotto C:\Programmi\openVPN\easy-rsa\
A questo punto è necessario modificare il file vars che si trova nella cartella easy-rsa.
Su windows però prima è necessario lanciare il comando init-config in questo modo:
Andiamo su Esegui, digitiamo cmd, nella console portiamoci nel percorso giusto, quindi digitiamo:
C:\Programmi\OpenVPN\easy-rsa
Ora digitiamo: init-config
In questo modo abbiamo generato i file di configurazione per windows.
Su linux il file vars si trova in /etc/openvpn/easy-rsa/2.0/
La configurazione è identica fra Windows e Linux.
Apriamo quindi con il vostro editor di testo preferito il file vars e in fondo al file troverete queste righe:
export KEY_COUNTRY=IT export KEY_PROVINCE=Italia export KEY_CITY=Roma export KEY_ORG=Augen export KEY_EMAIL=my_e-mail@mydomain.org
Modificatele a vostro piacimento e salvate.
Su linux nel percorso dove sta il file scrivete da root:
source ./vars ./clean-all ./build-ca
Su windows semplicemente nella cartella di easy-rsa scrivete:
vars clean-all build-ca
In questo modo avete creato i file ca.crt e ca.key.
Ora possiamo creare i certificati per server e client.
Per il server digitiamo:
./build-key-server server
Su windows:
build-key-server server
Dopo aver immesso i dati, a queste due domande rispondete y:
Certificate is to be certified intil Nov 27 13:25:30 2018 GMT (3650 days) Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Ora avete generato i certificati per il server, ora passiamo al client:
./build-key client1
Su windows:
build-keu client1
E continuate per tutti i client che vi servono
Vi chiederà le stesse domande di prima, voi rispondete sempre y.
Gli ultimi passi per la generazione di certificati sono la generazione di Diffie-Hellman e la chiave statica.
Per generare il parametro Diffie-Hellman digitate il seguente comando:
./build-dh
Su windows:
build-dh
Al termine sarà generato un file dh1024.pem
Infine, ma non è obbligatorio, potrete generare una chiave statica, su Linux è possibile generarla con il seguente comando:
openvpn –genkey –secret ta.key
Su windows è possibile crearla automaticamente andando su Start->Programmi->OpenVPN->Generate a Static Key
Ora abbiamo tutti i certificati e la chiave statica che ci servono per la nostra VPN, su linux nella cartella easy-rsa/2.0 è stata creata una cartella keys, dove sono state messi tutti i certificati creati, escusa la chiave statica che è stata creata dove avete lanciato il comando.
Ora dovrete copiare i vari certificati e metterli al posto giusto, dato che ora siamo sul server, iniziamo con i file per il server, quindi copiamoci i seguenti file con il seguente comando:
cp /etc/openvpn/easy-rsa/2.0/keys/ca.crt /etc/openvpn/ cp /etc/openvpn/easy-rsa/2.0/keys/server.crt /etc/openvpn/ cp /etc/openvpn/easy-rsa/2.0/keys/server.key /etc/openvpn/ cp /etc/openvpn/easy-rsa/2.0/ta.key /etc/openvpn/ (scegliete il percorso dove avete generato la ta.key)
Ora ci manca la configurazione vera e propria del server, copiamoci quindi il file d’esempio del server, ma è in formato compresso, quindi eseguiamo il seguente comando:
zcat /usr/share/doc/openvpn/examples/samples-config-files/server.conf.gz > /etc/openvpn/server.conf
Ora apriamo il file server.conf appena estratto con il nostro editor di testo preferito e impostiamolo in questo modo:
port 1194 # Porta in ascolto, deve essere aperta sul router verso il pc locale dove si trova il server VPN ;proto tcp proto udp # Protocollo in ascolto, in questo caso udp, che è quello di default dev tap0 # Per la modalità bridge devi usare tap0 ;dev tun ;dev-node MyTap # Questo parametro serve solo a windows, devi indicare il nome del dispositivo tap su windows, per esempio se quando lo hai creato lo hai rinominato in BridgeTAP, devi scriverlo in questo parametro. ca ca.crt cert server.crt key server.key dh dh1024.pem ;server 10.8.0.0 255.255.255.0 ;ifconfig-pool-persist ipp.txt server-bridge 192.168.1.5 255.255.255.0 192.168.1.50 192.168.1.60 keepalive 10 120 tls-auth ta.key 0 # Chiave statica secreta generata automaticamente, nel server devi mettere 0 come valore, nel client devi mettere 1 ;cipher BF-CBC # Blowfish (default) ;cipher AES-128-CBC # AES ;cipher DES-EDE3-CBC # Triple-DES comp-lzo max-clients 10 # Qui definisci il numero massimo di client che possono connettersi alla rete locale ;user nobody ;group nobody persist-key persist-tun status openvpn-status.log # Genera un file chiamato openvpn-status.log che da informazioni sullo stato del server log openvpn.log # Genera un file chiamato openvpn.log che scrive il log di openvpn in questo file, controllate che non ci siano errori e che dia Inzializzation Sequence Complete fin fondo al file. ;log-append openvpn.log verb 3 ;mute 20
Su windows cambia solo che il nome del file sarà server.ovpn, e lo troverete in C:\Programmi\openVPN\sample-config\
Ora il server è pronto, siamo pronti per connetterlo, su windows è necessario far partire openvpn-gui e fare Connetti, oppure fare con il tasto destro del mouse sul file di configurazione Start OpenVPN on This configuration file.
Su linux lanciate il seguente comando:
openvpn –config /etc/openvpn/server.conf, poi andate nel file di log e controllate che si sia connesso senza problemi.
Se tutto è andato bene, il server dovrebbe essere connesso, e siamo ora pronti per configurare la parte client per connetterci al nostro server appena configurato.
Per il client è sufficente avere i certificati generati in precedenza e infine configurare il client.conf.
Speidamo in maniera sicura, o con e-mail crittografate, o con scp, o altri metodi che garantiscono sicurezza, i certificati necessari, copiamo quindi nella cartella /etc/openvpn/ nel client (dopo aver installato openvpn anche sul client) i file ca.crt, client1.crt, client1.key e ta.key, su windows il percorso dove mettere i file è C:\Programmi\OpenVPN\config\
Ora copiamoci il file d’esempio del client, su linux scriviamo il seguente comando:
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn
Su windows si trova nella cartella sample-config, e lo copiate poi nella cartella config.
Ora modifichiamo il file client.conf (Linux) client.ovpn (windows) in questo modo:
client # Specifica che stiamo usando openVPN come client dev tap # Deve stare su tap perchè stiamo usando openVPN in modalità bridge ;dev tun ;dev-node MyTap ;proto tcp proto udp # Specifica che stiamo usando il protocollo udp, che è comunque quello di default remote 151.50.106.41 1194 # Qui dobbiamo mettere l’ip pubblico del pc a cui vogliamo connetterci, seguito dalla porta in ascolto resolv-retry infinite nobind ;user nobody ;group nogroup persist-key persist-tun ca ca.crt cert client1.crt key client1.key ns-cert-type server comp-lzo verb 3 ;mute 20
Ora dovrebbe essere tutto apposto, proviamo a connetterci alla nostro VPN, su windows, aprite openvpn-gui e andate su Connect e se si è connesso dovrebbe comprarire l’ip che è stato assegnato con i due monitor di colore verde.
Su Linux lanciate il solito comando:
openvpn –config /etc/openvpn/client1.conf
Ora controllate i log se è tutto apposto, su Windows li crea a parte, se la usate su Linux, aggiungete al file di configurazione log openvpn.log, e in entrambi, sia se usate linux, sia se usate windows, se volete avere lo stato del client aggiungete anche status openvpn-status.log
Ora avete finito, dovreste avere la vostra VPN perfettamente funzionante, se ho tralasciato qualcosa non esistate a scrivere, e io sarò a disposizione per ulteriori chiarimenti.
Taggato come Debian, Internet, Linux, Programmi, Server, Sicurezza, Tutorial Linux, Tutorial Windows, rete, ubuntu, windowsScritto da marco
Altri Articoli Interessanti
Gli ultimi dal Social
gabrielbutoeru
Gabriel recupera la password e capisce qualche cosa in più su Chrome OS
@Replica
mcastel
qualche riflessione sul sistema operativo di #Google http://tinyurl.com/laquuc (Qaiku)
@Replica
andreaolivato
Gnome-do 0.8.2 con le Docklets su Gentoo : VIDEO http://bit.ly/UcC8g
@Replica
andreaolivato
Stallman: il software libero non deve dipendere da #Mono http://punto-informatico.it/2657922/PI/News/stallman-liberatevi-mono.aspx
@Replica
trampfox
ha appena finito il post su Linux Feed :) http://trampfox.wordpress.com/2009/06/22/linux-feed/
@Replica
Sito webCompletamente Funzionante
GalleryCompletamente Funzionante
Social NetworkCompletamente Funzionante
Server JabberProblemi liste contatti
Servizio MailCompletamente Funzionante
Servizio di RicercaCompletamente Funzionante















