Servicio de Acceso Seguro a la red del DIT desde Internet 
Última actualización: 11 de Julio de 2002 (omar@dit.upm.es)
 
Introducción
Se ha creado un nuevo servicio de acceso seguro a la red del DIT desde el exterior de la misma con el objeto de permitir que usuarios localizados en cualquier punto de Internet puedan acceder a los servicios y/o máquinas de la red tal como si estuvieran dentro de la misma.
Técnicamente el servicio se basa en un servidor de túneles PPTP localizado en el CDC, que permite a los usuarios establecer túneles IP seguros (cifrados mediante MPPE). El servidor asigna dinámicamente a los clientes direcciones de la red del DIT (138.4.5.200-210), de tal forma que una vez establecido el túnel las aplicaciones se comportan virtualmente tal como si existiese una conexión física directa a la red del DIT. 
Este servicio es útil para todos aquellos usuarios que quieran evitar los filtros actuales (y futuros) que impiden, por ejemplo, acceder a servicios como el correo o samba desde el exterior. Entre estos usuarios se incluyen, por ejemplo:
•	Usuarios con conexiones ADSL en sus casas, 
•	Usuarios que acceden por modem pero que, por vivir fuera de Madrid y para evitar tarifas provinciales, no llaman directamente a los modems del CDC sino a algún proveedor de Internet, 
•	Usuarios de viaje que tengan conexión a Internet desde sus portátiles a una LAN o a un proveedor de Internet local.
Este servicio está disponible tanto para máquinas con Windows como con Linux. Para utilizarlo, se debe solicitar al CDC (guru@dit.upm.es) el alta en el mismo y seguir las instrucciones más abajo indicadas.
Pueden surgir problemas en caso de que entre el terminal y el servidor de túneles exista algún firewall o router que filtre determinados puertos o protocolos. Para que los túneles funcionen correctamente, es necesario que se dejen pasar los paquetes dirigidos al servidor de PPTP (puerto 1723) y los pertenecientes al protocolo GRE (identificador de protocolo 47).
 
Configuración del acceso en Windows:
Para configurar el acceso en Windows 98/ME/2000 es necesario:
•	Instalar el servicio de "Red Privada Virtual" (sólo para Windows 98/ME; en Windows 2000 viene instalado por defecto). Para instalarlo, ir al "Panel de Control", opción "Agregar o quitar programas", solapa "Instalación de Windows" y dentro de la opción "Comunicaciones" seleccionar "Red Privada Virtual". Probablemente os pida el CD de windows. 
•	Crear una nueva conexión de "Acceso telefónico a redes" y elegir como dispositivo el "Adaptador Microsoft VPN" (si no aparece en la lista de dispositivos junto con el modem es que no está instalado el servicio de RPV). Os pedirá un nombre para la nueva conexión (podéis darle el que queráis, por ejemplo, "RPV-DIT") y la dirección del servidor de túneles (rpv.dit.upm.es). Por defecto, los túneles se crean con la opción de cifrado de contraseñas y de datos, por lo que no hace falta modificar ninguna de las múltiples opciones del menú de propiedades de la conexión.
•	Para establecer el túnel, debéis arrancar la conexión creada en el punto anterior y como usuario y clave debéis introducir la que os ha proporcionado el CDC al registraros. Si el túnel se establece correctamente, os aparecerá en la barra de herramientas un icono similar al de las conexiones telefónicas. Para cerrar el túnel no tenéis más que hacer doble click en el icono de la conexión y pulsar la opción de desconectar.
MUY IMPORTANTE: si os conectáis desde una máquina "pública" aseguraros de que no marcáis la opción de "Guardar contraseña" al establecer la conexión, de forma que nadie pueda establecer el túnel posteriormente utilizando vuestros datos.
•	Siguiendo los pasos anteriores el túnel debería funcionar a la primera. Como comprobaciones adicionales podéis ver que tras establecer el túnel, se debe haber creado un nuevo subinterfaz IP mediante "winipconfig" en Windows 98 o "ipconfig" desde una ventada de DOS en Windows ME/2000. Otra prueba del algodón es realizar un traceroute a una dirección del DIT (por ejemplo, "tracert www.dit.upm.es" desde una ventana DOS) y ver que no aparecen direcciones ajenas al DIT.
•	Recordad que, una vez establecido el túnel, todo vuestro tráfico ira a través del túnel hasta el servidor del DIT y desde allí al destino. Esto puede resultar ineficiente para destinos fuera del DIT. Existe la posibilidad de modificar las rutas IP a mano (mediante el comando "ip route ...") para discernir que tráficos van por el túnel y cuales no. 
NOTA IMPORTANTE: Sólo para Windows98/Me: Hay que comprobar que está en blanco la casilla que contiene el nombre de dominio a utilizar por defecto para autentificarse: Ir a "Entorno de Red" -> Propiedades -> "Cliente para Redes Microsoft" -> Propiedades. En caso de realizar esta configuración, el error que se produce en el sistema, al intentar la conexión es: “ERROR 691: El equipo al que está llamando deniega el acceso porque el nombre de usuario y/o la contraseña no son válidos en el dominio”.
NOTA +: Puede ser que en Windows 98 se produzca algún problema con los buffers de envío de TCP/IP. Parece que bajando la MTU se soluciona el problema de los buffers. Con la MTU en modo automático (Cisco siempre selecciona a 1500) o cambiando la MTU de Automático a "Grande" (1500) NO se soluciona el problema (ya que es el valor por defecto). Cambiando a "Medio" ( 1200) funciona correctamente. Cambiando a "Pequeño" (576) funciona bien pero con mayor lentitud. El cambio se realiza de la siguiente manera: "Entorno de Red" -> "Propiedades":  "Adaptador de Acceso Telefónico a Redes #2 (Compatibilidad con VPN)" -> "Propiedades" -> "Avanzado": "Tamaño Paquete IP".
NOTA ++: Cuando se añade el soporte VPN, windows coloca un protocolo NDISWAN que no hace nada. Es necesario añadir el soporte ndis2 sobre tcp y el controlador ndis para que funcione.

