Páginas

martes, 8 de marzo de 2011

OpenVPN

Configurar un escenario de pruebas openvpn seguro

Quiere crear un entorno controlado y seguro para probar openvpn?. Vamos a contruir un pequeño laboratorio de pruebas con tres ordenadores. Uno sera el ordenador remoto, el segundo el servidor y router OpenVpn, y el tercero la LAN. El ordenador que actue como servidor y router OpenVpn necesitara dos interfaces de Ethernet. De manera que sera posible probar las reglas de configuracion y cortafuegos de OpenVpn de un modo realista. Utilice cables de Ethernet y un conmutador.

Primero instale OpenVPN en el ordenador remoto y la maquina que hara de servidor OpenVpn. Todos los ordenadores ejecutan Linux, (trataremos otros clientes más adelante). En la mayoria de distribuciones Linux OpenVpn esta incluida, de manera que está a un emerge openvpn o apt-get install openvpn (gentoo y debian respectivamente).

La configuración de rutas puede resultar un poco confusa, sobre todo si tiene que dibujar diagramas de red para configuraciones sencillas (como me pasa a mi), así que tómeselo con tranquilidad y siga estos pasos. Más adelante puede cambiar direcciones y rutas.


El ordenador remoto y el servidor conéctelos directamente con un clave cruzado. Llamaré "tux" al servidor OpenVpn, "stinkpad" al cliente remoto y "server1" escenificará al resto de la LAN.

tux y stinkpad es necesario que estén en subredes diferentes. Nuestro direccionamiento de red será:

stinkpad
    eth0
    address 192.168.2.100
    netmask 255.255.255.0
    broadcast 192.168.2.255
    network 192.168.2.0

tux   
    eth0 - LAN
    address 192.168.1.10
    netmask 255.255.255.0
    broadcast 192.168.1.255
    network    192.168.1.0
   
    eth1 - INTERNET
    address 192.168.3.10
    netmask    255.255.255.0
    broadcast 192.168.3.255
    network    192.168.3.0
   
server1
    eth0
    address 192.168.1.76
    netmask    255.255.255.0
    broadcast 192.168.1.255
    network 192.168.1.0
    gateway por defecto 192.168.1.10

No hace falta cambiar las configuraciones de red actuales, serán utilizados temporalmente para las pruebas. No necesita tocar ningun fichero de configuración. Establecer las IP:

root@stinkpad # ifonfig eth0 192.168.2.100 netmask 255.255.255.0 up
root@tux # ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up
root@tux # ifconfig eth1 192.168.3.10 netmask 255.255.255.0 up
root@server1 # ifconfig eth0 192.168.1.76 netmask 255.255.255.0 up

Crear las rutas estáticas y activar el reenvio en tux, para permitir el flujo de los bits:

root@stinkpad # route del default
root@stinkpad # route add -net 192.168.1.0/24 gw 192.168.3.10 eth0
root@stinkpad # route add -net 192.168.2.0/24 gw 192.168.2.100 eth0
root@stinkpad # route add -net 192.168.3.0/24 192.168.2.100 eth0
root@tux # route del default
root@tux # echo 1 > /proc/sys/net/ipv4/ip_forward
root@tux # route add -net 192.168.2.0/24 gw 192.168.3.10 eth1

El comando route le permite ver sus rutas:

root@stinkpad # route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.3.0     stinkpad.local  255.255.255.0   UG    0      0        0 eth0
192.168.2.0     *               255.255.255.0   U     0      0        0 eth0
192.168.1.0     192.168.3.10    255.255.255.0   UG    0      0        0 eth0

Cometer errores es normal, con este comando puede eliminar las rutas:
# route del -net 192.168.2.0/24

root@tux # route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.3.0     *               255.255.255.0   U     0      0        0 eth1
192.168.2.0     tux.local       255.255.255.0   UG    0      0        0 eth1
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0

configuracion server1:
root@server1 # route del default

root@server1 # route add -net 192.168.2.0/24 gw 192.168.1.10 eth0
root@server1 # route add -net 192.168.3.0/24 gw 192.168.1.10 eth0

root@server1 # route
Tabla de rutas IP del núcleo
Destino         Pasarela        Genmask         Indic Métric Ref    Uso Interfaz
192.168.3.0     tux.local       255.255.255.0   UG    0      0        0 eth0
192.168.2.0     tux.local       255.255.255.0   UG    0      0        0 eth0
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0

Prbar la conectividad entre server1 y stinkpad:
root@server1 # ping -c3 192.168.2.100
PING 192.168.2.100 (192.168.2.100) 56(84) bytes of data.
64 bytes from 192.168.2.100: icmp_seq=1 ttl=63 time=0.535 ms
64 bytes from 192.168.2.100: icmp_seq=2 ttl=63 time=0.523 ms
64 bytes from 192.168.2.100: icmp_seq=3 ttl=63 time=0.553 ms

--- 192.168.2.100 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.523/0.537/0.553/0.012 ms

root@stinkpad # ping -c 3 192.168.1.76
PING 192.168.1.76 (192.168.1.76) 56(84) bytes of data.
64 bytes from 192.168.1.76: icmp_seq=1 ttl=63 time=0.469 ms
64 bytes from 192.168.1.76: icmp_seq=2 ttl=63 time=0.434 ms
64 bytes from 192.168.1.76: icmp_seq=3 ttl=63 time=0.511 ms

--- 192.168.1.76 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.434/0.471/0.511/0.036 ms

Ha configurado dos pasarelas por defecto y no sabe como eliminar una de ellas?, utilice este comando:
# route del default gw 192.168.1.10

Este diseño imita Internet. stinkpad solo necesita estar encaminado hacia tux, el enrutamiento en la LAN detrás de tux pasara a ser controlado por el servidor OpenVPN. Si añade más ordenadores no olvide ponerlos en la misma LAN que server1 (192.168.1.0/24) y convertir la IP de la LAN (192.168.1.76) en su pasarela por defecto.

Para las pruebas no es necesario tener pasarela (gateway) por defecto, contrariamente en las maquinas de produccion deberia tenerlas. "Stinkpad" (pc remoto), debe conectarse directamente con el router "tux". Dominios de emision diferentes necesitan enrutamiento entre si o un puente.

Siguiente --> Iniciar y probar OpenVPN:
to be continued...

Referencias:
Administracion de sistemas Linux. Tom Adelstein Bill Lubanovic
Redes en Linux. Carla Schroder

Linux es genial!.

No hay comentarios:

Publicar un comentario