client-to-client

Esta es una pagina de extensión del tutorial de OpenVPN, que esta destinado a permitir la comunicacion entre 2 o mas subredes utilizando el tunnel creado por OpenVPN, y pemitir la exportación de las rutas correspondientes.

Diagrama de conexion

Diagrama de conexion de 3 subredes utilizando OpenVPN

En la observacion final del tutorial de OpenVPN, decíamos que la comunicacion entre las subredes era factible, pero que estaba mas bien diseñada para ser unidereccional. Concluímos que las subredes del lado del cliente podían acceder a la subred principal del servidor, pero no a la inversa, la subred conectada al servidor no podía ver a las maquinas del cliente.

Según el diagrama, la subred 192.168.2.0/24 puede ver a la red 192.168.1.0/24, pero no a la inversa, y asi tambien la 192.168.3.0/24 puede ver a la red 192.168.1.0/24.

Este tipo de infraestructura es ideal para los casos en que las conexiones clientes necesitan usar recursos disponibles solo en la red local. Pero sabemos que no siempre es asi, muchos recursos pueden ser direccionados a las redes externas, y los miembros de la red local deben acceder a los mismos.

Para esto, vamos a expandir nuestros archivos de configuracion en el servidor, y ademas extender la seguridad tanto en servidores como clientes. Deberemos crear un directorio en el cual configuramos los clientes, y agregamos una lineas a nuestro servidor

Archivo de configuración del servidor: /etc/openvpn/servidor.conf

local 4.2.2.2
port 1194
proto udp
dev tun
ca ca.crt
cert "servidor".crt
key "servidor".key
dh dh1024.pem
server 172.18.1.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt
push "route 192.168.1.0 255.255.255.0"
client-to-client
client-config-dir ccd
route add 192.168.2.0 255.255.255.0
push "route 192.168.2.0 255.255.255.0"
keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log         /var/log/openvpn/openvpn.log
log-append  /var/log/openvpn/openvpn.log
verb 4

La linea “client-config-dir ccd” indica que los archivos de configuracion que se aplicaran a los clientes estan en directorio ccd, por lo cual deberemos crearlo.

mkdir /etc/openvpn/ccd

Luego, en ese directorio debemos crear un archivo de configuracion, con el mismo nombre usado en el nombre del certificado creado para el cliente.

touch /etc/openvpn/ccd/cliente

El contenido del archivo /etc/openvpn/ccd/cliente

iroute 192.168.2.0 255.255.255.0

Estas configuraciones permitiran que todos los clientes, y consecuentemente la red local puedan enrutar y acceder a las redes externas de forma trasparente, ultilizando el tunel creado por OpenVPN

