Conexión a la VPN de UGR desde GNU/Linux

Anuncio
Conexión a la VPN de UGR desde
GNU/Linux
Copyright © Juan Martín López (nauj27)
Esta receta le guiará en el proceso de conexión a la red privada virtual (VPN) de la Universidad de Granada (http://www.ugr.es/).
La conexión se realiza mediante PPTP (Point-to-Point Tunneling Protocol) con
encriptación MPPE (Microsoft Point-to-Point Encryption).
Debido a que no hay soporte nativo para MPPE es necesario descargar el parche para
el kernel (http://www.kernel.org/) en la dirección www.polbox.com/h/hs001/
(http://www.polbox.com/h/hs001/). Yo lo he hecho con el kernel 2.4.22 y el parche
MPPE/MPPC para 2.4.22. Personalmente recomiendo compilar todo lo relacionado
con PPP como módulos, incluido por supuesto el módulo para MPPE que aparece al
parchear el kernel.
Aunque se dice en la misma web que es necesario usar el último PPP y parchearlo también, en Debian SID no es necesario ya que he conectado con el PPP que trae.
Una vez compilado el kernel con el parche para MPPE/MPPC tenemos un módulo llamado ppp_mppe_mppc.o que es el que nos permitirá habilitar encriptación MPPE necesaria para poder conectarnos a RedUGR. Es recomendable añadir las siguientes líneas en
el archivo /etc/modules.conf:
alias ppp-compress-18 ppp_mppe_mppc
alias mppe
ppp_mppe_mppc
Lo primero que debemos hacer es levantar la interfaz de red inalámbrica y obtener la
1
Conexión a la VPN de UGR desde GNU/Linux
dirección IP local. Esto lo podemos hacer con:
:~#
iwconfig wlan0 essid cviugr mode managed key off
:~# dhclient wlan0
Una vez que tenemos conexión dentro de la red inalámbrica local tenemos que activar el
túnel PPTP. Lo primero será cargar el módulo para MPPE/MPPC mediante:
:~# /sbin/modprobe mppe
CSLIP: code copyright 1989 Regents of the University of California
PPP generic driver version 2.4.2
MPPE/MPPC encryption/compression module registered
A continuación debemos pedir la clave para la conexión PPP accediendo a la dirección
https://192.168.150.1/. Cuando hayamos obtenido la clave se ha de colocar en el archivo
/etc/ppp/chap-secrets de la siguiente manera:
"[email protected]"
PPTP
"<contraseña-obtenida>"
*
Y conectar haciendo:
:~# pppd nobsdcomp nodeflate require-mppe novj nomppe-stateful name [email protected]
Ahora podemos comprobar cómo tenemos las interfaces de red que nos interesan (aparte
de que pueda haber alguna otra). Tenemos la interfaz de la tarjeta de red inalámbrica con
2
Conexión a la VPN de UGR desde GNU/Linux
una IP de la red local y la nueva interfaz del tipo PPP con la IP pública. Por ésta nueva
interfaz encaminaremos como veremos a continuación todos los paquetes que salgan de
nuestra máquina:
:~# /sbin/ifconfig
lo
Link encap:Local Loopback
inet addr:127.0.0.1
Mask:255.0.0.0
UP LOOPBACK RUNNING
MTU:16436
Metric:1
RX packets:444 errors:0 dropped:0 overruns:0 frame:0
TX packets:444 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:39930 (38.9 KiB)
ppp0
TX bytes:39930 (38.9 KiB)
Link encap:Point-to-Point Protocol
inet addr:150.214.205.61
P-t-P:150.214.205.30
UP POINTOPOINT RUNNING NOARP MULTICAST
MTU:1496
Mask:255.255.255.255
Metric:1
RX packets:870 errors:0 dropped:0 overruns:0 frame:0
TX packets:1004 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:183092 (178.8 KiB)
wlan0
Link encap:Ethernet
TX bytes:78033 (76.2 KiB)
HWaddr 00:03:9D:40:5F:0B
inet addr:192.168.150.84
Bcast:192.168.150.255
UP BROADCAST RUNNING PROMISC MULTICAST
MTU:1500
Mask:255.255.255.0
Metric:1
RX packets:5530 errors:0 dropped:0 overruns:0 frame:0
TX packets:1602 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:796396 (777.7 KiB)
TX bytes:224505 (219.2 KiB)
Interrupt:9 Base address:0x100
3
Conexión a la VPN de UGR desde GNU/Linux
Como apuntabamos antes, encaminamos los paquetes por la interfaz del túnel ppp0. En
caso de tener por ejemplo un modem en ppp0 y la interfaz del túnel crearse como ppp1
se deberá adaptar la línea para encaminar los paquetes a través de la que nos interesa.
:~# /sbin/route add default ppp0
Como siempre, podemos comprobarlo:
:~# /sbin/route
Kernel IP routing table
Destination
Gateway
Genmask
Flags Metric Ref
Use Iface
vpn5030.ugr.es
*
255.255.255.255 UH
0
0
0 ppp0
150.214.20.0
*
255.255.255.0
U
0
0
0 ppp0
192.168.150.0
*
255.255.255.0
U
0
0
0 wlan0
80.36.17.0
*
255.255.255.0
U
0
0
0 ppp0
default
*
0.0.0.0
U
0
0
0 ppp0
Con la posibilidad de añadir la opción -n si queremos ver las direcciones IP correspondientes:
:~# /sbin/route -n
Kernel IP routing table
Destination
Gateway
Genmask
Flags Metric Ref
Use Iface
150.214.205.30
0.0.0.0
255.255.255.255 UH
0
0
0 ppp0
150.214.20.0
0.0.0.0
255.255.255.0
U
0
0
0 ppp0
192.168.150.0
0.0.0.0
255.255.255.0
U
0
0
0 wlan0
4
Conexión a la VPN de UGR desde GNU/Linux
80.36.17.0
0.0.0.0
255.255.255.0
U
0
0
0 ppp0
0.0.0.0
0.0.0.0
0.0.0.0
U
0
0
0 ppp0
Teóricamente al realizar la conexión PPP deberíamos haber obtenido los DNS pero
no es así, al menos en mi caso. Por este motivo tengo siempre un archivo llamado
/etc/resolv.conf.backup que copio en este punto sobre el de configuración. El
archivo es un archivo de texto plano que contiene lo siguiente:
search localdomain
nameserver 80.58.0.33
nameserver 80.58.32.97
Así,
:~# cp /etc/resolv.conf.backup /etc/resolv.conf
Y ya está, ya tenemos Internet :-)
:~# ping google.es
PING google.es (216.239.33.100): 56 data bytes
64 bytes from 216.239.33.100: icmp_seq=0 ttl=45 time=519.9 ms
64 bytes from 216.239.33.100: icmp_seq=1 ttl=45 time=266.4 ms
64 bytes from 216.239.33.100: icmp_seq=2 ttl=45 time=328.3 ms
--- google.es ping statistics --3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 266.4/371.5/519.9 ms
5
Conexión a la VPN de UGR desde GNU/Linux
Para conectar a la red privada virtual desde casa es exactamente igual, solo que la clave se
obtiene en https://vpn.ugr.es/ y en lugar de acceder por la red inalámbrica accedemos a
través de nuestra conexión normal a Internet. Además, si no queremos que todo el tráfico
de Internet vaya a través del túnel, podemos encaminar solo el que nos interese:
:~# /sbin/route add -net 150.214.0.0 ppp0
Actualmente se está trabajando en un script para automatizar el proceso y no haya que
hacerlo de manera manual. Espero que se puedan seguir los pasos sin demasiados problemas ^_^
6
Descargar