OpenVPN – TUN

Antes de empezar vamos a necesitar un Servidor Ubuntu, yo aconsejo la version 12.0.4 ya que es la que estoy utilizando, pero posiblemente funcione en versiones anteriores y superiores.

Vamos a instalar el OpenVPN de la siguiente manera, adaptador TUN, y que permita a los usuarios conectados salgan por la red del servidor (enrutamiento) y puedan acceder a la red del servidor, pero no podrán realizar peticiones de broadcast ya que estarán en un rango de IP distinto.

Todos los pasos los realizamos mediante consola, y con el usuario root ya que se deben tocar muchos archivos con super usuario.

Instalamos el OpenVPN

apt-get update
apt-get install openvpn

Procedemos a crear los certificados necesarios y archivos de configuración.

mkdir /etc/openvpn/easy-rsa
rsync -avP /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/

A continuación editamos el fichero vars, para personalizar los parámetros que deseemos:

nano /etc/openvpn/easy-rsa/vars
export KEY_COUNTRY="AU"
export KEY_PROVINCE=VIC
export KEY_CITY=MELBOURNE
export KEY_ORG="OpenVPN-EXAMPLECOMPANY"
export KEY_EMAIL="admin@example.org"

Y ahora para generar los certificados, desde el directorio easy-rsa, ejecutamos los comandos:

cd /etc/openvpn/easy-rsa
source ./vars
sh ./clean-all
./build-ca
./build-dh

Te solicitara los datos que hemos introducido ya en vars por defecto, cambia common name por el nombre que tendra la VPN.

Primero generamos el certificado para el servidor:

./build-key-server server

Ahora creamos los certificados y llaves para los clientes

./build-key client1
./build-key client2

Todos los certificados creados los tienes en /etc/openvpn/easy-rsa/keys solo el root puede acceder

Copiamos los siguientes 4 archivos en /etc/openvpn/ son los necesarios para el servidor.

ca.crt
server.crt
server.key
dh1024.pem

A cada cliente debemos hacerle llegar de forma segura los ficheros más el archivo de configuración para la conexion VPN (client1.ovpn que mas adelante crearemos)

ca.crt
client1.crt
client1.key
client1.ovpn

Vamos a crear los ficheros de configuración, podemos encontrar ficheros de ejemplo en /usr/share/doc/openvpn/examples/sample_config_files los cuales podemos copiar a /etc/openvpn y modificar, o crear uno nuevo directamente. El fichero de ejemplo está bastante bien documentado con comentarios.

Te pongo un fichero de configuración a «pelo» básico apra arrancar:

mkdir /etc/openvpn/logs
nano /etc/openvpn/server.conf
#Aconsejo utilizar este puerto y protocolo (TCP) ya que casi siempre estará abierto para realizar las conexiones
port 443
proto tcp
#Tipo de conexión del adaptador
dev tun

#Ubicación de los certificados.
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh1024.pem

#Rango de direcciones que se asignará a los clientes, el server es .1
server 10.0.0.0 255.255.255.0
#Le indicamos al cliente que el Getway es el servidor y las DNS que utilizará.
#Si queremos que no se conecte a trabes del servidor comentamos o eliminamos la linea siguiente
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

#Esto indica que puede haber MAS de 1 cliente utilizando el mismo certificado al mismo tiempo
duplicate-cn

#ruta para que los clientes alcancen la LAN del server (enrutamiento)
push "route 192.168.1.0 255.255.255.0"

#Para que los clientes se puedan ver entre ellos
client-to-client
#Mantener la conexión activa
keepalive 10 120
#Compresión de los paquetes.
comp-lzo

persist-key
persist-tun

#Logs generados
verb 5
mute 20
log /etc/openvpn/logs/log-vpn.log
status /etc/openvpn/logs/status-vpn.log

Y reiniciamos el servicio para que los cambios tomen efecto:

/etc/init.d/openvpn restart

Recuerda abrir el puerto 443 apuntando a tu servidor.

Preparamos el archivo de configuración para el usuario, lo mismo el archivo de configuración que os dejo esta a «pelo»:

nano /etc/openvpn/easy-rsa/keys/client1.ovpn
#Indicamos que es conexión de cliente, tipo de dispositovp (TUN) y protocolo (TCP)
client
dev tun
proto tcp
#IP y Puerto del servidor Openvpn
remote IP_PUBLICA_SERVIDOR_VPN 443
#Intentar conectar continuamente
resolv-retry infinite
nobind
persist-key
persist-tun
#Ubicación de los certificados
ca ca.crt
cert client1.crt
key client1.key
#Compresión de los paquetes
comp-lzo
#Logs
verb 4

Ahora con esto ya esta todo listo para realizar SOLO la conexión.

Los siguientes pasos debemos de realizar para que el cliente pueda acceder a internet y a la red del servidor:

En el fichero:

nano /etc/sysctl.conf

Debemos añadir o modificar la línea:

net.ipv4.ip_forward=1

Con esto permitirá que puedan traspasar los paquetes de una red a la otra (red VPN a red física del servidor)

Ahora debemos crear una regla para que enmascare los paquetes de la red VPN a las demás redes:

iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE

Para que esta regla se conserve y no se pierda al reiniciar debemos de hacer lo siguiente:

mkdir /var/lib/iptables/
iptables-save > /var/lib/iptables/iptablesReglas
echo '#!/bin/sh' > /etc/network/if-up.d/inicioIptables
echo '/sbin/iptables-restore < /var/lib/iptables/iptablesReglas' >> /etc/network/if-up.d/inicioIptables
chmod a+x /etc/network/if-up.d/inicioIptables

Ya tenemos listo nuestro servidor, copiamos los 4 archivos que comentemos anteriormente para el usuario:

ca.crt
client1.crt
client1.key
client1.ovpn

Instalamos el cliente OpenVPN (Windows) de la pagian oficial http://openvpn.net/ segun tú versión de Windows o Ubuntu.

No tiene complicacion la instalación despues copiamos los 4 archivos en C:\Program Files\Openvpn\conf\*creamos carpeta\*aqui

Ejecutamos y conectar y listo ya podreis acceder a internet con la red del servidor acceder a el.

El servidor enruta todas las peticiones de los clientes de su VPN

Nota: Puedes hacer ping por IP a toda la red del servidor (EJ: ping 192.168.1.30) Pero NO podrás llegar a ver los paquetes de broadcast, esto quiere decir que si haces ping al hostname (EJ: ping PC-Generico) NO te devolverá el pong.

Para ello se utilizara el adaptador TAP que explicare mas adelante.

Así queda la foto:

VPN2

Cualquier duda preguntad!

Salu2!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.