Professional Documents
Culture Documents
Explicacin diagrama:
Master VPN
Esclavo VPN
Tunel VPN
Cliente 1
Cliente 2
Eth0 servidores
Eth1 servidores
Tun0 servidores
Eth0 clientes 1 y 2
Herramientas necesarias:
Este tutorial lo podemos hacer con virtualbox, vmware, qemulator... bueno, el virtualizador que
prefieras, yo usare virtualbox.
Tambin necesitaremos algunas imgenes 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,
ac solos les dir como implementarlo en Centos 5.3.
Maquina vitrual
Capacidad de disco
8 Gb
Memoria RAM
256
Video
12Mb
Red
*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 adems
la ip de nuestra maquina virtual como si fueran dos maquinas independientes.
interna o host only: esta configuracin hace que la tarjeta de red de nuestra maquina virtual sea
solo visible y accesible por nuestra maquina real.
Nat: esta configuracin 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
Video
12 mb
ram
256
red
dispositivos
Lectora de discos
Configuracin de las maquinas:
MasterVPN:
Ip eth0
192.168.1.100/24
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
Instalacin 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.61.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-suservidor luego les pedira una confirmacion y luego la clave del servidor a controlar.
Configuracin de openvpn:
Una vez instalado el OpenVPN se creara la siguiente estructura de directorios:
/etc/openvpn/
Ac crearemos un archivo donde guardaremos la configuracin para nuestro Master y Cliente:
#touch tunel.conf
Y editaremos el contenido de tunel.conf con los siguientes parmetros:(puedes copiar y pegar)
#nano tunel.conf (esto abre el archivo con el editor nano, pero puedes usar vim o el que quieras)
*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:
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)
Esto nos llerara 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 algun error, quequeen pueden haber puesto una mayuscula en el tunel.txt o la
configuracino 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 vern cualquier cambio en el
archivo).
Si todo esta bien deberiamos 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.
Si probamos hacer ping desde uno de los clientes al otro veremos que no esposible, 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 tunel,
por ejemplo: para el MasterVPN,
todas las peticiones desde la red interna convertirlas en peticiones de la red externa,
esto se traducira 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
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.
Adems tenemos que decirle a cada servidor que reconosca 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):