| Cómo montar Túneles con OpenVPN sobre Debian |
|
|
|
| 10 de agosto de 2005 | |
|
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.
Technorati Tags: Álvaro López Hornero V1.0 09/16/03 vpn openvpn tuneles linux >> |
|
| Última Atcualización ( 26 de noviembre de 2005 ) |
| < Anterior | Próximo > |
|---|

