Instalar y configurar OpenVPN

Bueno una semana despues de ponerme a investigar, leer documentacion tengo lista la VPN... Hay tres formas de trabajar y son:
  • Host a Host: Es el método más simple, nos permite encriptar la comunicación entre dos PC las cuales deberán solamente tener conexión; es decir: ambas PC deben poderse enviar paquetes directamente ya sea porque estén conectadas en la misma red local, o porque ambas estén conectadas a la internet y sean alcanzables entre sí.
  • Road Warrior: Es una de las formas más utilizadas y solicitadas por los estudiantes. Es el permitir que una máquina de alguien que esté fuera de nuestra red (de forma temporal o permanente) pueda comunicarse con el servidor OpenVPN de nuestra red y una vez autenticado pueda entrar a ver y acceder los recursos de nuestra red local. En verdad es un caso especial de la conexión Red a Red que a continuación mencionamos:
  • Red a Red: Uno de los métodos más usados. Mediante ésta forma dos redes separadas en el espacio pueden comunicarse como si estuvieran unidas por un cable virtual. La comunicación entre ambas redes viajará encriptada una vez salgan de los servidores de openvpn y hasta que lleguen a su otro extremo.
Bien, despues de toda la teoria, vamos a lo que nos importa...
$ apt-get install openvpn openssl
$ cp -r /usr/share/doc/openvpn/examples/easy-rsa/ .

Bien, ¿qué es easy-rsa? son una serie de script, que nos ayudaran a crear nuestros certificados, rsa, etc. Ahora nos tocará limpiar el directorio (/etc/openvpn/) para evitar cualquier posible confuncion con claves anteriores, de la siguiente manera:
$ cd /etc/openvpn/easy-rsa/
$ . var
$ sh clean-all
$ sh build-ca -> de esta manera crearemos nuestra CA

Datos a tener MUY encuenta:
  • 1) Es MUY importante NO DEJAR EN BLANCO la variable Common Name.
  • 2) Editar el /usr/lib/ssl/openssl.cnf y cambiar "dir" dandole el path de donde queremos los certificados y demas claves, para evitar posibles errors. (Todo hay que decirlo: me costo, solucionar el error por no editar ese path) y lo digo para que no les pase lo mismo :D

Una vez dicho esto, generemos nuestro certificado para el servidor
$ sh build-key-server servidor
Bien, pues nada ya tenemos nuestros certificados, Ok, ¿donde estan? /etc/openvpn/easy-rsa/keys ; bien, ahora vamos hacer el/los de los clientes.
$ sh build-key casa
Ok, ya tenemos los certificados, ahora generamos el Diffie-Hellman de la siguiente manera:
$ sh build-dh
Ok, ahora copiamos las claves, certificados a /etc/openvpn/ :

Servidor:
  1. ca.crt
  2. ca.key
  3. server.key
  4. server.crt
  5. dh1024.pem
Cliente/s:
  1. ca.crt
  2. casa.crt -> fueron los nombres que le dimos cuando lo generamos.
  3. casa.key
Bien, ahora viene la creación del archivo de configuración.
$ vi /etc/openvpn/server.conf

port 1194 # Puerto por defecto de openvpn
proto udp
dev tun
ca ca.crt
cert servidor.crt
key servidor.key
dh dh1024.pem
server x.x.x.x x.x.x.x # Aqui asignamos la ip, que queremos que tenga nuestra red virtual
ifconfig-pool-persist ipp.txt
push "route x.x.x.x x.x.x.x" # Red interna con la que queremos tener comunicacion
comp-lzo
user nobody
group nogroup
persist-key # Necesario para user, group
persist-tun # Necesario para user, group
keepalive 10 30
status openvpn-status.log # Logs
log openvpn.log
verb 3

Bien, eso para el servidor y ahora el cliente seria...
$ vim /etc/openvpn/casa.conf
client
status openvpn-status.log
log openvpn.log
dev tun
proto udp
remote x.x.x.x # IP externa del servidor a donde queremos conectarnos
user nobody
group nogroup
persist-key
persist-tun
ca ca.crt
cert casa.crt
key casa.key
comp-lzo
verb 3

Una vez hecho esto... Solo nos queda lanzar nuestra vpn y disfrutar de las ventajas que nos da, espero que esta pequeña receta ayude. :-Ð

PD: Dos de los sitios que mas me ayudaron fueron:

http://laurel.datsi.fi.upm.es/~rpons/openvpn_como/
http://www.ecualug.org/?q=2007/02/06/comos/centos/c_mo_instalar_y_configurar_openvpn