Configurar servidor VPN L2TP/IPSec PSK con Ubuntu

Configuración Firewall Clouding

Para que funcione nuestra VPN crearemos una perfil de firewall con las siguientes reglas:

Firewall VPN L2TP

Requisitos del servidor

Para crear VPN L2TP lo haremos en una máquina con Ubuntu 16.04 con 1 GB de RAM, 1 Core y 25 GB de disco. Importante a la hora de crear el servidor seleccionar el perfil de firewall anterior.

Instalamos strongswan

# apt-get install strongswan

Ahora editaremos el fichero de configuración “vi /etc/ipsec.conf” añadir al final:

conn L2TP-PSK-NAT
	rightsubnet=vhost:%priv
	also=L2TP-PSK-noNAT
conn L2TP-PSK-noNAT
	authby=secret
	auto=add
	keyingtries=3
	rekey=no
	dpddelay=10
	dpdtimeout=90
	dpdaction=clear
	ikelifetime=8h
	keylife=1h
	type=transport
	left=46.183.116.80
	leftprotoport=17/%any
	right=%any
	rightprotoport=17/%any
conn L2TP-PSK-noNAT-Private
	authby=secret
	auto=add
	keyingtries=3
	rekey=no
	dpddelay=10
	dpdtimeout=90
	dpdaction=clear
	ikelifetime=8h
	keylife=1h
	type=transport
	left=10.20.10.6
	leftprotoport=17/%any
	right=%any
	rightprotoport=17/%any

 

Procederemos a especificar PSK Pre Shared Key (clave precompartida) en “vi /etc/ipsec.secrets” añadir al final:
: PSK prekeyVPN

Instalamos xl2tpd

# apt-get install xl2tpd
#update-rc.d xl2tpd enable

Procederemos a configurar Xl2tp en “vi /etc/xl2tpd/xl2tpd.conf” añadir al final:
[global]
listen-addr = 0.0.0.0
auth file = /etc/xl2tpd/l2tp-secrets
ipsec saref = yes
force userspace = yes
[lns default]
ip range = 10.254.254.100-10.254.254.200
local ip = 10.254.254.1
;require chap = yes
refuse chap = yes
refuse pap = yes
require authentication = yes
bps = 104857600
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes

Procederemos a especificar opciones Xl2tp para ello “cp /etc/ppp/options /etc/ppp/options.xl2tpd y vi /etc/ppp/options.xl2tpd” añadir al final:
ipcp-accept-local
ipcp-accept-remote
require-mschap-v2
ms-dns 8.8.8.8
proxyarp
connect-delay 5000

Aquí podemos crear todos los usuarios que queremos que accedan a la VPN “vi /etc/ppp/chap-secrets y vi /etc/xl2tpd/l2tp-secrets” añadir al final:
userVPN * passVPN *
NOTA: Utilizar contraseñas seguras, esto es un ejemplo.

Instalamos dnsmasq

# apt-get install dnsmasq
# update-rc.d dnsmasq enable

Crearemos un fichero de configuración vacío (/etc/dnsmasq.conf) con el siguiente contenido:
dhcp-range=10.254.254.100,10.254.254.200
dhcp-option=121,10.20.10.0/24,10.254.254.1,46.183.112.0/21,10.254.254.1
dhcp-option=249,10.20.10.0/24,10.254.254.1,46.183.112.0/21,10.254.254.1

Los rangos IPs 10.20.10.0/24 (red privada) y 46.183.112.0/21 (red pública) corresponden a Clouding cualquier acceso que hagamos a los servidores de Clouding será con la IP de la VPN.
Se pueden añadir los rangos que se quieran.
Por último ejecutaremos:
# /sbin/sysctl -w net.ipv4.ip_forward=1
# /sbin/iptables -t nat -A POSTROUTING -s 10.254.254.0/24 -j MASQUERADE
# service xl2tpd restart; service dnsmasq restart; ipsec restart

Además añadimos los comandos anteriores a /etc/rc.local así se mantendrás cuando reiniciemos nuestro servidor:
# /sbin/sysctl -w net.ipv4.ip_forward=1
# /sbin/iptables -t nat -A POSTROUTING -s 10.254.254.0/24 -j MASQUERADE

Configurar VPN en Windows

En el panel de control de Windows en el buscador escribiremos VPN y entraremos en “Cambiar redes privadas virtuales” y pulsaremos en “Agregar una conexión VPN” y rellenaremos los campos con nuestros datos (IP, PSK, usuario y contraseña)
VPN Windows


Además cambiaremos que se use la VPN para todo el tráfico, entraremos en la opción derecha de “Cambiar opciones del adaptador” seleccionaremos el adaptador de VPN que hemos creado e iremos a “Propiedades”, pestaña “Funciones de red” haremos doble clic en Protocolo TCP/IPv4 e iremos a “Opciones avanzadas” y desactivaremos “Usar la puerta de enlace predeterminada en la red remota”
KB-VPN-Windows-2
Ya podemos empezar a usar nuestra VPN.

Configurar VPN en Android

Para configurar nuestra VPN en Android iremos a Ajustes, más redes y entraremos en la opción VPN y pulsaremos al + para crear una VPN.
VPN-Android2

Para comentar sobre este artículo, rellena el formulario. Los campos marcados con un asterisco (*) son obligatorios.


*