Thursday, February 21, 2008

VPN en Ubuntu Gutsy

Por el trabajo, tengo que conectarme a una VPN. El servidor de VPN lo provee un firewall Tipping Point X505, que no tiene problemas con máquinas Windows, pero no conseguí conectarme con network-manager-pptp; por lo que decidí probar pptpconfig.

Intenté muchas combinaciones de configuración, pero se intentaba levantar la VPN quedando inexplicablemente siempre en stating.

Luego de algunas pruebas y mirar el archivo /var/log/messages, me fijé que el problema era que no agregaba a la tabla de rutas la ruta para redireccionar a la LAN; por lo que si, cuando se detenía la salida de tail -f /var/log/messages daba un sudo ip route add 'x.x.x.0/24' dev 'ppp0', el problema se resolvía.

Pero es un verdadero problema estar todo el tiempo agregando la ruta a mano. La solución la encontré en Kutuma's Ramblings.

Básicamente, se trata de agregar un archivo /etc/ppp/ip-up.d/vpnroute (o el nombre que sea) con el contenido:

#!/bin/sh
if [ "${PPP_IPPARAM}" = "MyVPN" ]; then
route add -net x.x.x.0 netmask 255.255.255.0 dev ppp0
fi
Donde MyVPN es el nombre de la VPN que configuré y x.x.x.0 la dirección IP de la red LAN.

Luego bastó un sudo pon MyVPN para levantarla.


El contenido de /etc/ppp/peers/MyVPN es:

# tunnel MyVPN, written by pptpconfig $Revision: 1.12 $

# name of tunnel, used to select lines in secrets files
remotename MyVPN

# name of tunnel, used to name /var/run pid file
linkname MyVPN

# name of tunnel, passed to ip-up scripts
ipparam MyVPN

# data stream for pppd to use: x.x.x.y es la IP del Firewall
pty "pptp x.x.x.y --nolaunchpppd "

# domain and username, used to select lines in secrets files
name empresa

usepeerdns
require-mppe
refuse-eap
persist
debug dump

# do not require the server to authenticate to our client
noauth

# adopt defaults from the pptp-linux package
file /etc/ppp/options.pptp

# end of tunnel file

Espero que les sirva... y me recuerde cuando renueve el equipo :)