Magia Linuxera: Gateway para compartir una VPN

No es casual que se utilice el termino gurú para referirse a la gente que sabe mucho de GNU/Linux. Ocurre que Linux tiene tanta potencia, y permite hacer cosas grosas con simplicidad y elegancia, que cuando ves a una persona resolverte la vida ejecutando dos comandos mágicos en una terminal, lo sentís un verdadero gurú.

Hoy configuré en la oficina algo muy simple, pero muy útil que me renovó ese sabor de la “magia” de linux.

Resulta que en la empresa donde trabajo, tenemos clientes distribuidos por distintas partes del mundo y a menudo nos ocurre que varias personas necesitamos acceder a la red del mismo cliente al mismo tiempo y las VPNs que nos dan solo soportan una conexión por usuario.

La situación se nos volvió crítica cuando tuvimos que hacer pruebas en simultaneo con el cliente previo a una implementación, terminar de instalar y configurar algunos módulos y al mismo tiempo dar soporte a otro soft que tenemos instalado en el mismo cliente. Teníamos al rededor de 6 personas intentando trabajar y solo dos conexiones VPN.

Esta escaecés de credenciales nos llevó al extremo de tener que armar grupos de Skype y planillas de google calc para coordinar el uso de las VPNs.

Finalmente encontramos una solución a este problema configurando uno de los servidores linux como gateway para compartir la VPN.

Paso a explicar entonces el procedimiento para compartir una VPN Cisco en Linux.

Paso 1: Conectarse a la VPN

Por ahi alguno de los lectores ya trabaja con VPNs cisco desde Linux. En mi caso, las estaciones de trabajo de la oficina usan windows y siempre utilizamos el cliente de cisco. Para los que como yo, tienen que pasar las configuraciones de las VPN a Linux, explico el procedimiento:

El cliente que se utiliza para conectar a VPNs cisco es el vpnc, este cliente utiliza archivos .conf que, a diferencia de los .pcf que utiliza el cliente de windows, no están encriptados.

Para convertir los pcf  al formato que utiliza la herramienta vpnc de linux, existe un script llamado pcf2vpnc, en Ubuntu viene junto con el paquete vpnc, en otras distros se baja de http://svn.unix-ag.uni-kl.de/vpnc/trunk/pcf2vpnc

La ejecución de este script es:
$ pcf2vpnc mivpn.pcf > mivpn.conf

Luego como root (o anteponiendo sudo)
# cp mivpn.conf /etc/vpnc
# vpnc mivpn

A partir de este momento estaremos conectados a la VPN. Notese que al ejecutar el comando ifconfig se puede ver una interfáz tun0 que corresponde al tunel VPN que acabamos de levantar.

Paso 2: El gateway

Configurar un linux como gateway es bastante sencillo.

Suponiendo que nuestra VPN corresponde a la interfáz tun0 y la placa de red del equipo es eth0 ejecutaremos los siguientes comandos como usuario root:
# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
# iptables -A FORWARD -i eth0 -j ACCEPT

Paso 3: Rutas

Ahora que nuestro equipo está conectado a la VPN y opera como gateway, tenemos que decirle a las pcs que se van a conectar, que utilicen nuestro equipo como ruta a los hosts al otro lado de la vpn.
Suponiendo que las ip al otro lado de la vpn son de la forma: 192.168.226.X y la ip de nuestro equipo gateway es 192.168.1.32 ejecutaremos el siguiente comando:

En linux

$ route add -net 192.168.226.0/24 gw 192.168.1.32

En windows

> route add 192.168.226.0 mask 255.255.255.0 192.168.1.32

Paso 4: El acto de fe

A continuación, haremos el acto fe que se realiza después de probar cosas raras y mágicas como esta: probar y corroborar el funcionamiento de nuestra solución, para luego danzar cual indígena en trance festejando que todo funciona (?)

Apendice feliz: Juntando todo en un script

Como todo buen administrador, querremos scriptear este proceso para no tener que volver a hacerlo paso a paso la próxima vez que se levante la VPN o cuando se reinicie el equipo.

Para ello les dejo el siguiente script que podrán luego colocar en su rc.local
#!/bin/bash
if test $USER = root
then
echo "Levantando tunel esv"
vpnc esv
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
iptables -A FORWARD -i eth0 -j ACCEPT
else
echo "Este script debe ser ejecutado como usuario root"
fi

En fin, ¡Espero que les haya sido útil!

Un saludo,

Germán

Algunos tips sobre cómo enseñar

Buscando insatisfactoriamente material de estudio para darle a mis alumnos de mi materia de linux, llegué a las puertas digitales de la asociación civil Gleducar, que se autodenomina como una comunidad educativa libre.

Promueven la educación utilizando tecnologías libres. El material que ofrecen también es libre y está todo licenciado bajo copyleft. Además soportan el desarrollo de proyectos de innovación pedagógica, entre muchas otras lineas de acción.

Me anoté en las listas de correo de la asociación y envié un correo comentando mi situación y pidiendo asistencia sobre el material de estudio y sobre metodos de enseñanza que pudiera utilizar para mis clases.

