Herramientas de usuario

Herramientas del sitio


doc:freebsd:seguridad002

¡Esta es una revisión vieja del documento!


VPN con FreeBSD y VTUN

Autor : Julio Guillermo Paredes Cornejo

Fecha : 21/12/2005

Introducción

Existen organizaciones que tienen diferentes locaciones cada una de ellas con un enlace a Internet ahora las ventajas que presenta tener todas estas redes enlazadas anima a muchos administradores en pensar en la implementacion de una VPNla cual permitiria que todas las maquinas de la organizacion se puedan ver sobre tunneles en Internet, este documento nos explicara como podemos levantar una VPN entre dos o mas redes que tienen como pasarelas FreeBSD.

Definición de la Red

Este es el diagrama de la red que se desea implementar.

 <=====================================================> Internet
             |                          |
 <=================>ISP A         <====================> ISP B
           |<-xl0                                    |<-xl0 
           |                                         |
           | tun0_______________________________tun0 | 
     ______|____/_                             _\____|______
    /             \                          /              \
   | FreeBSD A     |                         | FreeBSD B    |
    \_____________/                          \_____________/
           |<- xl1                                 |<- xl1
           |                                       |
    -------|--------                      ---------|-----------
    |  |  |  |  |  |                      |  |  |  |  |  |  |  |
    O  O  O  O  O  O RedA                 D  D  D  D  D  D  D  D RedB

Por el Lado de GWA tenemos:

xl0 -> Interface conectada a la Internet esta contiene la dirección real de la conexión A.A.A.A
xl1 -> Interface conectada a la Red de la Sucursal A tienen como ip 192.168.0.1
tun0 -> Interface creada por el VTun para realizar el tunnel esta tendra el ip 192.168.100.1
RedA -> 192.168.0.0/24 
O -> Maquina conectada a la RedA tiene como ip 192.168.0.*

Por el Lado de GWB tenemos:

xl0 -> Interface conectada a la Internet esta contiene la dirección real de la conexión B.B.B.B
xl1 -> Interface conectada a la Red de la Sucursal B tiene como ip 192.168.1.1
tun0 -> Interface creada por el VTun para realizar el tunnel esta tendra el ip 192.168.100.2
RedB -> 192.168.1.0/24 
D -> Maquina conectada a la RedB tiene como ip 192.168.1.*

Nuestro Objetivo es lograr hacer ping desde cualquier maquina O a cualquier maquina D, y por siguiente que se puedan compartir los recursos de las dos redes, como si estuvieran en la misma con la unica diferencia de la velocidad que estara limitada por las conexión a internet que tengan nuestras pasarelas.

En nuestras dos pasarelas instalamos el port de vtun:

sasha# cd /usr/ports/net/vtun
sasha# make all install clean

Nuestro caso vamos a configurar el FreeBSD A como servidor y el FreeBSD B como cliente, ahora bien una maquina puede cumplir las dos funciones al mismo tiempo; me explico para poder generar un tunnel es necesario un server y un cliente, el cliente hace la petición al servidor y se crea el tunnel, ahora es sencillo cuando existe una configuracion de dos redes donde solo existe un solo tunel pero en tres redes existen tres tuneles en ese caso existira algun gateway en la red que sea cliente y servidor a la vez.

Ahora procedemos a editar el archivo dentro del FreeBSD A que hara de servidor de la siguiente manera:

sasha#cat /usr/local/etc/vtund.conf
options {
 ifconfig /sbin/ifconfig;
 route /sbin/route;
}

default {
 type tun;
 proto tcp;
 compress zlib:9;
 encrypt yes;
 keepalive yes;
 stat yes;
 speed 0;
}

aqp1 {
 pass XXXX;

 up {
 ifconfig "%% inet 192.168.100.1 192.168.100.2";
 route "add 192.168.1.0/24 192.168.100.2";
 };

 down {
 ifconfig "%% delete down";
 route "delete 192.168.1.0/24";
 };
}
sasha# cat /etc/rc.conf | grep vtun
vtund_enable="YES"
vtund_flags="-s"

De la misma manera el archivo en la maquina cliente:

remote#cat /usr/local/etc/vtund.conf
options {
 ifconfig /sbin/ifconfig;
 route /sbin/route;
}

default {
 compress yes;
 speed 0;
}

aqp1 {
 pass XXXX;
 persist yes;
 proto tcp;
 encr yes;
 stat yes;
 keepalive yes;

 up {
 ifconfig "%% inet 192.168.100.2 192.168.100.1";
 route "add 192.168.0.0/24 192.168.100.1";
 };

 down {
 ifconfig "%% delete down";
 route "delete 192.168.0.0/24";
 };
}
remote# cat /etc/rc.conf | grep vtun
vtunclient_enable="YES"
vtunclient_flags="aqp1 A.A.A.A"

Notemos que cada archivo de configuración define los parametros de ruteo, solo nos resta reiniciar servidor cliente y listo.

Ahora es cosa de realizar pruebas desde cualquier maquina de la red A podrá realizar ping a cualquier maquina de la Red B.

Algo que me paso, que se puede replicar especialmente cuando son usuarios de ADSL con PPPoE es que los routers y/o modems no podrán ser alcanzados, desde la red foranea dados que estos dispositivos están realizando un tunnel para la conexión a Internet, por lo cual en ese caso en especial no podrán ser alcanzados, despues todas las demas maquinas no existiran ningún problema.

doc/freebsd/seguridad002.1194767045.txt.gz · Última modificación: 2022/03/02 08:18 (editor externo)