viernes, 31 de julio de 2009


VPN con OpenVPN


Básicamente lo que haremos en este artículo será montar una VPN (punto a punto) del siguiente esquema de red.
Lo haremos simulando los routers(de color negro),por máquinas con S.O. Ubuntu 8.04, las cuales tendremos que programarlas para que funcionen como tal.

Aclaramos que el siguiente esquema de red a sido una simulación de como sería en internet, en este caso la LAN 172.17.0.0 ; y la zona 1,2,3 harían como nuestras LANs, es decir que las IPs de los routers de la zona 1 y el dela zona 2y3 son IPs fijas y públicas.

NOTA: Antes de proceder a configurar, hacer un backup de los ficheros originales.

1ro.- Especificaremos las ips, máscara de red, gateway, DNS(que te lo dá tu ISP), en este caso la IP es cualquiera del rango 172.17.0.0 con máscara 255.255.0.0, y el gateway en este caso es un servidor proxy 172.17.0.253, DNS 172.17.0.249 y 172.17.0.248, aquí como podemos ver las IPs son privadas porque como ya dije haremos una simulación.

2ro.- Configuramos nuestros ordenadores Linux para que hagan la labor de un enrutador, para eso modificamos el siguiente fichero:

sudo gedit /etc/ sysctl.conf

Y buscamos y descomentamos la siguiente línea:

a# Uncomment the next line to enable packet forwarding for IPv4

net.ipv4.ip_forward=1


COMENTARIO: Lo normal es que el router sea hardware puro y duro, pero que pasa si en tu empresa por algún motivo se estropea, o a lo mejor tu empresa recién empieza, y el jefe de turno no quiero gastar dinero en tecnología, en estos casos para salir del apuro podemos usar una máquina para que haga la labor de enrutador previa configuración de plan de direccionamiento, firewall.

3ero.- Procedemos a la descarga e instalación del openVPN en los dos routers de la siguiente manera:

sudo apt-get install openvpn openssl

Y detenemos el openvpn por que primero lo vamos a configurar :
sudo /etc/init.d/openvpn stop

4to.- Ahora configuraremos los fichero del openvpn:

ROUTER DE LA ZONA 2Y3 :

Creamos un fichero vpn1.conf en etc/openvpn/ , y escribimos la siguiente configuración:

##vpn1.conf
dev tun
remote 172.17.202.10 ## (Ip pública del router vpn de la zona 1)
float
persist-tun
port 5000
comp-lzo
verb 3
ping 15
ping-restart 120
ifconfig 192.168.10.1 192.168.10.2 netmask 255.255.255.0

##NOTA: La red virtual en este caso sería de la zona 1 su IP es 192.168.10.2 y ##de la otra zona es 192.168.10.1, de esta menara conseguimos que nuestros ##dos redes tengan conectividad entre sí.

secret /etc/openvpn/clave_vpn.txt
persist-key
route 192.168.3.0 255.255.255.0 ##(Esta ip es la red interna del router
##de VPNs de la zona 1)
user nobody
group nogroup
chroot /var/empty

Ahora generaremos la clave de seguridad que se llamará clave_vpn.txt que estará en etc/openvpn de la siguiente manera desde terminal :

sudo openvpn –-genkey –-secret /etc/openvpn/clave_vpn.txt

Ahora bien tenemos que enviar esta clave de seguridad para que puedan sincronizarse y validarse entre ambos routers, lo hacemos desde terminal con el siguiente comando:

sudo scp /etc/openvpn/clave_vpn.txt root@x.y.z.a:/etc/openvpn/
Donde x.y.z.a es la IP del router de la zona 1(es decir la IP pública).
Nos pedirá la contraseña de root, una vez escrita veremos que automaticamente aparecerá en el router de la zona 1 estar este fichero clave_vpn.txt (/etc/openvpn).

Ahora escribimos las siguientes ordenes desde terminal:

Modprobe tun
mkdir /var/empty
chown noboby.nogroup /var/empty

ROUTER DE LA ZONA 1

Creamos y configuramos el fichero vpn2.conf (etc/openvpn/) :

##vpn2.conf
dev tun
remote 172.17.202.1 ##(Ip pública del router principal zona 2)
float
persist-tun
port 5000
comp-lzo
verb 3
ping 15
ping-restart 120
ifconfig 192.168.10.2 192.168.10.1 netmask 255.255.255.0

secret /etc/openvpn/clave_vpn.txt
persist-key
route 172.20.0.0 255.255.0.0 ##(Esta ip es la red interna del router
##de VPNs de la zona 2)
user nobody
group nogroup
chroot /var/empty

Ahora desde terminal ejecutamos la siguientes órdenes:

Modprobe tun
mkdir /var/empty
chown nobody.nogroup /var/empty


5to.- Ahora de momento para que puedan verse tenemos que ejecutar un script con reglas de filtrado para que puedan verse la dos redes , el siguiente código se tendra que hacer en un fichero y ejecutarlo(en los dos routers) o escribir linea por linea por linea desde termina, con permisos de root(sudo):

iptables -A INPUT -i tun+ -j ACCEPT
iptables -A OUTPUT -o tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A FORWARD -o tun+ -j ACCEPT

6to.- Por último cargamos los ficheros de configuración de las VPNs(vpn1.con y vpn2.conf), tendremos que ejcutarlos en los dos routers:

Router de la zona 2:
openvpn ‐‐config /etc/openvpn/vpn1.conf

Router de la zona 1:
openvpn ‐‐config /etc/openvpn/vpn2.conf

**Para comprobarlo podemos hacemos un ping de la red 192.169.3.0 (IP interna de la red del router de la zona 1) a la 172.20.0.0 (IP interna de nuestra LAN), y veremos que tenemos conectivida o también podemos hacer un traceroute, previamente lo descargamos con apt-get install aptitude traceroute , también podemos hacer un ifconfig y veremos que nos aparece la red virtual.

Espero que os haya servido mi mi pequeña experiencia con el openVPN, cualquier duda, comenten.......





1 comentarios:

Anónimo dijo...

estupendo lo staba buscando lo vot a probar.......................

Publicar un comentario