OPENVPN Server Bridge en LINUX

Hoy explicare como configurar un servidor LINUX para comportarse como un Servidor de tunel Multi-cliente para que podamos conectarnos a nuestra casa o empresa desde cualquier parte del mundo, con una simple conexión de internet y que nos asigne direcciones IP de nuestra red privada, y podríamos ver los discos compartidos o imprimir en las impresoras de nuestra casa o trabajo desde cualquier parte. Y de una manera muy segura.

El OPENVPN es un servidor de tuneles gratuito OPENSOURCE pensado para empresas, y que nos ofrece una configuración muy rápida y eficaz. En este caso, veremos cómo se configura como BRIDGE (PUENTE), ¿Qué es lo que quiere decir BRIDGE? Este tipo de configuración no utiliza ruteo IP y lo que hace es un túnel IP to IP desde nuestro cliente hasta nuestro server, sin importar lo que hay en medio, encapsulando toda la información y solo abriendo esta en el destino. Esto genera que una vez conectados tengamos toda la sensación de estar con un cable directo a nuestra red privada. Esto a parte de seguro es práctico ya que todos los protocolos de distribución y broadcast de nuestra red, funcionaran perfectamente. NETBEUI/SAMBA/NFS. Traduciéndolo al porteño, podremos ver los discos en red, las carpetas compartidas de Windows, Linux o MACos y las impresoras en red.

VINCULO A LA WEB DE OPENVPN

Lo que vamos a hacer es instalar un servidor multicliente en un equipo LINUX, pudiendo ser desde un PC hasta un router con este tipo de firmware por ejemplo un router LINKSYS con el firmware de OPENWRT.

Y los clientes en este caso pueden ser WINDOWS o MACosx

En Windows necesitaremos instalar el programa gratuito que ofrece OPENVPN y configurarlo como cliente.

Config de cliente

Se crea un archivo con nombre conexión-con-servidor.ovpn en el directorio C:\Archivos de programa\OpenVPN\config


dev tap
proto udp
remote "dirección ip del servidor o nombre de DYNDNS" 5000
resolv-retry infinite
nobind
mute-replay-warnings
secret openvpn.key ;con la firma de clients copiada en el mismo directorio
comp-lzo
verb 3
;mute 20
Float

NOTA: recordemos que a cada cliente deberemos copiarle el archivo de firma generado anteriormente en el servidor, este al ser una firma digital o certificado, puede enviarse vía correo o transferirse en una llave usb. Pero hay que tener mucho cuidado que no caiga en malas manos, este archivo es como la llave de nuestra casa, quien lo tenga puede entrar en nuestra red privada.

OPENVPN.KEY

En Mac aunque no existe un programa OPENVPN, tenemos opciones varias, en mi caso he probado con VISCOSITY y funciona perfecto.

EL SERVIDOR

Lo primero que debemos hacer es instalar el programa OPENVPN, según la distribución de Linux el procedimiento es diferente:

Para los DEBIAN el comando es: apt-get install openvpn

Para los OPENWRT/FONERA/LINKSYS el comando es: opkg install openvpn

Luego de instalar el programa deberemos crear el archivo de configuración como servidor.

En este caso creamos un archivo llamado server.ovpn en el directorio creado para el túnel por ejemplo /etc/openvpn

Y ponemos dentro lo siguiente: pueden omitir los comentarios (lo que esté detrás de «;» )

port 5000 ; Puerto donde escuchara las conexiones nuestro túnel
proto udp    ;protocolo que utilizara la transmisión
dev tap0    ;Interfaz que utilizaremos para recibir las conexiones clientes
keepalive 10 120    ;configuraciones de tiempo de vida de las sesiones cada 10 segundos pregunta si la conexión está viva y si muere ;espera 120 segundos para cortar la sesión.
comp-lzo    ;compresión que utilizara la comunicación dentro del túnel
status /mnt/usbdrive/etc/openvpn/status.log    ;archivo de log, para guardar información de registro
verb 9    ;configuración de nivel de información del archivo de registro valores entre 3 y 9 siendo 9 el mayor detalle.
;mute 20    ;indica que cantidad de mensajes iguales deja pasar antes de dejar de presentar en logs.
secret /etc/openvpn.key ;llave de intercambio para utilizar de firma de conexión