Recibí una respuesta a los pocos minutos de Iris Fernández con una serie de tips y consejos generales muy útiles y con los que concuerdo sobre como enseñar.

Cito a continuación:

Hola!!
Ya que el tema de “cómo enseñar” me apasiona, y que decís que esta va a ser
tu primera experiencia como docente, me gustaría decirte algunas cosas que
uso como elementos básicos para cualquier actividad docente. Parecen
evidentes, y si para vos lo son, es porque vas por buen camino. Pero la
mayoría de la gente no tiene tan claras estas cosas:
1) Siempre ir de lo más concreto a lo más abstracto, y de lo simple, a lo
complejo. Es decir, no empieces con teoría, ni con cosas que “después las
van a entender”. Siempre es mejor empezar por cosas concretas y simples.

2) Siempre vincular todo con lo conocido, empezar preguntando y no
respondiendo. Qué saben sobre archivos? Qué saben sobre discos, carpetas,
memorias, etc.? Antes de empezar con una exposición sobre qué son los
archivos.

3) Siempre trabajar en proyectos concretos, o resolviendo problemas. No
estudiar cosas sin enmarcarlas en proyectos o situaciones problemáticas.
Por ejemplo, en lugar de empezar diciendo “vamos a estudiar el uso de
matrices” (programación), empezar planteando una situación en la que se
necesiten matrices, y que se sienta como algo necesario aprenderlo (“Un
médico tiene una serie de pacientes que … bla bla”). En lugar de empezar
haciendo una lista de comandos, inventarte una historia de un detective que
encuentra una lista que se borró porque se mojó el papel y tiene que
reconstruirla, o alguna cosa por el estilo. O simplemente, hacer un trabajo
práctico sobre… o una wiki sobre… o un diccionario de comandos, etc.

Son casi las mismas cosas son las que me aconsejó el vicedirector de la escuela cuando nos reunimos a definir los contenidos de la materia, y los encontré acá claramente expresados. Me pareció buena idea compartirlos para que cualquier persona que se esté iniciando en la docencia como yo, pueda contar con estos excelentes consejos.

Estoy contento con el hallazgo de gleducar, creo que encontré varios intereses y causas comunes con esa comunidad, probablemente me sume a colaborar con ellos dentro de mis posibilidades.

En fin, eso es todo por ahora, más adelante continuaré posteando mis hallazgos, aventuras y reflexiones sobre la educación y la docencia.

Gracias por leer.

Germán

Semana Santa en series

Esta Semana Santa, no fue para nada como la había pensado hace un par de meses.

El martes me arrancaron un espejo del auto, cosa que se sumó a la gran cantidad de pendientes que tiene mi querido pero muy descuidado vehiculo y me obligó a quedarme en casa, así que me quedé mirando series.

Doctor Who – S07E06 – The Bells of Saint John

Disfruté del regreso de mi querido Doctor Who, en “The bells of St. John”, con nueva companion incluida, ahh Clara Oswald *suspiro*, i think i’m in love with you.

Me gustó mucho el estilo visual del episodio, realmente se lo vio muy atractivo, al igual que el especial de navidad, de algún modo siento que renovaron el aspecto visual de la serie. Also, La química entre el doctor y Clara es genial.

Peeeero, el argumento del episodio no termina de cerrar. Tiene muchos detalles en la narrativa que no me terminaron de convencer.

En fin, fue lindo que haya un episodio nuevo de DW para ver. Para saciar mi sed de trama, me volví a mirar “Blink”, el genial décimo episodio de la tercera temporada, a mi gusto, la mejor tráma que vi en la serie y también escrito por Moffat. Muy recomendable btw, si es que no lo viste.

 

The Walking Dead – S03E16

El season finale de The Walking Dead donde abundaron las muertes y los cabos sueltos para enganchar luego la próxima temporada, La trama estuvo OK, pero el final me pareció demasiado tranquilo para un season finale. Faltó un gancho al final que te deje atrapado a la expectativa de la próxima temporada.

Game of Thrones – S03E01

Awww yeahh, por fin volvió Game of Thrones.

No puedo hablar mucho de las visuales, visualmente el episodio es excelente como todos los episodios de GoT.

Argumentalmente, es una lástima que se haya empezado a distanciar de los libros. Es decir, entiendo que hay que hacer adaptaciones, pero veo muchos cambios con poco sentido y a cosas que a mi gusto ya estaban bien en los libros.

Cómo episodio, contó un poquito en que anda cada uno, bastante saltarín de una historia a la otra. Rara la historia de Harennal, no entendí muy bien a que viene ese cambio en la trama respecto a los libros. A Jon Snow le dieron un giro interesante respecto a sus motivaciones para pasarse de bando. Y como era de esperarse, no hicieron todo el teatro de “barba blanca” porque obviamente los espectadores viendolo, ya se dan cuenta que es Ser Barristan Selmy.

Me gustaron los argumentos de Tywin para desheredar a Tyrion, mucho más claros y contundentes que los que expone en el libro que parecían más un capricho que otra cosa.

En fin,

Espero que quienes lean esto hayan pasado un excelente fin de seman largo, comido muchos chocolates y descansado mucho como yo. Y les deseo un excelente comienzo de semana 😀

Germán