Está en la página 1de 10

VPN RED A RED

"La inteligencia es la habilidad de evitar hacer el


trabajo, consiguiendo el trabajo hecho"
Usuario Windows..posiblemente

Tutorial VPN básico red a red en Linux Rafael Paolo Campoverde Mariscal
Aviso al publico usuario: Todo lo que escribo en este
tutorial fue encontrado en tutoriales, revistas, clases,
PAGINAS WEB, etc, etc, pero como puede ser algo
confuso (para mi lo fue) acá les pongo un resumen
que ya comprobé que funciona.
Descripción: Tutorial configuración de de servidores vpn y clientes vpn con openvpn

Introducción a VPN: Wikipedia, san google, etc.

Diagrama de conexión:

Tutorial VPN básico red a red en Linux Rafael Paolo Campoverde Mariscal
Explicación diagrama:

Master VPN Servidor controlador de la VPN

Esclavo VPN Servidor cliente de la VPN creada por Master


VPN

Túnel VPN Red virtual creada entre los dos servidores a


través de la red física

Red local o internet Para este ejemplo puede ser un switch pero las
ips locales se pueden cambiar por las ip publicas
de los servidores conectados a internet.

Cliente 1 Computadora detrás del Master VPN, es decir en


su red interna.

Cliente 2 Computadora detrás del Cliente VPN, es decir


en su red interna.

Eth0 servidores Sera la tarjeta de red de cada servidor conectada


a un switch o a internet, permite conexión
directa entre servidores.

Eth1 servidores Sera la tarjeta de red de cada servidor conectada


a su respectiva red interna.

Tun0 servidores Tarjeta de red virtual activada por el servicio


openvpn al ser iniciado, esta tarjeta virtual sera
la que conecte a los servidores a través del túnel
virtual que se creara.

Eth0 clientes 1 y 2 Tarjeta de red conectada a la red interna, permite


conexión con sus respectivos servidores (Master
y Cliente) los cuales le darán salida a la red
interna al otro lado de la VPN.

Herramientas necesarias:

Este tutorial lo podemos hacer con virtualbox, vmware, qemulator... bueno, el virtualizador que
prefieras, yo usare virtualbox.

También necesitaremos algunas imágenes de sistemas operativos, para los servidores yo usare
centos 5.3 y para los clientes versiones ligeras de ubuntu (lubuntu y xubuntu) pero para los
servidores pueden usar Fedora, Ubuntu, RedHad, Debian, OpenSUSE, no se, el que quieran, claro,

Tutorial VPN básico red a red en Linux Rafael Paolo Campoverde Mariscal
acá solos les diré como implementarlo en Centos 5.3.

Preparación de las maquinas virtuales:

MasterVPN:

Tipo Maquina vitrual

Capacidad de disco 8 Gb

Memoria RAM 256

Vídeo 12Mb

Red Dos tarjetas de red (puente e interna)*

*VirtualBox permite configurar de tres formas la red de nuestras maquinas virtuales, La primera es
“puente o bridge”: esto hace que la tarjeta de red de nuestra maquina virtual aparezca como una
tarjeta independiente en la red, es decir, otro equipo en la red vera la ip de nuestro equipo y además
la ip de nuestra maquina virtual como si fueran dos maquinas independientes.
“interna o host only”: esta configuración hace que la tarjeta de red de nuestra maquina virtual sea
solo visible y accesible por nuestra maquina real.
“Nat”: esta configuración permite a la maquina virtual tener acceso a la red local o internet pero
utilizando la misma ip de la maquina real, traduce la ip de la maquina virtual (por ejemplo
10.0.0.10) a la ip de la real (192.168.1.10), para los otros equipos en la red solo existe la ip real.

Clientes 1 y 2:
Tipo Maquina virtual

Disco 8gb

Vídeo 12 mb

ram 256

red Una sola tarjeta en modo interno o solo anfitrión


o host only

dispositivos Lectora de discos

Configuración de las maquinas:

MasterVPN:
Ip eth0 192.168.1.100/24

Tutorial VPN básico red a red en Linux Rafael Paolo Campoverde Mariscal
Ip eth1 130.0.0.1/16

ClienteVPN:

Ip eth0 192.168.1.101/24

Ip eth1 131.0.0.1/16

Clientes 1 y 2:

Ip eth0 cliente1 130.0.0.10 / 255.255.0.0

Ip eth0 cliente2 131.0.0.10 / 255.255.0.0

Instalación de OpenVPN:

Primero tenemos que agregar los repositorios de sourseforge a nuestra lista de repositorios:

