jump to navigation

Configurar OpenVPN en debian 5/Ubuntu 10.4 y Mac OS/X 7 octubre, 2010

Posted by ubanov in Informática-Linux, seguridad.
Tags: , , ,
trackback

OpenVPN es un programa muy flexible para crear redes privadas virtuales (VPN). La idea es crear una red privada, sobre una red pública (Internet). Para asegurar que la red es privada se utiliza conexiones encriptadas, y los paquetes de red reales, se encapsulan en otros que van por Internet.

Yo he puesto el servidor en debian 5, y como clientes ubuntu 10.4 y Mac OS/X Snow Leopard (10.6.4), supongo que funcionará también con otras versiones.

La configuración que describo aquí es la configuración más simple que se puede hacer, esta basada en un fichero con una clave precompartida y en hacer routing entre los diferentes equipos. Esta configuración tiene la ventaja de su simplicidad y la pega de que sólo vale para conexiones punto a punto.

La descripción básica de cómo hacerlo se ha obtenido de la página: http://wiki.debian.org/HowTo/openvpn

Voy a empezar por la instalación en debian y ubuntu, y luego hablo de Mac.

En las dos máquinas (el servidor y el cliente) es necesario instalar el openvpn. En debian y ubuntu es tan simple como ejecutar:

apt-get install openvpn

Hay que ejecutarlo como root (para ello en ubuntu poner “sudo apt-get install openvpn”) y en debian utilizar la cuenta root.

En el que va a hacer de servidor ejecutar:

cd /etc/openvpn; openvpn –genkey –secret static.key

Esto nos creará la contraseña precompartida que se va a utilizar. La clave por ejemplo podría ser:

#
# 2048 bit OpenVPN static key
#
—–BEGIN OpenVPN Static key V1—–
78dea13d8bacb6f214e87869bd441216
a038bc422dde3f356ae50eefd840b07d
4aca598b6d0e5179acb3f21cda2eccba
fd084ed646de424db7fccc11a61e5f18
d9d3cd25e929c31f4013f85eacf93770
7172c57c1f508156f8259a3580ab8dc7
60d997bb366aedb02cf36fe71f77c17d
627f0abd06fcec58880554a24814ec1b
0d11d481823b1c0d2a6fa0f3d699a907
b05e07ed351b8b3c7ce7687c05f9927c
c9102437d2cf08adc42481a2f3def075
818bdd27b9167aaaa31a3229fdf543d2
115d90c4165bb12b4110870376140c8a
02ada6ee086ddeb6916632cba02a2b6d
8ebb96487afebf49a7abb5a483560d17
6764b49e7409f092ecd46bd39e8b091f
—–END OpenVPN Static key V1—–

 

Deberemos copiar este fichero sobre el equipo que va a hacer de cliente (no recomiendo utilizar el fichero que yo he puesto, cread uno vuestro, que no se tarda nada).

Crearemos el fichero de configuración del servidor con el siguiente contenido (por ejemplo /etc/openvpn/tunel.conf)

dev tun0
ifconfig 10.9.8.1 10.9.8.2
secret /etc/openvpn/static.key
cipher AES-256-CBC
keepalive 10 120

En caso de que tengamos un Firewall protegiendo al servidor, es necesario abrir el acceso al puerto UDP/1194 en el mismo.

En el cliente crearemos otro fichero de configuración con el siguiente contenido (/etc/openvpn/tun0.conf):

Configuración del cliente

remote direccion_servidor
dev tun0
ifconfig 10.9.8.2 10.9.8.1
secret /etc/openvpn/static.key
up “/etc/openvpn/rutas-up.sh”
down “/etc/openvpn/rutas-down.sh”
script-security 3 systemtc

direccion_servidor será la dirección ip o el nombre del servidor que tiene el openvpn abierto (puede ser un nombre dinámico al estilo dyndns).

Hemos puesto un par de scripts para ejecutar y crear unas rutas a las diferentes redes (si sólo queremos acceder al servidor que nos hace de VPN no sería necesario).

El contenido de los ficheros de script son los siguientes: por una parte el script rutas-up.sh contiene:

#!/bin/sh
route add -net 192.168.4.0/24 gw $5

Y el rutas-down.sh:

#!/bin/sh
route del -net 192.168.4.0/24

Para poder acceder a toda la red donde está conectado el servidor, será necesario hacer dos cosas más: habilitar el forwarding en el servidor (echo 1>/proc/sys/net/ipv4/ip_forward) y añadir rutas para que puedan llegar los equipos a la dirección 10.8.9.2 (lo mejor meterlo en el default gateway).

Por último he querido utilizar un Mac también como cliente, para ello he instalado el TunnelBlick 3.0 (vamos el openvpn para mac), después he copiado el fichero secret.key en el directorio /Users/ivan/Library/Application Support/Tunnelblick/Configurations (si no te llamas ivan ya sabes lo que debes cambiar😀 y en ese mismo fichero he creado el fichero openvpn.conf con el siguiente contenido:

remote ubanov.homelinux.com 1194
dev tun0
ifconfig 10.9.8.2 10.9.8.1
secret static.key
cipher AES-256-CBC
keepalive 10 120

Se podrían crear también los ficheros de rutas, por ejemplo el rutas-up.sh contendría:

#!/bin/sh
route add -net 192.168.4.0 -netmask 255.255.255.0 -gateway 10.9.8.1
route add -net 10.9.8.0 -netmask 255.255.255.0 -gateway 10.9.8.1

Ambos ficheros (el openvpn.conf y el secret.key) hay que ponerlos con permisos para el usuario root.wheel, y el segundo con chmod 600.

Antes hemos comentado que la conexión es punto a punto, es decir si quisieras poner conexión entre tres equipos a priori no sería posible hacerlo, pero lo que si se podría hacer es ejecutar dos servidores openvpn en un único servidor (y en un puerto diferente).

Por defecto el script /etc/init.d/openvpn sólo arranca si tiene un único fichero /etc/openvpn/*.conf, si hay varios no lo hace, salvo que cambiemos el fichero /etc/default/openvpn.

La siguiente que tengo que hacer es configurarlo en iPhone, aunque por ahora no lo estoy consiguiendo (me da un error al arrancarlo). Otro día será que hoy es tarde.

Comentarios»

1. Frank - 20 mayo, 2011

Esta bueno tu tutorial y sencillo a excepcion que para los que somos nuevos en esto y mas si es ubuntu (por que estamos acostumbrados a lo facil o sea a windows),se nos dificulta un poco y no vendria mal una explicacion un poco mas detallada, de todas formas buen trabajo gracias.


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: