Cómo montar Túneles con OpenVPN sobre Debian


Al ver que en el wiki, no esta bien explicado como se monta un túnel con OpenVPN, y buscar información para montarlo, escribí este artículo para que nadie mas se perdiera en el proceso.

Micro documento sobre como montar una red de túneles cifrados en nuestro nodo con OpenVPN, para uno, o mas túneles cifrados, sobre red local o inet. ( Con clientes, o con otros nodos )

CONFIGURACIÓN

Para descargar OpenVPN, podemos buscarlo en source forge, y compilarlo, o bajarlo de las fuentes sarge de debian, aquí suponemos que lo estamos bajando.

Si compilaste el kernel según el manual howto-hostap de madridwireless, no tendrás problemas para hacer esto, si no has compilado el kernel con la opción TUN/TAP, situada en NetworkDevice Support. El meterla como módulo o dentro del propio kernel es indiferente, pero es más cómodo meterlo todo junto dentro.

Si lo metimos como modulo, hacemos modprobe tun

Descargamos desde las fuentes sarge

apt-get install openvpn > programa en si

apt-get install liblzo1 lzop openssl > Por si queremos comprimir trafico

Ahora iniciamos las interfaces:

mknod /dev/tap0 c 36 16

mknod /dev/tap1 c 36 17

mknod /dev/tap2 c 36 18

Según el numero de enlaces que queramos hacer, haremos más o menos interfaces.

mkdir /dev/net

mknod /dev/net/tun c 10 200

ln -s /dev/net/tap0 /dev/tap0

ln -s /dev/net/tap1 /dev/tap1

ln -s /dev/net/tap2 /dev/tap2

Lo mismo de antes, seguimos hasta la iface que deseemos.

si hemos metido el tun/tap como modulo:

metemos en /etc/modules.conf

alias char-major-10-200 tun

Asegurarse de no repetirlo si ya esta en este archivo.

CONFIGURACIÓN DEL TÚNEL

mkdir /etc/openvpn

cd /etc/openvpn

Creamos la clave en un equipo, y se la tenemos que pasar al otro equipo, pasarla codificada con gnupg o por scp

openvpn –genkey –secret clave.key

Creamos y editamos el tunel.conf

local [ip local]

remote [ip remota]

dev tun0

port 5000 [puerto elegido, puedes cambiarlo]

comp-lzo

user nobody

ping 15

ifconfig [ip del tunel local] [ip del tunel remoto]

secret /etc/openvpn/clave.key

Yo creo que la sintaxis es bastante clara.

Una aclaración: Si estas en red local, las ips, serán las privadas de las maquinas, si estas haciendo un túnel en inet, la ip local, será la privada de tu maquina, y la remota, será la publica de la maquina contra la que haces el túnel, es decir, la propia interna, y la del adsl/cable/etc de la otra punta del túnel. Por supuesto, en la otra punta del túnel, tendrás que poner lo mismo, pero con las ips cambiadas.

ATENCIÓN: MUY IMPORTANTE: Para todos aquellos que no tengáis una ip fija, la forma de hacer esto, es conseguir un dominio de tercer nivel, en dyndns.org, por ejemplo, y sustituir la ip publica en el tunel.conf, por esta DNS, que el openVPN lo soporta : )

Otro tema a tener en cuenta, es, si estas detrás de un router que haga NAT, deberás rutar los puertos que elijas a la maquina en cuestión, teniendo en cuenta, que estamos usando puertos UDP.

Una vez configurado todo esto, pasamos a levantar la iface:

openvpn –verb 5 –config /etc/openvpn/tunel.conf

Observamos que se queda esperando a una conexión por parte de la otra punta del túnel:

Peer Connection Initiated with [ip remota]:[puerto]

Hacemos lo propio en las dos puntas, y ya podremos probar a hacer ping a las ip de la otra punta del túnel.

En este punto debería devolver ping, si no es así, algo falla.

Esto puede ser por una equivocación con respecto a las ips del tunel, recordamos para los no muy duxos en el tema, que el tunel, tiene sus propias ips, al margen de las ips publicas o privadas, al final adjunto dos documentos tunel.conf, de los dos extremos del túnel, para ver esto.

configuramos el túnel para que lance un daemon al inicio.

Creamos un script de inicio:

vi /etc/init.d/openvpn.sh

Con el siguiente contenido:

#!/bin/sh

openvpn –daemon –verb 0 –config

/etc/openvpn/tunel.conf

Lo hacemos ejecutable:

Chmod 755 openvpn.sh

Lo metemos en el arranque:

update-rc.d -n openvpn.sh defaults

Si todo va bien:

update-rc.d openvpn.sh defaults

Volvemos a comprobar las conexiones

Y listo ya estamos en una VPN encriptada.

Ejemplos de Config:

local 10.1.1.1 ( La ip eth de mi nodo )

remote dollar-mailing.com (La Dns de un amigo, no es dinámica, pero la mia si lo es)

dev tun0

port 5001 ( Recordamos que son puertos UDP )

comp-lzo

user nobody

ping 15

ifconfig 172.16.0.1 172.16.0.2

secret /etc/openvpn/clave.key

La config del otro punto

local 192.168.0.4 ( Ssu ip interna )

remote estrella001.dyndns.org ( Mi maquina, con una dns dinámica )

dev tun0

port 5001

comp-lzo

user nobody

ping 15

ifconfig 172.16.0.2 172.16.0.1

secret /etc/openvpn/clave.key

Solo quiero aclarar, que esto no es documento propio, es una recopilación de varias paginas, las cuales, están todas en google, recordad, google es vuestro amigo : )

Copyright (c) 2003 Álvaro López Hornero. Se otorga permiso para copiar, distribuir y/o modificar este documento según los términos de la Licencia GNU Para Documentación Libre (GNU Free Documentation License), versión 1.2 o cualquier versión posterior publicada por la Free Software Foundation. Esta licencia está disponible en http://gnu.org/copyleft/fdl.html.

Álvaro López Hornero

bartlevi83@yahoo.es

V1.0 09/16

Etiquetas de Technorati: ,

OpenVPN-Connect-300x264

About Jordi Llorente

Extraño cocktail, un poco de ciencia, un poco de arte, y mucha pasión.