Descargamos el paquete

# wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-
release-0.3.6-1.el5.rf.i386.rpm

Instalamos la llave de DAG

# rpm –import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt

Finalmente instalamos el paquete

# rpm -ivh rpmforge-release-0.3.6-1.el5.rf.i386.rpm

Una vez agregado el repositorio, instalamos el openvpn:

# yum -y install openvpn


(-y responde “y” a cualquier pregunta, en este caso nos preguntara si queremos instalar openvpn).

Esto lo haremos en el cliente y en el master.

Les recomiendo configurar todo esto desde una ventana de ssh, por que mas adelante necesitaran
dos o hasta tres de estas ventanas.

Como se hace eso??, bueno primero instalan ssh en tu pc, si usan ubuntu “sudo apt-get install
openssh”, si no “yum install openssh” para centos,(aunque lo instala desde la instalacion del
sistema) redhad, fedora creo tambien.. bueno busquen en inter. Luego que lo instalaron abren una
consola (o abren al putty que es un cliente de ssh para windows) y escriben: ssh root@ip-de-su-
servidor luego les pedira una confirmacion y luego la clave del servidor a controlar.

Tutorial VPN básico red a red en Linux Rafael Paolo Campoverde Mariscal
Configuración de openvpn:

Una vez instalado el OpenVPN se creara la siguiente estructura de directorios:

/etc/openvpn/

Acá crearemos un archivo donde guardaremos la configuración para nuestro Master y Cliente:

#touch tunel.conf

Y editaremos el contenido de tunel.conf con los siguientes parámetros:(puedes copiar y pegar)


#nano tunel.conf (esto abre el archivo con el editor nano, pero puedes usar vim o el que quieras)

#este es el contenido de tunel.conf del MasterVPN


#ip del MasterVPN
local 192.168.1.100

#ip del ClienteVPN


remote 192.168.1.101

#tarjeta de red virtual


dev tun

#puerto por defecto del opnvpn


port 1194

#si quieres que se compriman los paquetes antes de ser enviados**


comp-lzo

#usuario nobody para que el servicio tenga los permisos minimos posibles, por seguridad
user nobody

#ip del Master en el tunel y del Cliente respectivamente


ifconfig 10.0.0.1 10.0.0.2

#hace pings cada 15 segundos por que alfunos firewals bloquean conexiones inactivas.
ping 15

#le decimos el archivo con la clave que usaran los servidores para autenticarse***
secret /etc/openvpn/clave.txt

#fin del archivo tunel.conf del Master.

Tutorial VPN básico red a red en Linux Rafael Paolo Campoverde Mariscal
*comp-lzo: al instalar opnvpn, seguro tambien se instalo lzo que es un programa que comprime los
paquetes antes de enviarlos, pues al cifrar los datos (funcion de una vpn) estos se hacen mas grandes
u por ende la conexino de hace mas lenta.

***/etc/openvpn/clave.txt: para evitar que cualquiera se una anuestra vpn la protejeremos con una
clave que solo conocen el Master y el Cliente, esta se genera en el Master escribiento el siguiente
comando:

#openvpn --genkey --secret clave.txt

Este comando genera un archivo (clave.txt) con una clave, este archivo se copiara en el ClienteVPN
por ejemplo usando SSH que encripta los datos para mayor seguridad:

# scp clave.txt root@192.168.1.101:/etc/openvpn/

Y este es el contenido del archivo tunel.conf en el Cliente:

#este es el contenido de tunel.conf del ClienteVPN

local 192.168.1.101
remote 192.168.1.100
dev tun
port 1194
comp-lzo
user nobody
ping 15
ifconfig 10.0.0.2 10.0.0.1
secret /etc/openvpn/clave.txt

#fin del archivo tunel.conf del Cliente

Tutorial VPN básico red a red en Linux Rafael Paolo Campoverde Mariscal
Iniciando el servicio:

Si hemos hecho todo bien hasta este punto, ya podemos iniciar el servicio con el comando: (primero
en el master y luego en el cliente)

# openvpn –config /etc/openvpn/tunel.conf

Esto nos llenara la ventana de mensajes indicando que se inicio el servicio y si todo esta bien
veremos algo parecido a esto en el master:

Fri Jul 30 00:40:38 2010 UID set to nobody


Fri Jul 30 00:40:38 2010 UDPv4 link local (bound): 192.168.1.100:1194
Fri Jul 30 00:40:38 2010 UDPv4 link remote: 192.168.1.101:1194
Fri Jul 30 00:40:39 2010 Peer Connection Initiated with 192.168.1.101:1194
Fri Jul 30 00:40:39 2010 Initialization Sequence Completed

