Tutoriales Varios

Como montar una VPN con openvpn

En muchas ocasiones necesitamos utilizar conexiones más seguras de las que el propio protocolo que vamos a usar nos facilita. (Por ejemplo, para una red inalámbrica).
En este Artículo se describe brevemente como montar una VPN con openvpn en 2 minutos.

Son muchas las veces que nos encontramos en lugares de "riesgo" (una red pública o inalámbrica) y necesitamos transmitir una serie de datos, que por unos motivos o por otros pueden ser sniffeados por alguien.
Es recomendable utilizar siempre protocolos ya encriptados, ssh, pop3s, imaps, https … pero hay ocasiones en las que no podemos prescindir de ellos y lo que queremos es dotarles de una mayor privacidad 🙂

Con openvpn vamos a poder tunelizar y encriptar todas las conexiones de una sola tirada, e incluso vamos a poder comprimilas, lo que puede aumentar el rendimiento de una red. (y aumentar también el uso de CPU de los nodos, claro)

VPN significa Virtual Private Network y como ya he dicho antes sirve para crear una conexión independiente punto a punto y poderla cifrarla.
Para instalar openvpn podemos bajarnos los sources y compilarlos de aquí o podemos buscar en el gestor de paquetes de nuestra distribucion … en debian # apt-get install openvpn.
Lo primero que tenemos que hacer es generar la clave que vamos a utilizar para la VPN, para ello:

# openvpn –genkey –secret clave.key

Ahora tenemos que copiar esta clave a los nodos que van a formar la VPN, sería interesante pasarla por scp o algún otro protocolo que facilite cifrado … no sería muy lógico pasarla por ftp :-).

# scp clave.key root@ip_segundo_nodo:/etc/vpn/clave.key

Es nesario recompilar el kernel habilitando soporte para:
Universal TUN/TAP device driver support
en Device Drivers -> Networking support.

Procedemos a cargar el módulo:
modprobe tun

Comprobamos que tenemos /dev/net/tun, si no existe lo creamos con:
# mknod /dev/net/tun c 10 200

Llegamos a lo mas importante, configurar el tunel, para ello explicaré cual es mi configuración de red, y pondré unos ejemplos, luego cada uno que lo adapte a sus requerimientos …

Como dije anteriormente, yo utilizo el tunel entre mi portatil y el servidor que tengo haciendo las veces de router dentro de la red wireless.
En la red wireless tengo el rango de ips 10.0.0.0/24 y para el tunel utilizaré el rango 10.0.1.0/24.
La ip del portatil es: 10.0.0.1 (si usas dhcp asegurate de configuralo adecuadamente para que siempre asigne la misma ip)
La ip del servidor es: 10.0.0.254

Finalmente solo nos queda lanzar openvpn de la siguiente forma:

*En el primer nodo (servidor):
# openvpn –remote 10.0.0.1 –dev tun0 –ifconfig 10.0.1.254 10.0.1.1 –secret /etc/openvpn/clave.key –daemon –comp-lzo
Donde 10.0.0.1 es la ip del segundo nodo (el portatil este caso), 10.0.1.254 es la ip del primer nodo dentro de la VPN (el servidor en mi ejemplo) y 10.0.1.1 es la ip del segundo nodo dentro de la VPN (el portatil).
Con –daemon lo lanzamos en segundo plano y con –comp-lzo habilitamos el uso de compresión.

*En el segundo nodo (portatil):
# openvpn –remote 10.0.0.254 –dev tun0 –ifconfig 10.0.1.1 10.0.1.254 –secret /etc/openvpn/clave.key –daemon –comp-lzo

Y ya tendremos una bonita VPN, ahora todo el tráfico que vaya encaminado hacia 10.0.1.254 pasará por dentro de la VPN y si algún sniffer quiere hacer la gracia, solo verá muchos y bonitos paquetes UDP 🙂

En mi caso, como usaba el servidor (10.0.0.254) como router tenia en el portatil como gateway 10.0.0.254, ahora quiero que utilice 10.0.1.254 que es más seguro, asi que:
# route del default gw 10.0.0.254
y
# route add default gw 10.0.1.254

Y con esto ya podemos preocuparnos algo menos de la privacidad de nuestras comunicaciones 😀

Por Javier Gonzalez
 (http://www.javier-gonzalez.com)