lunes, 18 de agosto de 2008

Logrando conectividad en ambientes paranoicos, fácil y rápido (!?)

Hoy chateando con pepe, me planteó un esquema bastante raro de una situación que le pasaba, la pregunta fue, como hacer para conectarse a un servidor que está atrás de un NAT, en una red local (LAN) de un proveedor, hiper firewalleado, que por reglas de seguridad no permite incluso el tráfico de información entre las máquinas de la misma red.
El esquema era mas o menos el siguiente:

Pepe, enloquecido
IP: 192.168.0.1
Firewall que bloquea TODO el tráfico LAN (Excepto entre la máquina cliente y su gateway)
Servidorcito Debian
IP: 192.168.0.2

O sea, una lan, sin comunicación , las máquinas están isoladas para salir por el NAT a internet solamente, y ninguno de los dos extremos tiene una salida pública a intenet. Después de plantear algunas posibles soluciones, encontramos una solución muy rápida de implementar, esa solución se llama Hamachi, y la pueden descargar gratis (aclaro que es privativo).

Instalarlo es bastante trivial, pego los pasos para hacerlo en linux, en windows es más trivial aún.

Descargamos el paquete para linux, y lo descomprimimos:
$mkdir /tmp/hamachi;cd /tmp/hamachi
$wget http://files.hamachi.cc/linux/hamachi-0.9.9.9-20-lnx.tar.gz
$tar xvf
hamachi-0.9.9.9-20-lnx.tar.gz

Accedemos al directorio, y lo instalamos (como root)
#cd
hamachi-0.9.9.9-20-lnx
#make install

Ejecutamos tuncfg para configurar el dispositivo tun
#./tuncfg/tuncfg

Desde consola, con un usuario normal, procedemos a crear nuestra identidad (par de clave publica-privada y archivos de control en el home)
$hamachi init

Iniciamos hamachi
$hamachi start

Seteamos un nick y nos logueamos en el servicio

$hamachi set-nick pulpo
$hamachi login

Verificamos el estado de la red
$hamachi
Hamachi, a zero-config virtual private networking utility, ver 0.9.9.9-20

version : hamachi-lnx-0.9.9.9-20
pid : 7689
status : logged in
nickname : pulpo


Creamos una red
$hamachi create red-pulposa
Password:
Creating red-pulposa .. ok

Como la red anterior la creamos nosotros, ya estamos logueados a la misma, acá fue donde pepe bajó el cliente para windows y lo instaló, en este punto simplemente verifiqué que estuviera conectado después de pasarle el nombre de la red y la password de la misma.
$hamachi get-nicks
Retrieving peers' nicknames ..

$hamachi list
* [red-pulposa]
* 5.243.72.135 sertec 201.254.191.139:29197

LA ip de los nodos conectados, son visible arriba, en este caso sertec (pepe) tiene la ip 5.243.72.135, probamos hacer un ping:
$ping 5.243.72.135
PING 5.243.72.135 (5.243.72.135) 56(84) bytes of data.
64 bytes from 5.243.72.135: icmp_seq=1 ttl=128 time=776 ms
64 bytes from 5.243.72.135: icmp_seq=2 ttl=128 time=119 ms
64 bytes from 5.243.72.135: icmp_seq=3 ttl=128 time=250 ms
^C
--- 5.243.72.135 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2006ms
rtt min/avg/max/mdev = 119.687/382.323/776.705/283.943 ms

Para desconectarse de una red:
$hamachi go-offline red-pulposa
Going offline in red-pulposa .. ok


Para conectarse de nuevo:
$hamachi go-online red-pulposa
Going online in red-pulposa .. ok


Para ver una ayuda, y ver otros comandos que pueden ser útiles:
$hamachi help

Espero que a alguien le sirva!
[]'s