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 una respuesta

Tu dirección de correo electrónico no será publicada.

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