Configuracion de un túnel VPN en GNU/Linux (a vpn.ugr.es)

Introducción
Configuración
¡Problemas, ayuda!


Introducción

La red de la universidad de Granada ha apostado por acercar el campus a los hogares a través de Internet. Para conseguir esto sin correr graves riesgos de seguridad han optado por usar túneles VPN (Virtual Private Network).
Para la red de la Universidad de Almeria podeis probar este script VPNUAL.sh

Una vez dentro de la red, se puede acceder a los hosts de la UGR: turing (acceso a las cuentas por telnet y ftp), los pc de las aulas, etc. Para más información ver la página de ayuda (y para ayuda para configurar bajo Windows) del CSIRC.

Los protocolos empleados son PPTP (Point-to-Point Tunneling Protocol) con extensiones MPPE (Microsoft Point-to-Point Encryption). Si bien la configuración actual facilita las cosas para sistemas basados en Microsoft, es posible con otros sistemas ya que los protocolos están documentados y hay implementaciones libres de los mismos.

El funcionamiento a nivel de protocolos viene a ser algo como el de la figura:


  • En el host pepito se crea una interfaz PPP para el túnel (pppx-vpn). Sobre esta interfaz se puede enviar datos, típicamente IP más TCP, UDP o ICMP. Esta interfaz tiene una IP que pertenece a la red UGR (150.214.205.38).
  • Esta interfaz y su contenido se encapsula con el protocolo pptp (y encriptado con mppe) en los paquetes IP de la conexión de Internet de Pepito (siguendo el protocolo General Routing Encapsulation).
  • Cuando en el otro extremo del túnel (vpn.ugr.es = 150.214.205.60) se reciben estos paquetes se desencapsulan.
  • Los paquetes de pepito se enrutan hacia el host indicado en la red UGR.

    Nota: Hay dos rutas posibles para acceder a un host de la red UGR, una directa a través de Internet, y la otra a través del túnel. El host Pepito debe configurar su tabla de rutas para que los paquetes discurran por la interfaz de Internet (if-internet) o por el túnel (pppx-vpn). Debido a los firewalls y a la configuración de la red, algunos hosts sólo son accesibles a través del túnel.


    Configuración

    Voy a contar como configurar el acceso a la red VPN de la UGR para un alumno modelo Pepito Pérez. A diferencia de otros métodos (acceso por modem o rdsi), este permite entrar a la red UGR desde cualquier conexión de internet.

    1.- Instalar el soporte PPTP. Como mi distribución no trae este soporte por defecto, es necesario compilarlo e instalarlo.
    Descargo el fichero pptp-linux-1.2.0.tar.gz desde http://pptpclient.sourceforge.net/, lo descomprimo, compilo e instalo:

    En principio no es necesario descargar el soporte pptp-mppe (se supone que un núcleo moderno lo trae) ni pptp-extras (no he conseguido que funcione correctamente).

    2.- Activar el soporte Microsoft Point-to-Point Encryption (mppe) del núcleo. Para esto se puede compilar el núcleo con el soporte, o si se dispone de él como modulo (lo más probable y sencillo) insertarlo:

    Este paso es imprescindible, ya que vpn.ugr.es exige usar el protocolo mppe.

    3.- Obtener password: introducir correo y contraseña apropiada en https://vpn.ugr.es. Supongamos que el login para el usuario es pepitoperez@fedro.ugr.es y el password temporal obtenido es ABCXYZ

    4.- Configurar el fichero /etc/chap-secrets (generalmente es necesario tener privilegios de root para editar este fichero), añadiendo la línea siguente:

    5.- Activar el túnel (este y otros pasos siguientes requieren privilegios de root):

    Comento las opciones usadas:

    6.- Configurar las rutas.
    Este paso no se realiza automáticamente (al menos en GNU/Linux), y hay que tener en cuenta lo siguiente:
    ¿Qué se pretende hacer? ¿Adónde se quiere conectar?.

  • Por ejemplo, para conectar a turing: Hay que tener en cuenta que yo conecto a través de módem por la interfaz ppp0, y que por lo tanto el túnel vpn tiene como interfaz ppp1. En otros casos la interfaz del túnel es ppp0.

    Para comprobar que todo funciona correctamente y saber los datos de la interfaz se usa ifconfig. Aparecerá, entre otras, la interfaz del túnel:

    ppp1 Link encap:Point-to-Point Protocol
      inet addr:150.214.205.38 P-t-P:150.214.205.60 Mask:255.255.255.255
      UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
      RX packets:9 errors:0 dropped:0 overruns:0 frame:0
      TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:3
      RX bytes:119 (119.0 b) TX bytes:143 (143.0 b)

    Se puede comprobar que la interfaz esta levantada (UP), que las dirección ip que se nos ha asignado pertenece a la UGR (150.214.x.x) por lo que estamos virtualmente dentro de la UGR, y la del peer también.

    7.- Conectar a turing.
    Por ftp: ftp 192.168.190.1
    Por telnet: telnet 192.168.190.1


    ¡Problemas, ayuda!

    Lee las páginas de documentación siguientes:

  • man pppd (para algunas opciones imprescindibles).
  • man pptp (para otras opciones. Ahi viene un ejemplo de uso en el que me he basado)
  • Lee la ayuda en la página de ayuda de pptp http://pptpclient.sourceforge.net/howto-diagnosis.phtml (en inglés). Trae una sección de Problemas frecuentes muy completa gracias a la cual he resuelto todos los problemas. Para detectar mejor los problemas recomienda añadir la opción debug a la línea de pppd.

    © 2003 El ser humano conocido como SuD