VPN .- Del ingles “Virtual Private Network (VPN), es una tecnología de red que permite una extensión de la red localsobre una red pública o no controlada, como por ejemplo Internet.” (sacado de la wikipedia).

Esto quiere decir que al crear una VPN, podemos ver computadoras conectadas por Internet como si estuviesen en una red local.

Para montar esta red de ejemplo, usaremos “OpenVPN” que es el software que nos permitirá crear esta red, así como el sistema operativo UBUNTU en su versión 9.10.

Bueno par empezar, instalaremos OpenVPN desde nuestro synaptics.

si no sabes coo hacerlo, sólo abre synaptics,(Systema->administracion->synaptics), luego en el campo para buscar escribimos openvpn, damos enter, seleccionamos el paquete con doble clic y aplicamos cambios(en la palomita de arriba).

Una vez instalado, abrimos el terminal de UBUNTU y entramos al directorio /usr/share/doc/openvpn/2.0/easy-rsa , si no sabes como se hace, sólo coloca “cd ” antes de la dirección del directorio, fíjate bien que después del cd hay un espacio en blanco.

Ahora generaremos “the master Certificate Authority (CA) certificate & key”, lo puse en ingles porque no encontré una traducción muy buena pero creo que es algo así como el certificado y llave principal de autoridad.

Una vez dentro de este directorio ejecutaremos los siguientes comandos.

sudo su #Esto nos hará super-usuario, para no tener problemas con los permisos, después de este código, nos pedirá la contraseña.

. ./vars #Observa el espacio en blanco.
./clean-all
./build-ca
Al ingresar el ultimo comando te debería salir algo como esto:
ai:easy-rsa # ./build-ca
Generating a 1024 bit RSA private key
............++++++
...........++++++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [KG]:
State or Province Name (full name) [NA]:
Locality Name (eg, city) [BISHKEK]:
Organization Name (eg, company) [OpenVPN-TEST]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:OpenVPN-CA
Email Address [me@myhost.mydomain]:
#Debo hacer notar, que se te pedirán algunos parámetros, que no creo tengas problemas para llenarlos, algunos se podrán incluso dejar en blanco.
Ahora generaremos la llave y certificado para el servidor.
comando "./build-key-server server"
#Cuando se te requiera el "Common Name" escribe "server".
#Después seguirán dos preguntas, ponle "yes" a ambas.
Ahora solo nos vasta generar las llaves y certificados para nuestros clientes.
#En este paso, solo usare un cliente, ya que es el mismo procedimiento para el resto, es necesario crear llaves y certificados para cada cliente que deseemos conectar.

./build-key client1

Ahora vamos a generar los parametros para "Diffie Hellman"(protocolo para intercambio de llaves secretas).

comando:
./build-dh
Obtendremos una respuesta como esta:
ai:easy-rsa # ./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
.................+...........................................
...................+.............+.................+.........
......................................
Ahora configuraremos el archivo de nuestro servidor que se llama server.conf que debe estar en el directorio sample-config-files, dentro del directorio /usr/share/doc/openvpn/2.0
Puede que el archivo no aparesca, pero deberá existir un comprimido donde lo puedes obtener.
Buscaremos las 3 lineas siguientes:
ca ca.crt
cert client1.crt
key client1.key
y colocaremos el lugar a donde se encuentren los archivos que será el directorio key.
Esto es todo lo que tenemos que hacer en nuestro servidor, ya lo tenemos configurado, ahora sólo falta habilitar nuetro(s) clientes que se conectaran a la VPN.
Para lo anterior sólo necesitaremos localizar los siguientes archivos
ca.crt, client1.crt y client1.key, los cuales se localizaran en un directorio creado automáticamente llamado keys, si no lo encuentras, buscalo, no será dificil encontrarlos.
Después los vamos a copiar, a la una carpeta de nuestro cliente, la que queramos.
Ahora sólo falta modificar el archivo client.conf
Buscaremos las 3 lineas siguientes:
ca ca.crt
cert client1.crt
key client1.key
y colocaremos el lugar a donde hayamos copiado los archivos.

 

 
Buscaremos la linea remote y colocaremos la ip de nuestro server, quedaría algo así:
remote 192.80.0.1 1194
una vez hecho esto, habremos terminado deconfigurar nuestra VPN, ahora sólo faltaría abrir nuestro puerto UDP 1194 que es el que se emaneja por default, este puede ser cambiado, en el archivo server.conf
Ahora a probar la conexión.
En el servidor:
openvpn [dirección del archivo de configuración del servidor]
 
recibiremos:
Sun Feb  6 20:46:38 2005 OpenVPN 2.0_rc12 i686-suse-linux [SSL] [LZO] [EPOLL] built on Feb  5 2005
Sun Feb  6 20:46:38 2005 Diffie-Hellman initialized with 1024 bit key
Sun Feb  6 20:46:38 2005 TLS-Auth MTU parms [ L:1542 D:138 EF:38 EB:0 ET:0 EL:0 ]
Sun Feb  6 20:46:38 2005 TUN/TAP device tun1 opened
Sun Feb  6 20:46:38 2005 /sbin/ifconfig tun1 10.8.0.1 pointopoint 10.8.0.2 mtu 1500
Sun Feb  6 20:46:38 2005 /sbin/route add -net 10.8.0.0 netmask 255.255.255.0 gw 10.8.0.2
Sun Feb  6 20:46:38 2005 Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:23 ET:0 EL:0 AF:3/1 ]
Sun Feb  6 20:46:38 2005 UDPv4 link local (bound): [undef]:1194
Sun Feb  6 20:46:38 2005 UDPv4 link remote: [undef]
Sun Feb  6 20:46:38 2005 MULTI: multi_init called, r=256 v=256
Sun Feb  6 20:46:38 2005 IFCONFIG POOL: base=10.8.0.4 size=62
Sun Feb  6 20:46:38 2005 IFCONFIG POOL LIST
Sun Feb  6 20:46:38 2005 Initialization Sequence Completed

En el cliente:
openvpn [dirección del archivo de configuración del cliente]
recibiremos:
Una salida similar a la del servidor
Para probar la conexión deberiamos poder hacer ping a la siguiente ip.
10.8.0.1
Esto nos confirma que nuestra VPN y podemos acceder al otro equipo como si estuviera en red local.