sábado, febrero 18, 2006

- OPEN VPN - Rapido


Imaginamos la siguiente configuracion de una red entre sucursal y casa matriz, que se quieren contectar a traves de OpenVPN.

{::INTRANET 1:::}--[:::::FW1:::]---{:INET:}--[:::FW2:::]---{::INTRANET 2::}
{192.168.1.0/24 }--[eth1:eth0]---------------[eth0:eth1]--{192.168.2.0/24}
------------------------[::::tun0:::]-----{VPN}----[:::tun0:::]-------------


Descripcion:

La red de casa matriz es la 192.168.1.0/24 y corresponde a INTRANET 1
La red de sucursal es la 192.168.2.0/24 y corresponde a INTRANET 2
FW1 es el Firewall de la casa matriz y FW2 es el Firewall de la sucursal.

Cada firewall tiene 3 dispositivos:
  • eth0: Interfaz da hacia internet, es una ip publica
  • eth1: Interfaz da hacia intranet, es privada (192.168.1.1 y 192.168.2.1 respectivamente)
  • tun0: interfaz de los extremos del tunel virtual de la VPN, (casa matriz tendra ip:10.10.10.1 y sucursal sera 10.10.10.254)

#Instalamos OpenVPN o compilamos OpenVPN
#Creamos directorio donde guardaremos la llave

$ mkdir -p /etc/openvpn

#Creamos un archivo con la clave compartida en ambos servidores

$ openvpn --genkey --secret static.key

#Copiamos la clave de un servidor a otro (reemplazar datos adecuadamente)

$(fw1)~/etc/openvpn/> scp static.key root@fw2:/etc/openvpn/static.key

# Levantar interfaz TUN, Kernel nuevos la traen

$ modprobe tun

#Comprobamos que tenemos /dev/net/tun, si no existe lo creamos con:

$ mknod /dev/net/tun c 10 200

#Creamos los archivos de configuracion para CasaMatriz y Sucursal
# Ojo: reemplazar IP_FW1 por la ip del FW1
--Archivo /etc/openvpn/casamatriz.conf --
dev tun
ifconfig 10.10.10.254 10.10.10.1
secret /etc/openvpn/static.key
comp-lzo
ping-timer-rem
persist-tun
persist-key
keepalive 10 60
resolv-retry infinite
route 192.168.2.0 255.255.255.0
-- Fin Archivo --
-- Archivo /etc/openvpn/sucursal.conf --
dev tun
ifconfig 10.10.10.1 10.10.10.254
secret /etc/openvpn/static.key
comp-lzo
ping-timer-rem
persist-tun
persist-key
keepalive 10 60
proto udp
remote IP_FW1 1194
resolv-retry infinite
route 192.168.1.0 255.255.255.0
nobind
-- Fin Archivo --

# Hechar a Andar la VPN
# En FW1 escribir:

$ /usr/local/sbin/openvpn --config /etc/openvpn/casamatriz.conf


# en el FW2 de la sucursal, ejecutar:

$ /usr/local/sbin/openvpn --config /etc/openvpn/sucursal.conf

# Voila, el que quede partiendo automatico se deja de tarea ... :P

########################
########################

# Otra caso. Se puede ejecutar la siguiente instruccion en cada nodo si ambos tienen IP's Publicos no dinamicos.
En FW1:

$ openvpn --remote IP_FW2 --dev tun0 --ifconfig 10.10.10.254 10.10.10.1 --secret /etc/openvpn/static.key --daemon --comp-lzo
y en FW2:
$ openvpn --remote IP_FW1 --dev tun0 --ifconfig 10.10.10.1 10.10.10.254 --secret /etc/openvpn/static.key --daemon --comp-lzo
#Y se deben agregar las rutas necesarias para cada Firewall vea la otra red:
#En FW1:
$ route -net add 192.168.2.0 gw 10.10.10.1
#En FW2:
$ route -net add 192.168.1.0 gw 10.10.10.254