Conexión a VPN de la UCLM en Debian

Para establecer una conexión con una VPN en un entorno GNU/Linux, podemos utilizar el gestor de conexiones Network Manager con su plugin PPTP, que ya aparece instalado por defecto en multitud de distribuciones.

En el caso concreto de la VPN de la UCLM, la configuración de una conexión VPN a través de Network Manager ya aparece aquí explicada para la distribución Fedora. Para el caso de una distribución Debian tan solo sería necesario cambiar la invocación del gestor de paquetes yum por apt/aptitude mediante la orden:

root@raptor:/home/j2sg# aptitude install pptp-linux network-manager network-manager-pptp

Sin embargo, es posible que usemos WICD como gestor de conexiones, el cual no dispone actualmente de soporte para conexiones VPN, o bien que directamente no usemos ningún gestor de conexiones configurándolas directamente a través del fichero /etc/network/interfaces. Si este es el caso, es posible configurar una conexión PPTP a una VPN en unos pocos pasos:

  1. Instalar el cliente PPTP:
    root@raptor:/home/j2sg# aptitude install pptp-linux
    
  2. Editar del fichero /etc/ppp/options.pptp añadiendo y/o comentando las lineas necesarias para que su contenido sea el siguiente:
    lock
    noauth
    refuse-pap
    refuse-eap
    refuse-chap
    refuse-mschap
    #nobsdcomp
    #nodeflate
    require-mppe-128
    mppe-stateful
    
  3. Añadir la siguiente linea al fichero /etc/ppp/chap-secrets sustituyendo $USUARIO y $PASSWORD por el usuario(DNI) y contraseña correspondiente:
    $USUARIO PPTP $PASSWORD *
    
  4. Modificar permisos de /etc/ppp/chap-secrets para lectura/escritura para el root:
    root@raptor:/etc/ppp# chmod 0600 chap-secrets
    
  5. Crear el fichero /etc/ppp/peers/uclm con el contenido:
    pty "pptp vpn.uclm.es --nolaunchpppd"
    name $USUARIO
    remotename PPTP
    file /etc/ppp/options.pptp
    ipparam uclm
    
  6. Cargar el modulo para soporte de cifrado MPPE:
    root@raptor:/etc/ppp# modprobe ppp_mppe
    
  7. Añadir el modulo ppp_mppe al fichero /etc/modules para que sea cargado automáticamente el próximo arranque:
    root@raptor:/etc/ppp# echo "ppp_mppe" >> /etc/modules
    
  8. Para iniciar el tunel VPN:
    root@raptor:/etc/ppp# pon uclm
    root@raptor:/etc/ppp# route add default ppp0
    

    Podemos comprobar que se ha creado una nueva interfaz de red y se han añadido nuevas entradas en la tabla de rutas:

    root@raptor:/etc/ppp# ifconfig ppp0
    ppp0      Link encap:Point-to-Point Protocol  
              inet addr:161.67.172.202  P-t-P:161.67.172.137  Mask:255.255.255.255
              UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1496  Metric:1
              RX packets:8 errors:0 dropped:0 overruns:0 frame:0
              TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:3 
              RX bytes:80 (80.0 B)  TX bytes:80 (80.0 B)
    root@raptor:/etc/ppp# route
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    161.67.172.137  *               255.255.255.255 UH    0      0        0 ppp0
    vpn.uclm.es     192.168.1.1     255.255.255.255 UGH   0      0        0 eth0
    192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
    default         *               0.0.0.0         U     0      0        0 ppp0
    default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
    
  9. Para pararlo:
    root@raptor:/etc/ppp# poff uclm
    root@raptor:/etc/ppp# route del vpn.uclm.es
    

Llegado este punto, ya podemos establecer una conexión PPTP con la VPN, sin embargo podemos utilizar el siguiente script de shell por comodidad:

#!/bin/bash

## uclm.sh : Script de Shell para Bash.
## Inicia/Detiene conexion con VPN de la UCLM a traves de tunel PPTP.
## Autor: Juan Jose Salazar Garcia (jjslzgc@gmail.com)
## Fecha: 17/02/11

IFACE=ppp0

start() {
   echo -n "Iniciando conexion con UCLM ."
   if [ ! -z "`ifconfig -a |grep $IFACE`" ]; then
      echo " Error : Existe una conexion activa"
      exit 1
   fi
   pon uclm
   for i in `seq 10`; do echo -n "." && sleep 1; done
   ip=`ifconfig -a | grep -A2 $IFACE | grep inet | awk {' print $2 '} | cut -b6-`
   if [ -z "$ip" ]; then
      echo " Error : Conexion fallida"
      exit 1
   fi
   route add default $IFACE
   echo " OK"
   echo "IP Asignada : $ip"

}

stop() {
   echo -n "Cerrando conexion con UCLM ..."
   if [ -z "`ifconfig -a |grep $IFACE`" ]; then
      echo " Error : No existe una conexion activa"
      exit 1
   fi
   poff uclm
   route del vpn.uclm.es
   echo " OK"
}

if [ ! $# -eq 1 ]; then
   echo "$0 [start|stop]"
   exit 1
fi

case "$1" in
   start) start ;;
   stop)  stop ;;
   *) echo "$0 {start|stop}" ;;
esac

exit 0

Para establecer conexión invocamos:

root@raptor:/home/j2sg# ./uclm.sh start
Iniciando conexion con UCLM ........... OK
IP Asignada : 161.67.172.148

Para finalizar la conexión invocamos:

root@raptor:/home/j2sg# ./uclm.sh stop
Cerrando conexion con UCLM ... OK

Colocamos el script en un directorio que sea del $PATH del sistema:

root@raptor:/home/j2sg# cp uclm.sh /usr/local/bin

Y eso es todo amigos. 🙂

Fuentes:

Anuncios

4 comentarios sobre “Conexión a VPN de la UCLM en Debian

  1. Muy buena receta, congratulaitons.

    Tengo un problemilla, al añadir la ruta la a iface ppp0 (root@mipc:/etc/ppp# route add default ppp0) el terminal me escupe lo siguiente:

    SOCADDRT: La red no está activa.

    Buscando he encontrado como solucionarlo, que es utilizar:
    root@mipc:/etc/ppp# pppd call uclm
    en lugar de:
    root@mipc:/etc/ppp# pon uclm

    y a continuación puedo ejecutar:
    root@mipc:/etc/ppp# route add default ppp0
    sin problemas

    Solucionado está, pero no lo comprendo muy bien. ¿Alguna explicación?

    1. Hola Manu.

      Ese error se produce porqué cuando vas ha añadir la nueva entrada a la tabla de rutas, la interfaz ppp0 a la que haces referencia no existe, ya que cuando invocaste pon uclm para abrir el tunel se debio de producir algún error durante la fase de negociación/autenticación, con lo cual la interfaz se eliminó, algo que puedes ver invocando ifconfig -a

      Lo que me sorprende es que con el demonio pppd te funcione, ya que cuando le pasas la opción call uclm se nutre de las mismas opciones de configuración descritas en el fichero /etc/ppp/peers/uclm leido por el comando pon.

      Para averiguar el motivo lo mejor será que utilices el modo de depuración, el cual te imprimirá por la salida estándar todo lo relativo al tunel, para lo cual solamente tienes que añadir las opciones debug dump logfd 2 nodetach cuando invocas pon tal como se indica en [1].

      Saludos y muchas gracias por tu comentario. 🙂

      [1]: http://pptpclient.sourceforge.net/howto-diagnosis.phtml#debug

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s