29 de mayo de 2013

Montar VPN con PPTP en Ubuntu

Tras varios intentos, he conseguido montar un servidor VPN sobre un Ubuntu básico. Funciona bien con el cliente VPN que trae Android. Os pongo los pasos por si os interesan.

En un terminal instalamos el servidor PPTP

sudo apt-get install pptpd

Una vez finalizado el proceso se iniciará el servidor automáticamente, pero aún no está configurado, para ello haremos lo siguiente:

sudo gedit /etc/pptpd.conf

Se puede usar el editor que se prefiera, yo lo he hecho con nano pero pongo gedit para aquellos que os resulte más familar. En ese archivo configuraremos la ip local y remota, descomentándo las siguientes líneas (quitando la almohadilla # a principio de línea) o añadiéndolas

localip 192.168.1.100
remoteip 192.168.1.250-255
netmask 255.255.255.0


Guardamos y cerramos.

La ip local debe coincidir con la de la máquina que monta el servidor, que se puede saber con el comando ifconfig. Mientras que las remotas deben de no coincidir con ninguna otra máquina de la red. Mediante el guión podemos establecer un rango, en mi ejemplo va de 250 hasta 255, para 5 conexiones externas.

Ahora configuraremos otro archivo para que nos permita el acceso a internet:

sudo gedit /etc/ppp/pptpd-options

En este archivo descomentámos o añadimos las siguientes líneas para que permitan la resolución de DNS y permitan la codificación de un smartphone

# Network and Routing
ms-dns 91.191.136.152
ms-dns 85.229.85.109
netmask 255.255.255.0

# MPPE should be stateless ¡¡Imprescindible para Android!!
nomppe-stateful


Guardamos y cerramos. Yo he usado unas DNS que me gustan pero se pueden usar otras como las de Google (8.8.8.8 - 8.8.4.4) o las de tu ISP.

Ahora vamos a añadir usuarios a nuestra VPN. Para hacerlo modificaremos el archivo chap-secrets:

sudo gedit /etc/ppp/chap-secret

En nuestro ejemplo vamos a usar como usuario/contraseña lo siguiente Jesus/12345. Tened en cuenta que cada espacio se debe añadir con el tabulador, y debe quedar algo como lo siguiente:

# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
Jesus        *       12345     *


Como siempre guardamos y salimos.

Ahora vamos a proceder a activar el IP forwarding, para ello vamos a modificar el archivo /etc/sysctl.conf:

sudo gedit /etc/sysctl.conf

Buscamos la línea #net.ipv4.ip_forward=1 y le quitamos la # para descomentarla. Quedando así:

net.ipv4.ip_forward=1

Guardamos los cambios y cerramos el archivo. Y activamos este último cambio con el comando

sudo sysctl -p

Hacemos un par de cambios en iptables para permitir el reenvío de conexión

sudo iptables -P FORWARD ACCEPT
sudo iptables --table nat -A POSTROUTING -o eth0 -j MASQUERADE


Lo ponemos en marcha con las modificaciones que hemos hecho

/etc/init.d/pptpd restart

Ya sólo queda configurar el cliente para que se conecte, y por supuesto abrir un puerto en el router (puerto 1723 por defecto) si es necesario. Bueno, y también poner un servicio de ip dinámica y esas cosas ya al gusto de cada cual. A las malas, si el router no permite abrir el puerto PPTP correctamente, también se puede usar la opción de incluir el servidor en la DMZ del router, aunque no es lo más aconsejable.


8 comentarios:

Anónimo dijo...

Gracias lo probare.

Anónimo dijo...

Muchas gracias, tras muchos tutoriales al fin encontré uno que funciona con Android.

Jesús Abad Luque dijo...

Me alegra que mis artículos resulten de utilidad.

Indicadme siempre cualquier cuestión en los comentarios.

Anónimo dijo...

Por favor podria mostrar como configurar un cliente android? Gracias

Jesús Abad Luque dijo...

Android trae un cliente VPN integrado en el sistema. Se accede a su configuración a través de "Ajustes", en la sección "Conexiones inalámbricas y redes".

Depende de la versión concreta, ahora mismo en la mía aparece en "... Más" >> "VPN"

Ahí puedes añadir una configuración pulsando "+" y aportando los datos del servidor al que conectar.

Jojann De Vargas Alvarez dijo...

El mejor tutorial

Jesús Abad Luque dijo...

Gracias Jojann 😊

diana_indie@hotmail.com dijo...

Porque me dice que no puede encontrar el paquete pptpd