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