y en el cliente:

Fri Jul 30 00:40:41 2010 UID set to nobody


Fri Jul 30 00:40:41 2010 UDPv4 link local (bound): 192.168.1.101:1194
Fri Jul 30 00:40:41 2010 UDPv4 link remote: 192.168.1.100:1194
Fri Jul 30 00:40:48 2010 Peer Connection Initiated with 192.168.1.100:1194
Fri Jul 30 00:40:49 2010 Initialization Sequence Completed

Si les sale algún error, pueden haber puesto una mayúscula en el tunel.txt o la configuración de red,
prueben hacer ping entre los servidores y si aun asi no funciona, vean el log del sistema que esta en:
/var/log/messages
, antes de verlo les recomiendo borrarlo:
echo “” > /var/log/messages
y luego pueden ir viendo que aparece con:
tail -f /var/log/messages
(el -f hace que siempre este en pantalla el contenido del archivo, así verán cualquier cambio en el
archivo).

Si todo esta bien deberíamos poder hacer ping a las interfaces tun de nuestro servidor y del otro
servidor, probamos:

ping 10.0.0.1 < nuestra ip virtual de MasterVPN


ping 10.0.0.2 < la ip virtual del ClienteVPN

si obtenemos respuesta todo esta bien.

Tutorial VPN básico red a red en Linux Rafael Paolo Campoverde Mariscal
Configuración de los Clientes 1 y 2:

En los clientes configuraremos las ip cono en el diagrama del principio, o también podemos poner
una ip y mascara temporal con el comando (esto en ubuntu) :

Cliente 1 del MasterVPN:

# sudo ifconfig eth0 130.0.0.10 netmask 255.255.0.0

y le agregamos la puerta de enlace que sera la ip interna de nuestro servidor MasterVPN:

# sudo route add default gw 130.0.0.1

Cliente 2 del ClienteVPN:

# sudo ifconfig eth0 131.0.0.10 netmask 255.255.0.0

y le agregamos la puerta de enlace que sera la ip interna de nuestro servidor ClienteVPN:

# sudo route add default gw 131.0.0.1

Si probamos hacer ping desde uno de los clientes al otro veremos que no es posible, esto es por que
los servidores aun no pueden conectar las redes internas con la virtual, para esto haremos un NAT
(traducir una ip en otra) de la red interna a la ip del túnel,

por ejemplo: para el MasterVPN,

“todas las peticiones desde la red interna convertirlas en peticiones de la red externa”,

esto se traduciría en un comando de iptables:

Este comando se ejecuta en el MasterVPN:

# iptables -t nat -A POSTROUTING -o eth1 --dst 131.0.0.1/16 -j MASQUERADE

Tutorial VPN básico red a red en Linux Rafael Paolo Campoverde Mariscal
y para el cliente:

Este comando se ejecuta en el ClienteVPN:

# iptables -t nat -A POSTROUTING -o eth1 --dst 130.0.0.1/16 -j MASQUERADE

donde eth1 es la tarjeta de red conectada a la red interna y 130.0.0.0 o 131.0.0.0 son las redes
internas destino.

Además tenemos que decirle a cada servidor que reconozca las redes destino internas y por donde
tiene acceso a ellas, por ejemplo, si quieres ir a la red 130.0.0.0 tienes que salir por la interface
10.0.0.2, para esto ejecutaremos el siguiente comando que agrega una red y una puerta de enlace:
Para el MasterVPN:

# route add -net 131.0.0.0 netmask 255.255.0.0 gw 10.0.0.2 dev tun0

Y para el ClienteVPN:

# route add -net 130.0.0.0 netmask 255.255.0.0 gw 10.0.0.1 dev tun0

Aun no podremos hacer ping, esto es or que tenemos que indicarle al sistema que permita el paso
de paquetes de una tarjeta de red a otra, para esto ejecutamos el siguiente comando en los dos
servidores (MasterVPN y ClienteVPN):

# echo 1 > /proc/sys/net/ipv4/ip_forward

Y listo!!! espero que les sirva, Suerte!!!

Si los puedo ayudar en algo: rafoalianza@hotmail.com

(Puedes hacer lo que quieras con este tutorial, menos modificarlo y hacerlo pasar por uno mio).

Tutorial VPN básico red a red en Linux Rafael Paolo Campoverde Mariscal

También podría gustarte