Guia VPN Parte 2 – OpenVPN RoadWarrior 2

may 30

Guia VPN Parte 2 – OpenVPN RoadWarrior 2

Siguiendo con la guía de VPN, ahora vamos a ver un anexo a la configuración RoadWarrior de OpenVPN. Es algo llamado “Client Config Dir” (ccd para los amigos de OpenVPN) y consiste en tener configuraciones diferentes por cada usuario que creemos en nuestro OpenVPN, en estas configuraciones podemos tener cosas como: el acceso a las distintas redes, la dirección ip que va a tener, etc.


Esto es útil en caso de tener una VPN con múltiples redes y usuarios, de esta forma queremos que cada usuario en particular tenga acceso a partes especificas de nuestra red.

Tomaremos el siguiente diagrama como ejemplo para esta parte.

Tenemos en este caso, un Firewall/Router el cual tiene conexiones (físicas o lógicas) hacia 3 redes, cada una con las direcciones IP indicadas. Si quisieramos que todos los usuarios de la VPN tuviesen acceso a todas las redes, sólo bastaria con agregar a nuestro archivo de configuración (/etc/openvpn/server.conf) lo siguiente bajo la línea “server 10.1.5.0 255.255.255.0

push “route 192.168.0.0 255.255.255.0″
push “route 10.10.1.0 255.255.255.0″
push “route 172.16.2.0 255.255.255.0″

Luego reiniciamos el servicio y todos los usuarios que se conecten tendrán acceso a esas redes (la tabla de ruteo se encargará de elegir el mejor camino para esa tarea).

Ahora, si queremos aplicar la siguiente configuración:

Usuario 1: Acceso a todas las redes
Usuario 2: Acceso solo a Red 1
Usuario 3: Acceso solo a Red VPN
Usuario 4: Acceso a Redes 1, 3

Debemos realizar las siguientes modificaciones:
- Primero, si tenemos algún comando “push”, debemos eliminarlo o comentarlo
- Comentar la linea “client-to-client”
- Agregar lo siguiente al archivo de configuración del servidor:

