OpenVPN – TAP

Antes de empezar hay que aclarar unos puntos. amos a necesitar un Servidor Ubuntu, yo aconsejo la versión 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 TAP, que el servidor asigne IP a los clientes del MISMO rango que la de la LAN en la que estamos, de esta manera los clientes podrán ver TODA la red interna y los usuarios de dentro de la red también podrá ver los clientes conectado al VPN, esta conexión es muy útil ya que incluso podemos UNIR dos redes como si se vieran físicamente, pero tiene su desventajas.

Antes de instalar debemos saber que rango está dando nuestro servidor DHCP (Router) EJ: 30 al 80, ya que nuestro servidor OpenVPN debe asignar otro rango de IP (EJ: 200-220) para que no se solapen las IPs y no de IP duplicadas.

En segundo lugar aconsejo cambiar el RANGO de ip de la red que no sea las básicas que tenemos todos… (NO hay que usar las: 172.16.x.x, 192.168.x.x o similares) YA que ocurre lo siguiente:

Si nuestro servidor esta en el rango de 192.168.1.X y vamos a una oficina que tienen el MISMO rango ya que es algo habitúal 192.168.1.X el cliente cuando realice la conexión no sabrá por que Gateway debe de salir ya que tiene 2 tarjetas de red (una virtual y otra física) con el mismo rango de IP. (Básico de redes no puedes tener mas de 1 tarjeta de red en el mismo rango de IP) así que aconsejo utilizar algo como 192.170.X.X y de rango C a ser posible.

Antes de comenzar con la instalación del OpenVPN vamos a modificar algunos datos y instalar alguna herramienta que necesitamos (ejecutamos todo como root):

Instalamos el paquete de bridge.

apt-get update
apt-get install bridge-utils
apt-get install openvpn

Modificamos la IP estática del servidor:

nano /etc/network/interfaces
auto lo
iface lo inet loopback

iface eth0 inet manual

auto br0
iface br0 inet static
    bridge_ports eth0
    address 192.170.1.10
    netmask 255.255.255.0
    network 192.170.1.0
    broadcast 192.170.1.255
    gateway 192.170.1.1

Reiniciamos y verificamos que tengamos IP y conexión con normalidad.

reboot

Creamos 2 scripts para activar y desactivar la tarjeta de red puente de la VPN

nano /etc/openvpn/down.sh
#!/bin/sh
PATH=/sbin:/usr/sbin:/bin:/usr/bin

brctl delif br0 tap0
nano /etc/openvpn/up.sh
#!/bin/sh
PATH=/sbin:/usr/sbin:/bin:/usr/bin

brctl addif br0 tap0
ifconfig tap0 0.0.0.0 up
sudo chmod 755 /etc/openvpn/up.sh /etc/openvpn/down.sh

Procedemos a la instalación, es muy similar al comienzo al dispositivo tipo TUN.

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:

sudo 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
#Puerto y protocolo de escucha
port 443
proto tcp
#Dispositivo tipo y numero
dev tap0

#Ubicacion de los certificados
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key
dh /etc/openvpn/easy-rsa/keys/dh1024.pem
#Permite certificados duplicados
duplicate-cn

#Indica: IP-Servidor - Mascara de red - Asignación de IP (inicio y fin)
server-bridge 192.170.1.10 255.255.255.0 192.170.1.160 192.170.1.170
#Para hacer el push de el Gateway y IP si quieres que no sea el Gateway el servidor elimina o comenta 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"

#Permite que los usuarios VPN se vean entre ellos.
client-to-client
keepalive 10 120
comp-lzo
persist-key
persist-tun

up "/etc/openvpn/up.sh"
down "/etc/openvpn/down.sh"
#Esto es necesario para que el OpenVPN pueda ejecutar las 2 scripts que hemos generado.
script-security 3 system


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

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

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 (TAP) y protocolo (TCP)
client
dev tap
proto tcp
#IP y Puerto del servidor Openvpn
remote IP_PUBLICA_SERVIDOR_VPN 443
resolv-retry infinite
#Intentar conectar continuamente
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

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

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: Con este tipo de conexión simulamos que estamos dentro de la red del servidor, no hace falta crear reglas de iptables ni enrutamiento.

Así queda la foto:

VPN - TAP

Cualquier duda preguntad!

Salu2!

Deja un comentario

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