Configuración del acceso desde Linux:
Es necesario:
•	Descargar los paquetes "ppp-mppe" y "pptpclient" desde "http://sourceforge.net/projects/pptpclient/". El paquete ppp-2.4.0 disponible en esta página está preparado para las versiones de RedHat 6.2 o anteriores. Si dispone de una distribución RedHat 7.X se deberan cargar los paquetes correspondientes a la versión ppp-2.4.1., disponibles en http://www.dit.upm.es/~cdc/rpv/ppp-2.4.1-2mppe.[src|i386].rpm. 
•	Hay dos formas de instalar: desde los binarios (es decir, utilizando los binarios generados previamente en algún otro sitio) o desde los fuentes de los paquetes (es decir, compilando):
1.	Para instalar desde los binarios procederemos tal como se indica a continuación:
- RedHat 6.X:
	 rpm -v -i --force --nodeps /path/to/file/ppp-mppe-2.4.0-4.i386.rpm
	 rpm -v -i --force /path/to/file/pptp-linux-1.0.3-1.i386.rpm
- Redhat 7.X:
	 rpm -v -i --force --nodeps /path/to/file/ppp-2.4.1-2mppe.i386.rpm
	 rpm -v -i --force /path/to/file/pptp-linux-1.0.3-1.i386.rpm
- Debian:
	 Hay tres posibilidades:
•	Utilizar el script generado por Daniel Alvarez Wise (http://www.dit.upm.es/cdc/rpv/debian-conf.sh) para configurar de forma automática la máquina. Pasos: primero editar el script para que tenga nuestros datos personales (usuario y password), despues ejecutarlo en el interfaz de comandos (con el sistema apt-get bien configurado),y por último y estando conectado a internet, probarlo utilizando las instrucciones que se proporcionan.
•	instalar con los fuentes (véase punto 2)
•	usar los módulos y paquetes precompilados que se ofrecen a continuación:
o	Descargar el fichero mppe.tar.gz que se encuentra en http://www.dit.upm.es/cdc/rpv/mppe.tar.gz
o	Descomprimir el archivo con: cd /root; tar zxvf <directorio_temporal>/mppe.tar.gz
o	Averiguar la versión del kernel que tenemos instalado: uname –a
o	En función de la versión del kernel, asociar el enlace de /root/mppe/mppe.o al módulo más próximo a nuestra versión de kernel: (si por ejemplo, tenemos la versión 2.2.17) ln -sf /root/mppe/mppe.o-2.2.18 /root/mppe/mppe.o
o	Editar el fichero /etc/init.d/modultils: pico /etc/init.d/modutils
o	Añadir la siguiente linea en el fichero (justo ANTES de la linea que pone exit 0): modprobe ppp; insmod –f /root/mppe/mppe.o
o	Descargar el fichero pptp-linux_1.1.0-2_i386.deb que se encuentra en http://www.dit.upm.es/cdc/rpv/pptp-linux_1.1.0-2_i386.deb
o	Instalar el paquete descargado: dpkg –install <directorio_temporal>/pptp-linux_1.1.0-2_i386.deb
o	Configurar el túnel siguiendo las instrucciones que se indican a continuación en el punto “Configurar el sistema”
o	Antes de probar el túnel reiniciar la máquina para que cargue los módulos necesarios
NOTA: Esta configuración ha sido probada en un Debian GNU/Linux versión 3.0 con kernel 2.2.17 sobre un Intel 80486. A pesar de que el sistema establece el túnel y funciona satisfactoriamente durante varias horas, en el caso probado, la comunicación se corta después de refrescar la dirección de la tarjeta ethernet con DHCP.

2.	Para instalar desde código fuente, ver notas al final del documento

•	Configurar el sistema:
En el proceso de instalación se genera un script llamado "pptp-command". Este script tiene un problema que se soluciona editando el fichero y borrando la "T" que aparece en la primera linea, de forma que donde pone "#!/usr/bin/perl -wT" debe poner "#!/usr/bin/perl -w".
Antes de nada también hay que comprobar si existe el directorio /etc/pptp.d y el /var/lock/subsys, en caso de que no sea así se creará con la orden "mkdir /etc/pptp.d" y "mkdir /var/lock/subsys".
Para configurar el tunel, ejecutamos el script modificado, y tras ejecutarlo aparece un menú, 
o	del que elegiremos la opción [3.) setup].
o	Dentro de esta opción aparecerá otro submenú que nos permitirá añadir una nueva entrada al fichero de secretos CHAP [2.) Add a New CHAP secret]. Utilizaremos como "Local name" el nombre de usuario en la máquina linux que estáis configurando, como "Remote name" el que se os proporciona por defecto (PPTP) y como "Password" el que os ha dado el CDC. Hecho esto volvemos al submenú de configuración.
o	También, se puede listar la clave CHAP introducida mediante la entrada del menú [1.) List CHAP secrets]. 
o	A continuación, hay que crear un nuevo tunel [5.) Add a NEW PPTP Tunnel]. A la pregunta [1.) Other. Which configuration would you like to use?:] respondemos con un número entero (si es el primer túnel que configuramos, ponemos el número 1). Después se nos pregunta el nombre del túnel que vamos a formar (por ejemplo, "RPV-DIT"), como "Server IP" el nombre del servidor de túneles "rpv.dit.upm.es" y hay que añadir las siguientes rutas "add -host 138.4.5.200/32 gw DEF_GW" y "add -net 138.4.0.0/16 TUNNEL_DEV". Como "Local name" y "Remote name" hay que usar los mismos que para la entrada CHAP. 
Para establecer el tunel, debéis ejecutar "pptp-command start" y para liberarlo "pptp-command stop". Si cuando intentemos establecer el túnel se queja de que no tenemos módulos ppp, tendremos que instalarlos a mano con el comando "modprobe ppp" o "modprobe ppp_generic" dependiendo de la versión del kernel que estemos utilizando, y luego volver a ejecutar el comando indicado con el parámetro start.
Para comprobar que el túnel está establecido podéis usar el comando "ifconfig". Debería apareceros un nuevo subinterfaz (ppp0 o algo parecido) con una dirección dentro del rango 138.4.5.200-210.
A diferencia de lo que sucede en Windows, en Linux se configuran las rutas que utiliza cada túnel, por lo que si seguís los pasos anteriores, sólo el tráfico con destino en el DIT (138.4.X.X) irá a través del túnel.

Notas sobre la instalación desde código fuente:
En el caso de no disponer de un sistema con soporte de paquetes rpm, deberemos proceder a compilar e instalar directamente desde los ficheros en formato tgz:
Fuentes en formato tar-gz o tgz:
Bajarse los ficheros "ppp-mppe-2.4.0-4.tar.gz" y "pptp-linux-1.0.3-1.tar.gz" de sourceforge.
Instalar primero el mppe:
> tar xfvz ppp-mppe-2.4.0-4.tar.gz
> cd ppp-mppe-2.4.0-4
> sh unpack.sh
> cd ppp-2.4.0
> ./configure
> make
> make install
Instalar después el cliente de pptp:
> tar xfvz pptp-linux-1.0.3-1.tar.gz
> cd pptp-linux-1.0.3
> tar xfvz pptp-linux-1.0.3.tar.gz
> cd pptp-linux-1.0.3
> make
> cp pptp ../pptp-command /usr/sbin
> cp ../options.pptp /etc/ppp
> gzip -c9 debian/pptp.8 > /usr/man/man8/pptp.8.gz
Fuentes en formato src-rpm:
Si disponemos de soporte RPM, y queremos proceder a recompilar e instalar procederemos tal que sigue:
> cd /usr/src/redhat/SPEC
> rpm -v -i /path/to/file/ppp-2.4.1-2mppe.src.rpm
> rpm -ba ppp.spec
> rpm -v -i /path/to/file/pptp-1.0.3-1.src.rpm
> rpm -ba pptp-linux.spec
> rpm -v -i --nodeps --force /usr/src/redhat/RPMS/i386/ppp-2.4.1-2mppe.i386.rpm
> rpm -v -i --nodeps /usr/src/redhat/RPMS/i386/pptp-1.0.3-1.i386.rpm