[COMO] Instalar y configurar VPN

Imagen de Gabriel_M
11,541 puntos

V.P.N.
Redes Privadas Virtuales, son redes remotas que se conectan entre sí de forma segura, usando para esto un medio inseguro como puede ser Internet.
Fundamentalmente existen dos tipo de conexiones VPN
Red a Red, es un tunel conformado entre dos redes, en cada punta del tunel hay un servidor que se comunica con el otro, una vez autenticado, se forma una red entre ellos y los ordenadores conectados a cada uno de ellos podrán compartir recursos entre sí.
RoadWarrior, en este caso, clientes remotos por medio de una aplicación instalada en sus equipos se conectan al servidor, previa asignación de una Ip con la cual se incorporan a la red local.
Openvpn, es la aplicación, existente en los repositorios de Ubuntu, que permite la impelmentación de estas redes privadas virtuales.
Para poder realizar la instalación y configuración de la aplicación Openvpn, antes de nada habrá que descargar los paquetes necesarios a tal efecto. En este caso, si ambas máquinas funcionan bajo Linux habrá que instalar Openvpn en ambas y configurar una como servidor y otra como cliente. En el caso de que el servidor funcione bajo Linux pero el cliente sea una máquina Windows, habrá que instalarle el cliente adecuado para poder establecer la red virtual.
Es necesario instalar de los repositorios openvpn y openssh

sudo apt-get install openvpn openssh

A continuación, luego de efectuada la instalación, se debe generar la clave privada, esta clave tienen que poseerla tanto el servidor como el cliente, con lo cual, tras generarla en el servidor, hay que colocarla en el directorio correcto del mismo y a su vez copiarla al cliente mediante un medio que no comprometa la seguridad de la clave, tal como por ssh, se hace con los comandos:

sudo openvpn --genkey --secret secret.key
sudo cp secret.key /etc/openvpn/
sudo scp secret.key ip_del_servidor:/etc/openvpn/

Configuración host to host, se utiliza para que el intercambio de paquetes entre dos máquinas se realice de forma encriptada. Para ello se crea una interfaz virtual con una IP privada a cada extremo. Se tomará como ejemplo la 192.168.2.1 como la IP del servidor y la 192.168.2.2 como la IP del cliente. Cualquier paquete que viaje entre ambas direcciones lo hará encriptado.
En el servidor, para editar el archivo /etc/openvpn/server.conf, ejecutamos

sudo nano /etc/openvpn/server.conf

En el archivo se deben colocar al menos las líneas siguientes:

#/etc/openvpn/server.conf
# dispositivo de tunel
dev tun
# ifconfig ip_del_servidor ip_del_cliente
ifconfig 192.168.2.1 192.168.2.2
# Clave del servidor
secret /etc/openvpn/secret.key
#puerto (por defecto el puerto de VPN es el 1194)
port 1194
#usuario bajo el cual se ejecutará la VPN
;user nobody
;group nobody
# opciones, comprimir con lzo, ping cada 15 segs, verbose 1 (bajo)
comp-lzo
ping 15
verb 1

En el cliente, para editar el archivo /etc/openvpn/cliente.conf, ejecutamos:

sudo nano /etc/openvpn/cliente.conf

En el archivo se deben colocar la menos las siguiente líneas:

#/etc/openvpn/cliente.conf
# IP publica del servidor. En caso de no tener una IP pública fija, optar por opciones como dyndns.
remote pfc-server.dyndns.org
# puerto
port 1194
# dispositivo tunel
dev tun
# ifconfig ip_del_cliente ip_del_servidor
tun-mtu 1500
ifconfig 192.168.2.2 192.168.2.1
# Clave privada, secret.key 
# Una posible ruta para la key en Windows comentada.
#secret "c:\Archivos de programa\branded vpn\config\key.txt"
secret /etc/openvpn/secret.key
# enable LZO compression
comp-lzo
# ping cada 10 segs
ping 10
# compresión lzo
comp-lzo
# verbose moderado, callar mas de 10 mensajes iguales
verb 4
mute 10

Para iniciar el servicio es necesario ejecutar:

En el servidor
sudo openvpn --config /etc/openvpn/server.conf
En el cliente
sudo openvpn --config /etc/openvpn/cliente.conf

Para permitir el libre tráfico, es conveniente configurar Iptables, ejecutando:

sudo echo "1" > /proc/sys/net/ipv4/ip_forward
sudo iptables -A INPUT -i tun0 -j ACCEPT
sudo iptables -A OUTPUT -i tun0 -j ACCETP
sudo iptables -A FORWARD -i tun0 -j ACCEPT

En caso de estar el servidor detrás de un router, es necesario redireccionar el puerto 1194 a este, ya que los pedidos llegaran a la ip pública y el router las descartará al no tener ningún servicio corriendo.
Una vez funcionando todo, es conveniente crear los scripts con las ordenes para iniciar openvpn y para activar iptables
Creando con nano un archivo de texto, por ejemplo:

sudo nano vpnstart

Y poniendo las líneas:
Servidor

#!/bin/bash
echo Script para inicio de opnevpn
openvpn --config /etc/openvpn/server.conf

Cliente

#!/bin/bash
echo Script para inicio de opnevpn
openvpn --config /etc/openvpn/cliente.conf

Guardarlo como vpnstart.sh
Hacerlo ejecutable dandole permisos de ejecución:

sudo chmod +x vpnstart.sh

Asi para cada grupo de ordenes, copiandolos luego a un directorio de archivos ejecutables, como por ejemplo:

sudo cp vpnstart.sh /usr/bin/vpnstart.sh 
o 
sudo cp vpnstart.sh /usr/local/bin/vpnstart.sh

Atención: Las preguntas en el foro. Aqui solo mejoras o corrección de errores.
Saludos.
Gabriel.



Solo doy soporte a Ubuntu - 6666 - Más malo que el diablo.
Imagen de jrgmonsalve
+1
0
-1

ya tengo mi conexion vpn configurada.... pregunta ahora lo que kiero es poderla compartir a otros usuarios de mi red... tengo que configurar algo en iptables?

Johan Garcia
God bless you

+1
0
-1

Johan Garcia
God bless you

Imagen de Lustorgan
+1
0
-1

pues solo veo como arrancar el servidor.

+1
0
-1

------------------------------------------

Imagen de fdrock
+1
0
-1

los comandos para permitir el libre trafico no los quiere aceptar nose porque?

+1
0
-1