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.
- Inicie sesión o regístrese para enviar comentarios


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.
- Inicie sesión o regístrese para enviar comentarios
Enviado por root el Mar, 25/08/2009 - 23:15.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
- Inicie sesión o regístrese para enviar comentarios
Enviado por oaglp el Mar, 25/08/2009 - 23:24.