domingo, 16 de septiembre de 2007

VPN sobre FreeBSD usando IPSEC

Os voy a contar brevemente como montar una VPN sobre FreeBSD usando el protocolo IPSEC y de paso cifrando con RACOON. Puede parecer muy complicado y que lleva mucho tiempo, pero vamos por partes primero

¿Qué es una VPN? pues sencillamente es una red privada virtual, y consiste en unir dos redes locales como las que podemos tener en la oficina por ejemplo. Sus ventajas son muchas puesto que unimos dos redes fisicamente separadas (ambas conectadas a internet) en una estructura de red por cable. Asi podemos compartir archivos entre pc's o imprimir en red como si solo fuese una sola red. La estructura queda más o menos como la que describo abajo:


Vamos a hacer la configuración para la primera máquina la configuración para la segunda será igual solo que cambiando los valores de las ip's y de las redes.

## ee /usr/src/sys/i386/conf/KERNEL

Añadimos en el kernel

options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPDIVERT

pseudo-device gif 4
options IPSEC
options IPSEC_ESP
options IPSEC_DEBUG

Si ahora es cuando toca recompilar nuestro kernel, deje en un post como se hacía pero en este caso vuelvo a repetirlo en este caso.

# cd /usr/src/sys/i386/conf
# config -r KERNEL
# cd ../../compile/KERNEL
# make depend && make && make install

Con esto ya tenemos el kernel recompilado y preparado para configurar la red, en este caso tenemos de ir a /etc/rc.conf y configurar la red

gateway_enable="YES"
defaultrouter="enlace1"
ifconfig_fxp0="inet publica1 netmask mascara Publica1"
ifconfig_fxp1="inet privada1 netmask 255.255.255.0"
router_flags="-q"
router="/sbin/routed"
router_enable="YES"
firewall_enable="YES"
firewall_script="/etc/rc.firewall"
firewall_logging="YES"
firewall_type="/etc/firewall.rules"
natd_enable="YES"
natd_interface="fxp0"
ipsec_enable="YES"
ipsec_file="/etc/ipsec.conf"
gif_interfaces="gif0"
gifconfig_gif0="publica1 publica2"
network_interfaces="fxp1 fxp0 lo0 gif0"
ifconfig_gif0="privada1 privada2 netmask
255.255.255.255"
static_routes="vpn"
route_vpn="-net red2/24 privada2"

Hemos añadido al kernel las opciones necesarias para activar el firewall y el natd ya que para poder movernos entre las dos redes necesitamos que nuestros dos servidores sean las puertas de enlace de las mákinas de sus redes respectivamente. También podemos ver que gif0 es el pseudo-dispositivo que utilizamos para enviar información a través de la vpn, o sea, el dispositivo por el que viaja la información a traves de la VPN.

No termina aquí todo, ni mucho menos falta configurar el firewall /etc/firewall.rules, establecer un tunel IPSEC /etc/ipsec.conf y por ultimo el cifrado del tunel con RACOON.

Más o menos la idea es esa, falta mucho más pues solo he dejado a medio camino, pero ya digo, para más información el HANDBOOK y las wiki's.

No hay comentarios: