11/7/09

VPN PPTP

Vamos a configurar un servidor VPN PPTP en un ubuntu y configurar clientes ubuntu y windows.

Comenzaremos por la configuración del servidor VPN.

En primer lugar instalamos el paquete pptpd:

apt-get install pptpd

Seguidamente modificamos el fichero de configuración:

/etc/pptpd.conf

Y modificamos las líneas localip y remoteip, por ejemplo:

localip 10.0.0.1
remoteip 10.0.0.10-100

Trabajaremos con un rango de IPs diferente del de la red local, localip será la IP que tendrá el servidor y el rango de remoteip las IPs que se asignarán a los terminales que se conecten al VPN.

A continuación editamos el fichero de opciones:

/etc/ppp/pptpd-options

Donde tenemos la opción de cambiar el nombre de la red VPN en la línea name (por defecto pptpd):

name pptpd

Y donde debemos configurar los servidores dns, por ejemplo:

ms-dns 10.0.0.1
ms-dns 80.58.61.250
ms-dns 80.58.61.254

Ahora damos de alta las cuentas de los clientes en el fichero:

/etc/ppp/chap-secrets

Para cada cliente añadimos una línea con el formato:

nombreCliente nombreRed contraseña *

Donde nombreCliente y contraseña serán los que necesitarán los usuarios para identificarse; nombreRed si no lo hemos cambiado será pptpd y el * indica que se le asignará una ip del rango remoteip previamente establecido, pero también podemos sustituirlo por una ip concreta si así lo deseamos.

Finalmente reiniciamos el servicio con:

/etc/init.d/pptpd restart

Ya tenemos configurado el servidor VPN. Aquí hay más información al respecto.

A continuación para poder conectarnos al servidor VPN a través de internet redirigimos en el router los puertos 1723 TCP y 47 UDP al equipo que hemos configurado como servidor VPN.

Ahora vamos a configurar los clientes, empezaremos por windows xp:

Vamos al menú Inicio -> Panel de Control -> Conexiones de red e Internet -> Crear una conexión a la red de su trabajo. Seleccionamos 'Conexión de red privada virtual', le damos un nombre descriptivo a la conexión, si nos pregunta marcamos 'No usar la conexión inicial' y a continuación introducimos la IP externa del servidor VPN, por último por comodidad podemos marcar que agregue un acceso directo a la conexión en el escritorio.
Es posible que cuando nos conectemos a la VPN tengamos problemas para navegar por internet, cuando la puerta de enlace de la red remota esté en un rango de IPs diferente, en cuyo caso editamos la conexión de red a través del menú 'Propiedades' , seleccionamos la pestaña 'Funciones de red', escogemos 'Protocolo Internet (TCP/IP)' y pulsamos el botón 'Propiedades', en la nueva ventana seleccionamos 'Opciones avanzadas...' y en la ventana que se abrirá desmarcamos de la pestaña 'General' la opción 'Usar la puerta de enlace predeterminada en la red remota'.

Y ahora los clientes ubuntu, podemos conectarnos por consola o a través del entorno gráfico.

Para hacerlo gráficamente, debemos en primer lugar instalar el plugin pptp para el network manager:

apt-get install network-manager-pptp

A continuación desplegamos el menú del network manager y seleccionamos Conexiones VPN -> Configurar VPN... Pulsamos el botón 'Añadir' y elegimos 'Protocolo de túnel punto a punto (PPTP)'. Le damos un nombre descriptivo a la conexión, en 'Pasarela' escribimos la IP externa del servidor VPN, escribimos el nombre de usuario y si lo deseamos la contraseña y por último pulsamos el botón 'Avanzado...' y en la nueva ventana marcamos 'Usar cifrado punto a punto (MPPE)'.
Ahora podemos conectarnos a la VPN desplegando el menú del network manager y en 'Conexiones VPN' seleccionando la conexión creada, el icono del network manager mostrará un candado para indicar que estamos en una red segura.

Lamentablemente en la versión actual del network manager no he encontrado la manera de indicarle que use la puerta de enlace local para el acceso a internet. Por lo que es posible que al conectar a la VPN, no podamos navegar por internet.

Este problema no se da si en lugar de usar el network manager, establecemos la conexión por consola, mediante los sonoros comandos pon y poff.

Para conectarnos usaremos el comando pon, pasándole un fichero de configuración de la conexión que deseamos establecer.
Crearemos este fichero en el directorio:

/etc/ppp/peers

El fichero llamado por ejemplo REDVPN tendrá el siguiente formato:

pty "pptp 99.99.99.99 --nolaunchpppd"
name USUARIO
remotename PPTP
require-mschap-v2
require-mppe-128
file /etc/ppp/options.pptp
ipparam tunnel

Donde 99.99.99.99 es la IP del servidor, USUARIO es el nombre de usuario del VPN y PPTP el nombre que deseamos darle a la conexión.

Por último añadimos los datos del usuario en:

/etc/ppp/chap-secrets

Con una línea en el formato que ya conocemos:

nombreCliente nombreRed contraseña *

En el caso que nos ocupa nombreRed será PPTP, tal como hemos establecido en remotename.

Y ya podemos conectarnos a la VPN con:

pon REDVPN

y desconectarnos con:

poff

Más información sobre la configuración del terminal por consola aquí.

17 comentarios:

Anónimo dijo...

He seguido tods los pasos y cuando me intento conectar desde un cliente windows xp se queda conectando y no hace nada... Alguna idea?? Tengo todo configurado correctamente y los puertos abiertos y redirigidos a la maquina servidor. Para que sirven esos DNS?

linux a martillazos dijo...

Hola!

¿Has probado a conectarte desde la red local, en caso de que haya una?

Anónimo dijo...

hola que tal ...
El cliente vpn windows se conecta perfectamente pero yo necesito ejecutar una aplicacion que se encuentra compartida en una maquina de la Lan , el problema es que no puedo ver las maquinas de la red Lan ....
Por favor me puedes ayudar

linux a martillazos dijo...

Hola.

Siento no poder ayudarte ahora mismo en ese caso concreto, aunque es una cosa que tengo pendiente de mirar.

Lo que si que te puedo decir es que si en lugar de hacer la vpn con protocolo pptp te decides a usar el openvpn, puede seguir el último manual que he publicado.
Con este una vez un cliente se conecte si puede acceder al resto de máquinas de la lan del servidor.

Lo tienes en:

http://linuxamartillazos.blogspot.com/2009/08/vpn-openvpn.html

Anónimo dijo...

Lo maximo tu blog!,llevo horas buscando la manera de conectar mi cliente Ubuntu a VPN sin perder la conexion a internet y al fin una solución real

muchisimas gracias

linux a martillazos dijo...

De nada!

Me alegro de que te haya sido útil!

Anónimo dijo...

Bueno, me salio casi todo excepto la parte del pon y poff, en mi caso usando Ubuntu como cliente lo hice instalando network-manager-pptp y en la pestaña de Ajustes de IPv4 rutas marcando los 2 check de Ignorar rutas obtenidas automaticamente y Usar esta conexion solo para recursos en su red, ya no perdía mi salida a Internet. Gracias.

linux a martillazos dijo...

Muchas gracias por el apunte! :-)

teles-copio dijo...

Hola
Exelente blog, excelente articulo.
Muy bien explicado, conciso y practico.
Hay un pequeño error, el cual no desmerece en lo absoluto tu aporte, pero te lo cuento porque sé que vas a entender bien el concepto y mereces conocerlo.
En una parte de tu tutorial decis:

"A continuación para poder conectarnos al servidor VPN a través de internet redirigimos en el router los puertos 1723 TCP y 47 UDP al equipo que hemos configurado como servidor VPN"

Bien, te cuento que el puerto 47 UDP no es necesario. En realidad es un error que pulula por internet. El numero 47 en realidad se refiere al numero de protocolo.
La mayoria de los routers "saben" encaminar el protocolo nro 6 (TCP), pero no todos pueden encaminar el protocolo nro 47 (GRE).
Por lo que para poder configurar el port forwarding, el router debe tener esa capacidad epecial para encaminar ese protocolo que viaja encapsulado en el protocolo IP y no tiene nada que ver con TCP.
Espero que te sirva mi comentario.
En cuanto a tu blog, ya esta en mis marcadores.

Saludos
Sergio
http://teles-copio.blogspot.com/

linux a martillazos dijo...

Muchas gracias por la aclaración respecto a los puertos, teles-copio.
Y muy interesante tu blog, me lo agrego de inmediato al lector de RSSs!

asdfg dijo...

Hola,
Excelente guía al igual que la del openvpn, pero por la facilidad del cliente para windows me decidí a usar PPTP, todo funciona ok, excepto que cuando me conecto de manera remota el cliente permanece conectado alrededor de un minuto y se desconecta

sabes a que se debe esto?

gracias

linux a martillazos dijo...

Hola Renato.

La verdad es que con tan pocos datos no se a que puede deberse. ¿Te pasa siempre o en determinados casos?

Anónimo dijo...

Tengo funcionando el servicio VPN PPTPD por LAN perfectamente, pero a la hora de conectarme por ip publica no accede. Tengo habilitados los puertos en el router redireccionando hacia la ip interna del servidor y nada..

PPTP VPN UDP 1723
192.168.1.30 1723

PPTP VPN GRE 0 192.168.1.30 0

Me pasa lo mismo con el servicio de SSH, tengo el puerto abierto tambien.

Solo me funcionan por LAN.

Tambien he intentado toqueteando las reglas del iptables pero nada.. ya de tanto probar no sabia si funcionaba con una u otra.

¿Que puede estar pasando? gracias de antemano!.

Anónimo dijo...

/etc/pptpd.conf

me dice permiso denegado...
le he dado permisos segun yo...
eh iniciado la terminal con root y nada...
que puedo hacer??...

Alvaro Enrique García dijo...

Me sirvió de mucho esta guía pude configurarlo sin problemas y logré una conexión externa con windows 7. además es mucho mas estable la comunicación que con el VPN de Windows.

Andrey dijo...

Para que no haya problemas de internet en los clientes ubuntu la configuración es muy similar a windows.

Desconectamos la VPN.
Editamos la conexión VPN, en ajuste IPv4, Rutas..., y Marcar: "Usar esta conexión solo para los recursos en su red".
Conectamos nuevamente.
Listo ahora siempre tendremos internet.

teles-copio dijo...

Jaja, por segunda vez caigo en esta misma publicacion. Recien estaba haciendo pruebas y, claro, descubrí que no es posible modificar la puerta de enlace con network-mannager, cosa que veo que vos ya habias descubierto un buen tiempo atras. Otra solucion, además de la que proponés vos con pop y poff: se trata de ejecutar el comando "sudo route add default gw 192.168.1.1" luego de establecer la conexion VPN y con eso se arregla internet. Aclaracion para los que no esten empapados en esto de las redes: 192.168.1.1 es la puerta de enlace y, obviamente, puede variar en cada caso, siendo posible tambien 192.168.0.1, etc. Gracias de nuevo por tu blog.