Tuto de OpenVpn en Debian y derivados (Roadwarriors)

Que es OpenVPN

OpenVPN es un software creado por James Yonan en el año 2001 y que ha estado siendo mejorado desde entonces. Esta aplicación es una solución de conectividad basada en SSL, VPN, en síntesis nos permite crear VPN estables y muy seguras.

Es una solución multiplataforma que ha simplificado mucho la configuración de VPN’s dejando atrás los tiempos de otras soluciones difíciles de configurar como IPsec y haciéndola más accesible para gente inexperta en este tipo de tecnología.

En OpenVPN se pueden hacer tres tipos de configuraciones que son

  • Host a Host: esta configuración es una de la más fácil, se realiza un túnel seguro entre dos equipos, asignándole desde el servidor, el IP que tendrá el cliente. De esta manera ambos equipos pertenecerán a una misma red y compartirán archivos entre ellos

  • Red a Red: es una configuración muy utilizada para unir sucursales de empresas, se realiza de forma transparente, uniendo todas las redes involucradas como si fueran una sola. aplicación local.

  • RoadWarrior: es una de las configuraciones más utilizadas, ya que se pueden conectar muchos equipos clientes a un servidor y así todos estarán integrados a la misma red y podrán utilizar los recursos que se encuentren detrás de este servidor.

Vamos a crear una vpn con un servidor GNU/Linux y un cliente Window$, descargamos el soft opnevpn para windows desde http://openvpn.se/

Instalamos OpenVPN

# apt-get install openvpn

Copiamos los scripts de ejemplo en /etc/openvpn

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

Vamos al directorio donde copiamos los scripts

#cd /etc/openvpn/easy.rsa/2.0

Creando los certificados de autoridad

Ahora estamos dentro del directorio /etc/openvpn/easy-rsa/2.0 y lo que tenemos que hacer es generar el certificado de autoridad (CA), este se genera por única ves en el servidor y luego se copiara a los clientes, ahora creamos los certificados

#.vars

Cuando ejecutamos .vars lo que estamos haciendo es inicializar las variables de ambiente y aparecerá algo como esto:

NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/2.0/keys

Vamos a inicializar el directorio de claves

#sh clean-all

Y por ultimo

#sh build-ca

Con este paso se generara el certificado CA y nos pedirá varios datos

Creando certificado del servidor y la clave de encriptacion

Lo que vamos hacer es realizar la generación y el correspondiente certificado del servidor como también la clave de encriptación.

#sh build-key-server servidor

Certificado y clave de encriptación para los clientes

Como lo hicimos en el servidor lo mismo lo hacemos en el cliente, se no va a pedir distintos datos en el cual Country Name, State or Province, Locality Name y Organization Name tienen que ser los mismo que en el servidor.

#sh build-key cliente

Cada cosa en su lugar

Después de tener todas las claves generadas hay que copiar cada archivo en su lugar correspondiente. Las claves generadas se encuentran en /etc/openvpn/easy-rsa/2.0/keys y estas llaves, claves hay que mandarla a /etc/openvpn.

Servidor: los archivos que tenemos que copiar en el servidor son:

ca.crt

ca.key

servidor.key

servidor.crt

dh1024.pem

Cliente: vamos hacer lo mismo que en el servidor.

ca.crt

cliente.crt

cliente.key

Creamos la configuración del Servidor OpenVPN

# nano /etc/openvpn/server.conf

port 1194
proto udp
dev tun
persist-tun
ca ca.crt
cert servidor.crt
key servidor.key
dh dh1024.pem

#Direcciones que se asignaran a los clientes, el server es .1
server 10.1.1.0 255.255.255.0

ifconfig-pool-persist ipp.txt

#Ruta para que los clientes alcancen la red local del servidor

push “route 192.168.1.0 255.255.255.0″
client-to-client

keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 4

Configuramos el cliente

Dentro de la carpeta c:\archivos de programa\openvpn\config creamos un archivo llamado cliente1.ovpn.

tls-client
client
dev tun
proto udp
remote oaglp.ath.cx
float #debido a que la IP de arriba es dinamica
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert \cliente1.crt
key cliente1.key
comp-lzo
verb 4

Copiar dentro de esta misma carpeta los archivos cliente.crt, cliente.key y ca.crt.

Nota: en el parametro remote cree una cuenta en dyndns ya que tengo una ip dinamica

Ejecutamos el servicio OpenVPN en el servidor

# /etc/init.d/openvpn start

Nos conectamos desde el cliente (Windows)

Ejecutamos el GUI de OpenVPN, clic derecho en el ícono de OpenVPN, (es el nombre del archivo con extensión .ovpn) y luego connect.

 

Tags:

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de root
Excelente tutorial, muchas

Excelente tutorial, muchas gracias.

Un par de cositas que quisiera añadir para aclarar un poquito mas los ejemplos o que es bueno tener en cuenta para evitar inconvenientes:

En el archivo de config. del servidor hay que tener en cuenta que la linea:

push "route 192.168.1.0 255.255.255.0"

tiene que reflejar los datos de la LAN en cuestion, otras muy comunes serían 192.168.0.0, 10.0.0.0, etc. Y si en la LAN del lado del cliente se usa el mismo segmento, habrá que cambiarlo para evitar conflictos de rutas.

En el cliente, la linea remote debe ajustarse para que coincida con la ip o dns dinámico de cada caso.

Tampoco hay que olvidar verificar el firewall del server si es que tenemos alguno corriendo. Si quieren usar un puerto distinto al que usa Oscar en los ejemplos (1194 es el puerto por defecto para openvpn) Y tiene que ser a 1024, habria que comentar en el server las lineas de user y group porque un usuario sin privilegios no puede abrir puertos bajos.

Finalmente, comentar que trabajar sobre UDP tiene mejor rendimiento que TCP porque en general uno mete servicios TCP y se degrada (bastante) el rendimiento al encapsular TCP sobre TCP, hay chequeos redundantes de CRC, etc.

Enviado por root el Mar, 25/08/2009 - 23:15.
Imagen de oaglp
Si es verdad me falto

Si es verdad me falto aclarar la parte de push route, ademas al usar udp evitamos denegacion de servicio y escaneo de puertos tcp.

Me gustaria agradecer a Luis Wayar y a Daniel Ome que fueron las personas que me dieron una mano con openvpn y asi lo pude exponer en mi tesis y recibirme

Enviado por oaglp el Mar, 25/08/2009 - 23:24.

Inicio de sesión

CAPTCHA
Esta pregunta sirve para asegurarnos de que eres una persona y no un robot que envía spam
1 + 0 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.

Comentarios