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: "nombre@fedro.ugr.es" PPTP "<contraseña-obtenida>" * Y conectar haciendo: :~# pppd nobsdcomp nodeflate require-mppe novj nomppe-stateful name nombre@fedro.ugr.es 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