Crear una red privada virtual (VPN) mediante OpenVPN es muy fácil y permite de manera sencilla conectar múltiples equipos de manera segura usando cualquier conexión a Internet. Cuando conectamos múltiples equipos surge la duda de como gestionar la comunicación entre ellos.
Cada equipo conectado a la VPN recibe una IP privada de un rango definido para esa VPN. El software OpenVPN permite configurar la VPN para que actúe como una red local de manera que la comunicación entre todos los equipos conectados puede realizarse directamente sin ningún filtro ni protección. Esto puedo ser útil en la mayoría de los casos, cuando todos los equipos forman parte de la misma organización y se busca la facilidad de configuración. Para conseguir este efecto utilizamos la directiva ‘client-to-client’.
La alternativa consiste en no indicar esa directiva. En ese caso el servidor OpenVPN lo que hace es reenviar los paquetes que pretenden ir de equipo a equipo dentro de la VPN al kernel del servidor donde se ejecuta. Este comportamiento nos permite, combinado con iptables, una flexibilidad total en la gestión de permisos. Podemos crear reglas que permitan o limiten el tráfico a nivel equipos y/o servicios (IPs y/o puertos).
Si además combinamos esto con subredes y múltiples instancias de OpenVPN tenemos poderosas herramientas para planificar nuestra red con el máximo detalle.
A continuación uno ejemplo de una configuración con dos instancias VPN, basado en un caso real, en el que tenemos una VPN de administración propia y otra VPN para clientes.
Introducción
La instalación básica del software es muy sencilla, se puede seguir el HOW-TO oficial para más detalles.Queremos montar varias VPN para nuestros clientes, queremos que dos usuarios de la misma VPN no se puedan ver, pero necesitamos que los usuarios de la VPN-Empresa si que puedan ver a los usuarios de otras VPN para poder tener acceso para administración de las maquinas.
Instalación
Primero tenemos que escoger un nombre para la nueva vpn, por ejemplo test.
Necesitamos un directorio donde generar los pares de claves para la nueva vpn, copiaremos los ficheros por defecto de /usr/share/doc/openvpn/examples/:
Modificamos el fichero vars del directorio /etc/openvpn/rsa-test modificando las siguientes lineas:
Ejecutamos los comandos para generar la Autoridad de Certificacion y las claves para el servidor:
Por ultimo necestamos un directorio donde guardar las ips de los clientes:
sb3:/etc/openvpn/rsa-test# mkdir ../ccd-test
Configuración
Servidor
En el directorio /etc/openvpn/ vamos a tener tantos ficheros server*.conf como VPN queramos. El fichero serverEmpresa.conf quedaria de la siguiente forma:
El fichero serverClientes.conf es el siguiente:
Las diferencias entre los dos ficheros son:
port: Cada VPN necesita un puerto diferente.
dev: Cada VPN tendra su porpia interficie de red.
server: Cada VPN tiene su rango de ip’s
client-config-dir: Cada VPN utilizara un directorio diferente donde indicar los usuarios que tiene.
push route: Cada VPN tiene sus propios push de rutas a los clientes, estos definen las VPN’s que van a ver los clientes, Por ejemplo la VPN de Empresa tendrà rutas para todas las otras VPN’s pero la VPN d’clientes, solo tendrà push a la de Empresa, porque no tiene porque ver las VPNs de los otros clientes.
certs: Cada VPN tendrà sus propios certificados
logs
Cliente
En el cliente, el fichero de configuración seria el siguiente:
La única operación importante és la linea ‘remote’, que es donde indicas qual és el servidor y el puerto donde esta la VPN, el puerto define a que VPN estas accediendo y los certificados si puedes acceder a ella.
Configuración de red del servidor
Para que en el servidor se puedan reenviar los paquetes entre las interficies de dos VPNs, tun51 y tun52, tenemos que permitir el ip_forwarding, para hacer esto tenemos que ejecutar la siguiente comanda:
echo 1 > /proc/sys/net/ipv4/ip_forward
Si tenemos prohibidos los FORWARDs entre interficies tendremos que ejecutar las siguentes reglas en el iptables: