Implementar VPN con Linux

noviembre 5, 2009 at 4:59 pm Deja un comentario

En este articulo prentendo explicar la forma de implementar una VPN a traves de Linux.

El esquema de desarrollo del presente articulo es el siguiente:

Esquema VPN Linux

La situacion sería la siguiente:

Una empresa desea conectar las redes de dos de sus sucursales con la sede principal.  De este modo se pueden acceder a todas las aplicaciones de la sede prinicipal ademas de otros servicios.

Sede Principal:

Nombre servidor: Servidor01

IP eth0(WAN): 190.10.10.10

IP eth1(LAN): 192.168.0.1

IP LAN: 192.168.0.0/24

Sucursal 01

Nombre servidor: Servidor02

IP eth0 (WAN):  190.10.10.11

IP eth1: (LAN)192.168.1.1

IP LAN: 192.168.1.0/24

Sucursal 02

Nombre servidor: Servidor03

IP eth0 (WAN):  190.10.10.12

IP eth1 (LAN): 192.168.2.1

IP LAN: 192.168.2.0/24

Para implementar dicha VPN vamos a hacer uso de la aplicación OpenVpn la cual esta bajo licencia GPL.

Pasos en el Servidor01:

Instalar openvpn:

apt-get install openvpn

Copiar los script para crear los certificados de seguridad

cp -a /usr/share/doc/openvpn/examples/easy-rsa  /etc/openvpn

cd /etc/openvpn/easy-rsa

abrir el archivo vars

nano vars

Modificar las siguientes variables:

export KEY_COUNTRY=CO
export KEY_PROVINCE=ATLANTICO
export KEY_CITY=BARRANQUILLA
export KEY_ORG=”FC CIA LTDA”
export KEY_EMAIL=”sistemas@fcr.com.co”

Guardar y salir del documento CTRL+X

Inicializamos las variables de extorno para los certificados:

.vars

Limpiarmos el directorio cd /etc/openvpn/easy-rsa

sh clean-all

Generamos el certificado CA:

sh build-ca

Este comando nos pedira la cierta información de la empresa, ya por defecto estan las modificadas en el archivo vars, el campo que no debemos dejar en blanco es:

Common Name (eg, your name or your server’s hostname) []: servidor01

Aqui devemos escribir el nombre de la maquina de linux.

Generamos el certificado y clave de encriptación para el servidor:

sh build-key-server servidor01

Al igual que el paso anterior nos pedira los datos de la empresa y el campo del hostname, deben ser iguales que el anterior.

Generamos el parametros de Diffie-Hellman así:

sh build-dh

Ya con lo ejeuctado en los pasos anteriores tenemos los siguientes archivos en el directorio /etc/openvpn/easy-rsa/keys:

ca.crt

ca.key

servidor01.crt

servidor01.key

dh1024.pem

Debemos copiar estos archivos en la carpeta /etc/openvpn

Ahora podemos crear los certificados para los servidores de las dos sedes con los siguientes comandos:

sh build-key servidor02

sh build-key servidor03

No olvidar que el campo Common Name (eg, your name or your server’s hostname) []: deben ir los nombres de los servidores (servidoro2 y servidor03 respectivamente).  Con esto ya tenemos los siguientes archivos en el directorio /etc/openvpn/easy-rsa/keys:

servidor02.crt

servidor02.key

servidor03.crt

servidor03.key

Estos archivos los vamos a utilizar cuando comencemos a configurar el openvpn el servidor de cada sucursal.

ahora creamos el archivo /etc/openvpn/servidor.conf

nano /etc/openvpn/servidor.conf

Agregamos lo siguiente al archivo:

port 1194
proto udp
dev tun

server 10.8.0.0 255.255.255.0

#—- Seccion de llaves —–
ca ca.crt
cert servidor01.crt
key servidor01.key
dh dh1024.pem
#—————————-

client-config-dir ccd
ifconfig-pool-persist ipp.txt
# Red Local
push “route 192.168.0.0 255.255.255.0″
# Red suscursal 01
route 192.168.1.0 255.255.255.0
# Red sucursal 02
route 192.168.2.0 255.255.255.0

client-to-client

# Sede principal

push “route 192.168.0.0 255.255.255.0″
# Sucursal 01
#push “route 192.168.1.0 255.255.255.0″
# Sucursal 02
push “route 192.168.2.0 255.255.255.0″

keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 4

Ahora debemos crear el directorio ccd dentro de /etc/openvpn/

mkdir /etc/openvpn/ccd

creamos dos archivos uno por sucursal con el nombre de los servidores:

nano /etc/openvpn/ccd/servidor02

y agregamos la red LAN de la sucursal:

iroute 192.168.1.0 255.255.255.0

Creamos el segundo archivo:

nano /etc/openvpn/ccd/servidor03

y agregamos la red LAN de la sucursal:

iroute 192.168.2.0 255.255.255.0

Hasta este momento ya tenemos configurado el servidor OpenVpn en la sede pricipal, ahora debemos iniciar el servidor openvpn:

/etc/init.d/openvpn restart

Para verificar si el servidor arranco bien puedes consultar el log del sistema:

tail -f /var/log/syslog

ó puedes verificar si la interfaz de red virtual de la VPN subió:

ifconfig

Te debe aparecer algo así:

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.8.0.1  P-t-P:10.8.0.2  Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
RX packets:19801109 errors:0 dropped:0 overruns:0 frame:0
TX packets:24662088 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:1645353739 (1.5 GiB)  TX bytes:2753119854 (2.5 GiB)

Otras consideraciones que debes hacer es la configuración de tu firewall:

1.  Debes habilitar el ip_forwarding:

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

2. Aplicar la regla para tener acceso al dispositivo tun0

# Aplicando reglas para OpenVPN
iptables -A INPUT -p udp –dport 1194 -j ACCEPT
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT

Ahora debemos configurar los clientes:

Instalar el servidor openvpn en cada servidor:

apt-get install openvpn

Tenemos que copiar los siguientes archivos a cada servidor en el directorio /etc/openvpn:

Servidor02:

ca.crt

servidor02.crt

servidor02.key

Servidor03:

ca.crt

servidor03.crt

servidor03.key

Estos archivos se encuentran en el directorio /etc/openvpn/easy-rsa/keys del servidor01.

En el servidor02 y servidor03 creamos el archivo /etc/openvpn/servidor02.conf y /etc/openvpn/servidor03.conf respectivamente.

Agregar las siguientes en /etc/openvpn/servidor02.conf

client
dev tun
proto udp
remote 190.10.10.10 1194  # direccion ip del servidor01
resolv-retry infinite
nobind
persist-key
persist-tun
#—— SECCION DE LLAVES ——–
ca ca.crt
cert servidor02.crt
key servidor02.key
#ns-cert-type server
#———————————
comp-lzo
verb 4

Agregar las siguientes en /etc/openvpn/servidor03.conf

client
dev tun
proto udp
remote 190.10.10.10 1194  # direccion ip del servidor01
resolv-retry infinite
nobind
persist-key
persist-tun
#—— SECCION DE LLAVES ——–
ca ca.crt
cert servidor03.crt
key servidor03.key
#ns-cert-type server
#———————————
comp-lzo
verb 4

Iniciamos openvpn en cada servidor (servido02 y servidor03) :

/etc/init.d/openvpn restart

Verificamos el log de systema (tail -f /var/log/syslog)  y las interfaces de red (ifconfig) para ver si aparece la interfaz tun0.

En estos momentos debemos tener conexión con las diferentes redes de la empresa, para realizar pruebas de conexion podemos hacer ping a cada servidor con su dirección IP LAN desde el servidor 01:

Ping al servidor02:

ping 192.168.1.1

Ping al servidor03:

ping 192.168.2.1

Si no da ping debes revisar los log y la configuración, muchas veces el problema esta en los certificados, si es necesario crearlos de nuevo hazlo.

Si te dan ping debes verificar ahora haciendo ping a cualquier equipo de la red local de cada sede.

Espero que te sirva de gran ayuda este articulo.  Gracias

Entrada archivada en:Linux. Etiquetas:, , .

Desarrollo de Aplicaciones Móviles Envio de SMS a través de puerto COM del PC mediante VB.NET

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Trackback este articulo  |  Suscríbete a los comentarios vía RSS Feed


Calendario

noviembre 2009
L M X J V S D
    dic »
 1
2345678
9101112131415
16171819202122
23242526272829
30  

Mensajes recientes


Seguir

Get every new post delivered to your Inbox.