Cómo configurar una VPN peer-to-peer

vpn peer-to-peer

La tecnología VPN es utilizada desde hace bastante tiempo en el ambiente corporativo para la conectividad remota, y aunque es una solución muy útil tiene algunas problemáticas que con el tiempo se han visto cada vez más expuestas. Por ejemplo, al centralizar todo el tráfico en el servidor VPN se requiere demasiado trabajo por parte de este para que dos clientes VPN se comuniquen entre sí, con lo cual con el paso del tiempo el servidor puede llegar a convertirse en el cuello de botella y limitar el rendimiento de la VPN en general.

Para subsanar esto es que ha surgido una variante muy interesante y es la de VPN Peer-to-peer o VPN P2P, un modelo que se basa en la tecnología P2P para mejorar lo ofrecido por las VPN tradicionales al descentralizar todo el tráfico que pasa a través de ellas, que ya no es administrado por un solo servidor sino que se distribuye a través de todos los clientes que se conectan a ella. Así pues, cualquier nodo que pasa a formar parte de una VPN puede hacer las veces de cliente y de servidor, ayudando a distribuir el tráfico hacia y desde cualquiera de los otros clientes.

En el mundo Linux, como es de esperar, tenemos varias opciones de VPN P2P, y una de ellas es n2n. Se trata de una alternativa libre disponible bajo licencia GPLv3, que nos permite armar una red VPN Peer-to-peer encriptada y ‘NAT friendly’, es decir que si dos usuarios que forman parte de esta red se encuentran conectados desde diferentes routers la comunicación se podrá realizar a través de la VPN sin problema alguno.

Veamos pues, cómo instalar n2n en Ubuntu:

$ sudo apt-get install subversion build-essential libssl-dev
$ svn co https://svn.ntop.org/svn/ntop/trunk/n2n
$ cd n2n/n2n_v2
$ make
$ sudo make install

Ahora configuramos la red P2P con n2n, y para ello tenemos que distinguir antes entre súper nodos y nodos estándar: un súper nodo es aquel que ofrece una dirección IP pública, es decir que esta será fija y conocida por quienes configuren la red, mientras que un nodo estándar es todo aquel se que conecta en forma dinámica a la misma.

Cada VPN P2P necesita de al menos un super nodo, que es el 10.0.0.1 para el ejemplo que vamos a mostrar aquí, y en ese equipo vamos a ejecutar lo siguiente, para indicar en que puerto va a trabajar esta VPN P2P:

$ supernode -l 5000

Luego, desde cada nodo estándar vamos a conectarnos a la red de la siguiente forma (damos 2 ejemplos, para 2 nodos distintos):

$ sudo edge -d edge0 -a 10.0.0.10 -c miredvpn -u 1000 -g 1000 -k contraseña -l 10.0.0.1:5000 -m ae:e0:4f:e5:40:5a

$ sudo edge -d edge0 -a 10.0.0.11 -c miredvpn -u 1000 -g 1000 -k contraseña -l 10.0.0.1:5000 -m ae:e0:4f:e5:40:5b

Algunos aspectos a tener en cuenta son los siguientes:

Nosotros establecemos la contraseña al configurar la VPN, en este caso detrás del parámetro -k (para nuestro ejemplo hemos utilizado la palabra ‘contraseña’, que desde luego no es algo que recomendemos para un uso práctico).

El parámetro -d nos permite especificar la interfaz virtual que se conecta a cada VPN, y lo interesante es que podemos configurar cuantas deseemos, una para cada red, de modo tal que un mismo equipo puede formar parte de un número infinito de redes VPN Peer-to-peer.

El parámetro -u nos permite especificar el usuario y grupo.

El parámetro -m nos permite especificar la dirección MAC que vamos a asignar a cada interfaz virtual, algo muy recomendable de hacer ‘a mano’ en lugar de dejar que sea la red la que lo asigne en forma dinámica y aleatoria ya que así evitamos que el tráfico hacia y desde un cierto nodo se demore mientras se actualizan las tablas de información de la red.

El parámetro -l nos permite especificar la dirección IP y puerto del súper nodo al cual vamos a conectarnos.

Ahora vamos a probar la red, enviando un ping desde un equipo hacia el otro de la siguiente forma:

ping 10.0.0.10

ping 10.0.0.11

Si todo marcha bien, debíeramos ver los paquetes que son enviados de un equipo hacia otro, lo cual quiere decir que hemos configurado perfectamente la VPN Peer-to-peer.


Categorías

Ubuntu

Willy Klew

Ingeniero en Informática, soy un fanático de Linux, Android, la programación, redes y todo lo que tenga que ver con las nuevas tecnologías. Ex... Ver perfil ›

7 comentarios

  1. Hola una pregunta, ¿Es posible conectarse a este tipo de VPN a través de smartphones?

    Gracias

    1.    alejandro dijo

      Estaría interesado en la respuesta a la pregunta que plantea el compañero Delgado, ya que utilizo un movil y un tablet con Android.

      Saludos

    2.    Willy Klew dijo

      José y Alejandro, hay un cliente para Android:

      https://play.google.com/store/apps/details?id=org.zhoubug.n2n_gui&hl=es_419

      Allí mismo en Play Store detallan los pasos a seguir para configurarlo.

      Saludos!

      1.    alejandro dijo

        Muchas gracias Willy, lo probaremos. Gracias por todos tus aportes. Saludos

  2.   alejandro dijo

    Por cierto, utilizo Mint con Cinammon y me imagino que la instalación y configuración será igual que en ubuntu…

    1.    Willy Klew dijo

      Yo en mi equipo utilizo Debian con Cinnamon y pude instalarlo sin problemas, luego lo probé en una imagen de Ubuntu en VMWare y también anduvo perfecto así que no creo que tengas contratiempos.
      Ojalá te sirva el cliente para Android, y si te funciona bien sería interesante que nos dejes un comentario aquí así puede servir de referencia a otros.

      Saludos!

  3.   emeoa dijo

    cito: $ sudo edge -d edge0 -a 10.0.0.10 -c miredvpn -u 1000 -g 1000 -k contraseña -l 10.0.0.1:5000 -m ae:e0:4f:e5:40:5a

    que significa el parametro -c miredvpn y -a 10.0.0.10, en cuanto a -d edge0, edge0 viene siendo la interfaz virtual que se conecta a la vpn; se puede cambiar o tiene que ser esta a fuerza?, y en cuanto a -u 1000 y -g 1000 ambos son usuario y grupo respectivamente?;;; se pueden cambiarr??

    y como se que la direccion ip del super nodo es 10.0.0.1 si en el comando que pones para asignarle la ip al supernodo (supernode -l 5000) solo especificas el puerto…

    y cual es el parametro que especifica a que red vpn pertenesco?

    perdon por todo esto pero creo que me quedaron estas dudas, gracias de antemano

Escribe un comentario