Contenidos
- 1 Introducción
- 2 Paquetes necesarios
- 3 Archivos de configuración
- 4 Apertura de puertos
- 5 Instalación
- 6 Configuración
- 7 Asignación de usuarios y contraseñas
- 8 Activar reenvío de paquetes
- 9 Reinicio de la VPN
- 10 Conexión desde Windows
- 11 Exportar configuración del cliente Windows
- 12 Anotaciones
- 13 Asignar rutas estáticas
- 14 Información adicional:
Introducción
Este tipo de VPN es muy insegura y está obsoleta. En su lugar configura una VPN con Wireguard
Vamos a ver como instalar un servidor de VPN PPTP en Linux, concretamente en Ubuntu 16.04, la última LTS
Paquetes necesarios
Necesitaremos los paquetes ppp y pptpd.
Archivos de configuración
- /etc/pptpd.conf
- /etc/ppp/pptpd-options
- /etc/ppp/chap-secrets
Apertura de puertos
Para poder conectarnos a la VPN debemos abrir y redirigir al servidor ese puerto:
- 1723 TCP
También debemos habilitar el protocolo 47 (GRE). Para esto debemos comprobar las opciones del router, debe haber una que especificamente indique que permite el tráfico VPN PPTP (VPN passthrough por ejemplo).
Instalación
Instalamos los paquetes ppp y pptpd:
sudo apt install ppp pptpd
Configuración
Accedemos al fichero /etc/pptpd.conf, donde dejaremos todo comentado menos estas opciones:
- option: indica el fichero donde se cargan las opciones de ppp. Por defecto /etc/ppp/pptpd-options
- logwtmp: guarda en el log registro de conexiones y desconexiones a la VPN.
- localip: IP que tendrá el servidor VPN (IP del tunel, diferente de la IP local del propio servidor). Puede ser un rango pero nosotros asignaremos una IP solamente.
- remoteip: rango de IPs que se asignan a los usuarios que se conecten. Se podrán conectar tantos clientes como IPs indiquemos aquí: si solo indicamos una IP, solamente podrá conectarse un cliente cada vez, si indicamos un rango de 2 IPs, solo se conectarán 2 clientes cada vez y así sucesivamente.
Muy importante: tanto localip como remoteip deben contener IPs que no existan ya en la red local. Podemos usar IPs de una subred diferente para evitarnos problemas. (Consultar anotaciones).
Ejemplo de fichero /etc/pptpd.conf:
option /etc/ppp/pptpd-options
logwtmp
localip 192.168.0.200
remoteip 192.168.0.205-210 #Podrán conectarse hasta 6 equipos a la vez
Ahora comprobaremos que en el fichero /etc/ppp/pptpd-options esten descomentadas estas opciones (si falta alguna la añadimos):
- name pptpd
- refuse-pap
- refuse-chap
- refuse-mschap
- require-mschap-v2
- require-mppe-128
- proxyarp
- nodefaultroute
- debug
- lock
- nobsdcomp
- novj
- novjccomp
- nologfd
- mppe-stateful
Asignación de usuarios y contraseñas
Solo queda configurar los usuarios y contraseñas de acceso a la VPN en el archivo /etc/ppp/chap-secrets, el cual tiene este formato:
# client server secret IP addresses
usuario1 * contraseña1 *
usuario2 * contraseña2 192.168.0.205
La primera columna es el nombre de usuario que los clientes usarán para conectarse a la VPN. En este caso puede ser tanto usuario1 como usuario2.
La segunda columna sería el servidor donde buscará las opciones de conexión. Dejaremos el asterisco *.
La tercera columna es la contraseña que asignamos a cada usuario.
La cuarta columna es la IP que se asignará al cliente al conectarse a la VPN. Debe estar en el rango indicado en el parámetro remoteip del fichero /etc/pptpd.conf. Si nos conectamos como usuario1, no asignará cualquier IP dentro del rago de remoteip (entre 192.168.0.205 y 210 según el ejemplo anterior). Si nos conectamos como usuario2 nos asignará siempre la IP indicada (192.168.0.205).
Activar reenvío de paquetes
Si seguimos los pasos anteriores, tendremos conexión desde el exterior al propio servidor VPN como si estuviera en nuestra propia LAN, pero no tendremos acceso al resto de equipos de la LAN remota. Para poder acceder a ellos debemos activar el reenvío de paquetes o IP forwarding.
Primero comprobaremos si está activado con alguno de estos comandos:
sysctl net.ipv4.ip_forward
cat /proc/sys/net/ipv4/ip_forward
Si alguno de los 2 devuelven 0 es que está desactivado y si es 1 el reenvío de paquetes estará activado.
Para activarlo sobre la marcha, ejecutaremos uno de estos 2 comandos:
sysctl -w net.ipv4.ip_forward=1
echo 1 > /proc/sys/net/ipv4/ip_forward
Ahora podemos comprobar que desde nuestro equipo tendremos acceso a otros equipos de la LAN remota, aparte del propio servidor VPN.
Si reiniciamos el equipo, se volverá a desactivar el reenvío de paquetes. Para dejarlo activado de forma permanente:
sudo vim /etc/sysctl.conf
- Añadir o descomentar la línea:
net.ipv4.ip_forward=1
Mas información: Ducea
Reinicio de la VPN
Podemos reiniciar la VPN con este comando:
sudo /etc/init.d/pptpd restart
Conexión desde Windows
Veamos los pasos para conectarnos a la VPN desde un cliente Windows:
- Accedemos a Panel de Control, redes, Centro de redes y recursos compartidos, configurar una nueva conexión o red.
- Conectarse a un área de trabajo
- No, crear una nueva conexión
- Reiniciar VPN en caso de problemas
- Usar mi conexión a internet (VPN)
- Indicar en dirección de internet la IP pública del servidor VPN y asignar un nombre a la conexión
- Volvemos al centro de redes y recursos compartidos, seleccionamos Cambiar configuración del adaptador y hacemos clic derecho, propiedades, en la conexión que acabamos de crear para configurar estos parámetros:
- En esta misma pantalla, si queremos tener acceso a internet mientras estamos conectados a la VPN, tendremos que ir a Funciones de Red, doble clic en protocolo de internet versión 4, opciones avanzadas y desmarcar la opcion “Usar puerta de enlace predeterminada en la red remota”. ¡Atención! Si hemos asignado IPs de distinta red a la IP remota consultar anotaciones.
- Aceptamos todos los cambios y hacemos doble clic en el icono de conexión. Damos a conectar e introducimos usuario y contraseña configurados anteriormente. Si todo va bien ya estaremos conectados por VPN al servidor remoto.
Podemos hacer un acceso directo en el escritorio a la nueva conexión para poder acceder con facilidad más adelante.
Exportar configuración del cliente Windows
Si tenemos que configurar varios clientes VPN, no hace falta repetir los pasos anteriores en cada equipo. Basta con hacerlo en uno y exportar el archivo de la VPN en otro equipo.
Anotaciones
Hemos dicho que las IPs que asignamos a los clientes VPN no deben existir en la red local, por lo que es recomendable asignar IPs de otra subred.
Esto nos plantea un problema si desactivamos la opción Usar puerta de enlace predeterminada en la red remota, ya que así tendremos nuestro ordenador en una red diferente a la del servidor VPN y no podremos acceder a la LAN remota.
Si dejamos la opción de Usar puerta de enlace predeterminada en la red remota, tendremos acceso completo a la red remota, pero todo nuestro tráfico de red saldrá a través de ella, ralentizando internet, pudiendo llegar a dejar de funcionar completamente. Aunque esta opción puede ser interesante si deseamos salir a internet desde nuestra red con la IP pública de la red remota.
¿Qué podemos hacer para poder conectar a la red remota usando nuestra propia puerta de enlace para no afectar a la velocidad de internet? Tenemos 2 opciones:
- Configurar el servidor para que asigne las IPs de los clientes dentro de su misma red, teniendo cuidado de que éstas no esten ya asignadas en la red local.
- Configurar el servidor para que asigne las IPs de los clientes en una red diferente y luego configurar en el cliente rutas estáticas para que el tráfico hacia la red remota salga por su propia puerta de enlace en lugar de la nuestra.
Asignar rutas estáticas
Supongamos que estamos en nuestra oficina de Asturias, y queremos conectarnos por VPN a la sede central de Madrid, teniendo esta configuración:
Madrid (red remota):
Red local: 192.168.1.0/24
Puerta de enlace: 192.168.1.200
IP VPN: 192.168.5.1
Asturias (red local):
Red local: 192.168.0.0/24
Puerta de enlace: 192.168.0.100
IP VPN: 192.168.5.10
Si desde Asturias nos conectamos a la VPN sin usar la puerta de enlace remota, no tendremos acceso a Madrid porque estariamos intentando conectar la IP 192.168.5.10 con la red 192.168.1.0/24, lo cual es imposible. Tendremos que asignar una ruta estática que le diga a nuestro equipo que todo el tráfico destinado a la red remota (192.168.1.0/24) salga por el servidor VPN (192.168.5.1). Así el resto de tráfico saldría por nuestra puerta de enlace local e internet no se vería afectada.
Esto se hace con el comando route, cuya sintaxis es:
route -p add RED_REMOTA mask MÁSCARA_DE_RED PUERTA_ENLACE_REMOTA if IDENTIFICADOR_INTERFACE
-p: sirve para hacer la ruta permanente, de manera que no se borre al reiniciar. Podemos dejarlo sin poner para probar hasta que todo funcione como queramos
El identificador de interface se obtiene con el comando route print, que nos devolverá, entre otras cosas, una lista de interfaces, entre ellas una llamada igual que nuestra conexión VPN, que será de la que obtendremos el número, supongamos en este caso 37.
En nuestro ejemplo sería:
route -p add 192.168.1.0 mask 255.255.255.0 192.168.5.1 if 37
Más información:
howtogeek: How to Add a Static TCP/IP Route to the Windows Routing Table
itprotoday: When I add a static IP route, what value do I use for the interface?
Deja una respuesta