
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
V1.0 09/16
- Cómo solucionar pantalla negra en Windows 10 en un HP - Septiembre 13, 2017
- Cómo actualizar el firmware del Kingkong Q100 a Betaflight - Junio 19, 2017
- Alimentación PoE y SAI simple para AP - Junio 17, 2017
- Cómo montar una antena parabólica para un enlace P2P / PtP - Junio 14, 2017