Generamos la clave de intercambio (con el comando abajo explicado) la cual deberemos distribuir entre los clientes que quieran conectarse a nuestro servidor.

openvpn –genkey –secret /etc/openvpn.key

Necesitaremos también un script para el vínculo y creación de los puertos TAP0 en este caso haremos lo siguiente:

Creamos un archivo que se llame: startupscript

Vi /etc/openvpn/startupscript

Y pondremos dentro lo siguiente

#!/bin/sh
#/etc/openvpn/startupscript
# OpenVPN Bridge Config File
# Creates TAP devices for use by OpenVPN and bridges them into OpenWRT Bridge
# Taken from http://openvpn.net/bridge.html
# Define Bridge Interface
# Preexisting on OpenWRT
br=»br-lan»
# Define list of TAP interfaces to be bridged,
# for example tap=»tap0 tap1 tap2″.
tap=»tap0″
case «$1» in
up)
# Make sure module is loaded
insmod tun
# Build tap devices
for t in $tap; do
openvpn –mktun –dev $t
done
# Add TAP interfaces to OpenWRT bridge
for t in $tap; do
brctl addif $br $t
done
#Configure bridged interfaces
for t in $tap; do
ifconfig $t 0.0.0.0 promisc up
done
;;
down)
for t in $tap; do
ifconfig $t 0.0.0.0 down
done
for t in $tap; do
brctl delif $br $t
done
for t in $tap; do
openvpn –rmtun –dev $t
done
rmmod tun
;;
*)
echo «$0 {up|down}»
;;
esac

Y por ultimo creamos un archivo de inicio, para que arranque automáticamente el servidor.

Creamos un archivo de inicio.

Vi /etc/init.d/openvpn
#!/bin/sh /etc/rc.common
# Copyright (C) 2007 OpenWrt.org
START=70
BIN=openvpn
DEFAULT=/etc/default/$BIN
RUN_D=/var/run
PID_F=$RUN_D/$BIN.pid
start() {
[ -f $DEFAULT ] && . $DEFAULT
mkdir -p $RUN_D
/etc/openvpn/startupscript up
$BIN $OPTIONS
}
stop() {
[ -f $PID_F ] && kill $(cat $PID_F)
/etc/openvpn/startupscript down
}

Le damos permiso de ejecución con el comando CHMOD +X /etc/init.d/openvpn

NOTA: Dependiendo el caso, necesitaríamos agregar una lista de permisos en el servidor de firewall para permitir el acceso de nuestros clientes a la red privada.

En OPENWRT deberemos agregar las siguientes líneas al archivo /etc/firewall.user y reiniciar el servicio de firewall con /etc/init.d/firewall restart

# Allow incoming OpenVPN packets
iptables -A INPUT -p udp –dport 5000 -j ACCEPT
# Allow packets from TUN/TAP devices.
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A INPUT -i tap+ -j ACCEPT
iptables -A FORWARD -i tap+ -j ACCEPT

Cuando ejecutemos el servidor con el comando /etc/init.d/openvpn start

Podremos ver si está atendiendo al puerto con el comando netstat –an y buscar el puerto 5000 si aparece ya podremos conectar a los clientes.

Los comandos para comprobar que la conexión funciona son:

Ifconfig o ipconfig —- para saber qué dirección IP nos ofreció. Tiene que ser del mismo rango que nuestra red privada.

Traceroute o tracert —- para ver por dónde va el tráfico que enviemos a nuestra red privada, una vez conectados.

Y si verificamos estos pasos solo nos queda conectarnos a los equipos de nuestra casa u oficina.

Funciona tanto el procedimiento de ejecutar //nombre de host o IP…. Como el buscar equipo en red con el explorador.

Deja una respuesta

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.