# Le decimos cual es el directorio que tiene los archivos de configuración por cliente.
client-config-dir /etc/openvpn/ccd/
# Le decimos que sólo debe trabajar con estos archivos (no toma configuraciones generales)
ccd-exclusive
Con esto ya tenemos lo necesario para comenzar a configurar los usuarios. Ojo que el directorio que configuremos debe existir.
Luego, sólo debemos crear los usuarios respectivos
$ cd /usr/share/doc/openvpn/examples/easy-rsa/2.0
$ source .vars
Usuario 1
$ ./build-key usuario1.spooky.cl
Copiamos ca.crt, usuario1.spooky.cl.crt y usuario1.spooky.cl.key al cliente.
Creamos el archivo de configuracion para el cliente
$ nano /etc/openvpn/ccd/usuario1.spooky.cl
con el siguiente contenido
# Le decimos cuales son las direcciones que tiene que tomar (impar y luego par)
# De la red definida en el parametro server
# recuerden que .1 y .2 estan reservados para el servidor
# Al final de esta guía se encuentra un anexo con los pares de direcciones permitidas
ifconfig-push 10.1.5.5 10.1.5.6
# Le damos acceso a la Red 1
push “route 192.168.0.0 255.255.255.0″
# Le damos acceso a la Red 2
push “route 10.10.1.0 255.255.255.0″
# Le damos acceso a la Red 3
push “route 172.16.2.0 255.255.255.0″
# Le damos acceso a la Red VPN
client-to-client
Usuario 2
$ ./build-key usuario2.spooky.cl
Copiamos ca.crt, usuario2.spooky.cl.crt y usuario2.spooky.cl.key al cliente.
Creamos el archivo de configuracion para el cliente
$ nano /etc/openvpn/ccd/usuario2.spooky.cl
con el siguiente contenido
# Le decimos cuales son las direcciones que tiene que tomar (impar y luego par)
# De la red definida en el parametro server
# recuerden que .1 y .2 estan reservados para el servidor
ifconfig-push 10.1.5.9 10.1.5.10
# Le damos acceso a la Red 1
push “route 192.168.0.0 255.255.255.0″
Usuario 3
$ ./build-key usuario3.spooky.cl
Copiamos ca.crt, usuario3.spooky.cl.crt y usuario3.spooky.cl.key al cliente.
Creamos el archivo de configuracion para el cliente
$ nano /etc/openvpn/ccd/usuario3.spooky.cl
con el siguiente contenido
# Le decimos cuales son las direcciones que tiene que tomar (impar y luego par)
# De la red definida en el parametro server
# recuerden que .1 y .2 estan reservados para el servidor
ifconfig-push 10.1.5.13 10.1.5.14
# Le damos acceso a la Red VPN
client-to-client
Usuario 4
$ ./build-key usuario4.spooky.cl
Copiamos ca.crt, usuario4.spooky.cl.crt y usuario4.spooky.cl.key al cliente.
Creamos el archivo de configuracion para el cliente
$ nano /etc/openvpn/ccd/usuario4.spooky.cl
con el siguiente contenido
# Le decimos cuales son las direcciones que tiene que tomar (impar y luego par)
# De la red definida en el parametro server
# recuerden que .1 y .2 estan reservados para el servidor
ifconfig-push 10.1.5.17 10.1.5.18
# Le damos acceso a la Red 1
push “route 192.168.0.0 255.255.255.0″
# Le damos acceso a la Red 3
push “route 172.16.2.0 255.255.255.0″
Luego de esto, reiniciamos nuestro servidor VPN y los clientes están listos para conectarse a las redes donde les es permitido. De todas formas esta no es la mejor medida de seguridad, ya que simplemente podemos agregar de forma manual las rutas en nuestros equipos clientes (usando route o ip route), se le puede agregar un nivel extra de seguridad configurando reglas con iptables.
Anexo – Pares de Direcciones permitidas
Cada par de direcciones en ifconfig-push representan direcciones IP virtuales de cliente y servidor. Deben ser  sacadas de subredes /30 sucesivas para que puedan ser compatibles con los clientes en Windows y el driver TAP-Win32. Específicamente sólo se pueden tomar los de este set de terminaciones. (Recuerden que el primer par está reservado para nuestro servidor VPN)
[  1,  2] [  5,  6] [  9, 10] [ 13, 14] [ 17, 18]
[ 21, 22] [ 25, 26] [ 29, 30] [ 33, 34] [ 37, 38]
[ 41, 42] [ 45, 46] [ 49, 50] [ 53, 54] [ 57, 58]
[ 61, 62] [ 65, 66] [ 69, 70] [ 73, 74] [ 77, 78]
[ 81, 82] [ 85, 86] [ 89, 90] [ 93, 94] [ 97, 98]
[101,102] [105,106] [109,110] [113,114] [117,118]
[121,122] [125,126] [129,130] [133,134] [137,138]
[141,142] [145,146] [149,150] [153,154] [157,158]
[161,162] [165,166] [169,170] [173,174] [177,178]
[181,182] [185,186] [189,190] [193,194] [197,198]
[201,202] [205,206] [209,210] [213,214] [217,218]
[221,222] [225,226] [229,230] [233,234] [237,238]
[241,242] [245,246] [249,250] [253,254]
Agradecimientos sobran para Gonzalo Seriche, por las incontables horas tratando de encontrar esta solución para uno de nuestros clientes.

4 comments

  1. Buenas, esta muy interesante tu tutorial y he seguido para te de el para configurar mi servidor, pero tengo un par de dudas:

    - Esto quiere decir que tengo un limite de clientes conectado 64 para ser exacto? hay una forma de tener mas de 64?

    - Hay algún web-gui para openvpn que no sea el mismo de su sitio web, ya que hay que pagar por cada cliente conectado?

    Gracias y esta excelente tu tutorial.

  2. Mahia /

    I prefer use the vpn ninja than the others, y quite better. You can take it from http://www.vpnninja.com

  3. mariofix /

    Hola nicolas, Vemamos… pueden ser varias cosas, lo primero es:
    - Tienes conectividad con el servidor a través de la VPN? si le haces ping a la ip 1, funciona?
    - La IP que te dió, está dentro de uno de los pares?
    - Algunos routers, no permiten el paso de paquetes de VPN, tienes que acceder a su configuracion e ir a las opciones de VPN, habilitar lo que ahi salga.
    - Si todo esto no funciona, agranda el numero de la configuracion de verbose (tanto en el cliente como en el servidor) para ver que es lo que ocurre.
    - Porsupuesto, da permisos o deshabilita el firewall local, si es que lo tuvvieses habilitado.

  4. Te hago una pregunta, yo tengo configurado todo como esta en tus guias… mi arquitectura de red es asi:
    Internet -> router -> servervpn
    El clientes se conecta bien pero no puedo ver la red, osea no puedo ver a los servidores ni las pc conectadas.
    El servidor vpn es un debian lenny.
    El cliente es un XP.
    Alguna ayuda? Gracias

Leave a Reply