28 comentarios en “client-to-client

  1. gracias por la informacion.

    he configurado un servidor openvpn y he logrado que la subred detras del servidor pueda acceder a la subred detras del cliente, lo que no he podido lograr es que la subred detras del cliente pueda acceder a la subred detras del servidor.
    Es esto posible?

    • Si, en general pueden suceder 2 situaciones, o es un problemas de rutas, o un problema de firewall. El servidor VPN es el que envia las rutas a los clientes, quizas los clientes no la estan recibiendo, o la reciben, pero no tiene cargadas las reglas especificas del firewall para permitirlo. Es muy raro que la red del cliente no acceda al servidor. Tu cliente VPN, es el ruteador principal de la red de los clientes o es una maquina mas, que simplemente hace conexion? Porque si no es el ruteador, al ruteador principal hay que decirle que para las rutas correspondientes a la subred del servidor, hablen con el cliente que esta en la red en cuestion.

      • Luego de varios intentos y pruebas he logrado lo siguiente:

        desde la sub red del servidor puedo ver las subredes de dos clientes., entre los clientes puedo ver sus subredes del otro cliente.
        pero desde la sub red de cualquier cliente no puedo ver la subred del servidor.

        el servidor y los clientes son los enrutadores de cada subred.

        cuando de cualquier equipo en una subred de cliente hago un ping a la ip interna del servidor llego, pero a ninguna otra dentro de la sub red.

        • De acuerdo a la imagen, no puede acceder a la ruta 192.168.1.0/24, y de acuerdo a lo que mencionas, esta relacionado con esta linea de código.

          push "route 192.168.1.0 255.255.255.0"

          Tus clientes ven la IP 172.18.1.1 (IP del servidor), per no ven la red, y es porque el servidor no esta “empujando” su red interna a los clientes.

          • Muchas gracias por tu ayuda.

            El problema se soluciono cuando el lab paso a produccion y se volvio el router principal.

            Todo se soluciono cuando el Lab paso a produccion y se volvio el router principal de la red que el servidor estaba dando “push” a los clientes.

  2. hola, muy bueno tu tutorial, una consulta he todo me sale bien no me da ningun error mis clientes vpn se conectan bien, pero la directiva:
    ifconfig-pool-persist /var/log/openvpn/ipp.txt

    no me graba las IPs de mis clientes, sabes como podria solucionarlo

    • Diego:
      Podria estar relacionado con los permisos sobre el archivo, si la directiva en el archivo dice ipp.txt (a secas) openvpn tratará de guardar el archivo en la carpeta de ejecución /etc/openvpn, en cambio si la directiva dice /var/log/ipp.txt, deberias de crear el archivo y dar permisos de escritura al usuario del proceso (user nobody), o si estas muy generoso chmod 777 /var/log/ipp.txt.
      Lo que hay que tener en cuenta es que en la configuracion client-to-client, uno especifica el archivo de configuracion con el mismo nombre del certificado emitido, y en ese archivo de configuración se puede especificar las ip estáticas que se pueden otorgar al cliente en cuestion, asi no es necesario guardar las direcciones en ipp.txt

  3. Hola tengo configurado una openvpn con un modem 3g como cliente, he hecho los pasos para crear el archivo ccd para poder acceder a la subred del cliente openvpn a donde tengo una camara conectada al modem 3g. En la vpn puedo acceder al cliente remotamente, sea al modem 3g con 10.8.0.6 sin problema, pero no puedo acceder a la camara y me gustaria tener ayuda ayuda sobre mi caso, ya que tengo el forwarding en el servidor (net.ipv4.ip_forward=1 . Gracias

    • famara: La cámara es una maquina conectada a la red del cliente, o es el cliente mismo?, si la camara es una maquina del cliente, debe tener cargada las rutas para responder correctamente. Si la camara es el cliente mismo, puedes probar enmascarando las peticiones a la misma.

      • Gracias por su respuesta rodolfo
        En mi caso la cámara es una maquina del cliente sea el modem 3g.
        Y me gustaría tener una idea de donde cargar las rutas: en la config del vpn o en el modem 3g?
        Gracias por su atención

  4. Buen día: Excelente explicación de este tutorial, sinembargo tengo el siguiente escenario: una sede principal con servidor openvpn el cual me otorga direcciones 10.8.0.x a una sede lejana via internet. Este servidor posee 2 tarjetas de red una para lan y otra para wan, por la wan me ingresa el trafico de la sede, y por la lan le doy servicio de un aplicativo local. Todo funciona sin problemas, uso openvpn. Pero me surge una pregunta; yo requiero que otras 2 sedes se conecten a este servidor, pero que al conectarse cada una de esas sedes yo pueda acceder a cada red local para ingresar a un aplicativo que funciona solo en cada una de esas sedes. Con el modelo propuesto en este tutorial, funcionaria? Gracias

    • pfsense, según tengo entendido, podía gestionar el mismo los certificados y las configuraciones de conexion por VPN a través de la interfaz de administración. Este tutorial no se aplicaría, ya que no necesitarías ingresar ningun comando o editar ninguna configuración, pues la interfaz gráfica realizaría esas tareas.

      Si no necesitas que el router realice las tareas de conexión de VPN, se puede “delegar” la tarea a otra maquina (virtual o real) y que el pfsense haga solo la redirección de puertos. De esta forma, se traslada el “costo” de procesamiento o incluso el aislamiento de redes a otra maquina. En ese caso si, la maquina debería configurarse usando este tutorial, y modificando a tus necesidades.

      Ambas soluciones son factibles.

  5. Estimado Rodolfo

    Quiero realizarte una consulta, un servidor openvpn que funciona como cliente puede alojar a otras sub redes como hijos y de esta forma ampliar la red. Y como podría confirarse si es el caso o cual sería la solución de ello.

    Gracias.

    • Todo depende de las rutas de redes, pero si, un servidor puede exportar a todos sus clientes todas las redes que se quieran, si las rutas direccionan a sus redes internas a la VPN

  6. Tengo un servidor openvpn en linux(ubuntu) y sus clientes tanto en linux como en windows al conectarse a la vpn pierden comunicación con su red local y internet com o puedo hacer para que se conecten a la vpn y tengan comunicacion con las PCs locales y tenga internet

    • Eso me pasó en una ocasión cuando tanto la red LAN y la red de la VPN se superponían. Porque buscaba las rutas por defecto en la VPN y no a través de la interfaz de red

  7. Ayudame por favor me conecto con el cliente openvpn pero pierdo internet como hago para conectarme con openvpn en cliente windows y poder navegar en internet, la conexion openvpn solo la utilizo para base de datos

  8. Hola, te comento que tengo un inconveniente al momento de levantar el tunnel site-to site , puedo realizar ping desde la LAN cliente hacia la lan del Server, pero no viceversa ya he revisado el tema de permisos, pero aun sigo sin dar con el error,

  9. Buenos días,

    Tengo instalado OpenVPN en Windows y necesito saber que debo modificar para que el equipo tenga la misma dirección IP al momento de conectarse.

    Feliz día.

  10. Tengo instalado OpenVPN en Windows y necesito saber que debo modificar , o agregar para que el equipo remote (casa) pueda ver todas las subredes de la oficina …
    Ejemplo :
    172.20.184.X (si las veo)
    172.20.185.X (si las veo)
    172.20.8.X ( no la veo)
    que debo de gacer
    uso el endian 3.2.1
    y el cliente openvpn

  11. Hola muchas gracias por sus aportes. Mi consulta es la siguiente: Tengo una pequeña planta telefónica con Asterisk detrás del Firewall PfSense, configuré OpenVpn en el firewall; los clientes openvpn se conectan y usan los servicios de la red local que están detrás del Firewall, pero con una excepción que estos clientes no se registran en la planta Asterisk a través del Softphone (X-lite o MicroSIP). Por interfaz web los clientes acceden a la ip de Asterisk, pero, por el Softphone no accede a esa misma ip.
    *Nota: Asterisk está configurado para permitir conexión desde cualquier ip.

    • Hola Salvador, que bueno que te pareció interesante. Respecto a tu consulta, es mi experiencia que casi todos los problemas con las VPN mas alla de “crearla” tienen que ver con rutas o permisos de red. Te diría que si hay acceso por web (protocolo HTTP, puerto 80), pero no hay acceso por otros puertos debieras de validar eso, quizas hay reglas permisivas en el firewall desde y hacia la VPN para ese puerto, pero no para otros. También con respecto a rutas, muchas veces se usan proxys reversos en el trafico web, y esos proxy reverso tiene cargadas correctamente las rutas desde y hacia los clientes VPN, no así los otros servidores, y es necesario que el servidor en cuestion (Asterisk) pueda enrutar correctamente los paquetes que envías hacia los clientes VPN, muchas veces eso no se hace correctamente si segun mencionas el pfSense pudiera no ser la puerta de enlace predeterminada del servidor por ejemplo, o por falta de permisos también en los sentidos server->cliente, cliente->server

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.