VPN con Hamachi y NxFree Junio 9, 2008
Posted by superpiwi in Linux, Tips, Ubuntu.trackback
Son mas de las 2:30 de la mañana y estoy conectado al ordenador de mi empresa preparando el trabajo que hare mañana (mejor dicho, el trabajo que hare hoy). Ahora desconectare, dormire un par de horas (3 o 4) y me levantare temprano para ir a trabajar. Pero ya he ido adelantando algo del trabajo y eso es gracias a la magia de la “VPN”.
¿Que es una VPN?
Pues imaginate por ejemplo un ordenador en Madrid, un ordenador en Francia y otro ordenador en China que se unen y se ven entre si (unos ven las ips de los ottros) creando una especie de red de area local entre ellos a pesar de la distancia. Para ello emplean la infraestructura de internet, pero en esa red que crean, solo ellos se ven entre si, el resto de usuarios de internet no entran a esa red a menos que se les “invite”.
Mas o menos una VPN es esto.
¿Para que puede servir?
Pues en mi caso para conectarme al ordenador de mi empresa y trabajar desde mi casa como si fisicamente estuviera delante del ordenador de la oficina. Asi si por ejemplo un dia me apetece quedarme en casa, me quedo y seguramente nadie me echara en falta.
O en tu caso por ejemplo para crear una red “solo” con tus amigos y poder echar partidas online a ese juego que tanto te gusta.
¿Parece interesante, no?. Veamos como podemos crear una red VPN y como poder manejar un ordenador de manera remota.
Para montar una VPN, vamos a emplear Hamachi.
Primer paso es descargar hamachi, desde la siguiente direccion y compilarlo:
$ cd hamachi
$ make
Si tienes problemas puedes leer el fichero README incluido con el codigo fuente.
Una vez instalado como root ejecutamos:
$ /sbin/tunecfg
$ hamachi-init
$ hamachi start
$ hamachi login
Y ya tenemos hamachi ejecutandose. Nos habra asignado una IP de hamachi.
Si ahora queremos unirnos a una red VPN ya existente ejecutariamos:
$ hamachi join NOMBRE_DE_LA_RED
Y tras introducir la password de esa red, ya estariamos dentro. Podriamos hacer un ping al resto de integrantes de la red para comprobarlo.
Si en cambio queremos crear una VPN introducimos el nombre deseado
$ hamachi create MI_PROPIA_RED
Si el nombre no esta pillado (ocupdo) ya nos crea el enlace. en otro caso
debemos elegir otro nombre.
Nos pedira password, especificamos una, esa sera luego la password
que deberan poner el resto de usuarios (cuando hagan un join) si quieren añadirse a nuestra red.
Volvamos al paso de unirnos o asociarnos a una red ya existente, ejecutamos:
$ hamachi join MI_PROPIA_RED
con el nombre de la red a la que queremos unirnos.
Nos pide el password, lo ponemos y ya estamos dentro de la VPN.
con list obtenemos la lista de maquinas que estan actualmente unidas a la VPN:
$ hamachi list
root@soledad:~# hamachi list
* [UBUNTULIFE_VPN]
* 5.0.33.332 192.168.33.333:1449
5.221.33.240
5.221.22.124
5.222.22.13
Es importante ejecutar:
$ hamachi go-online
Para poner en estado “online”, en otro caso nuestro equipo sera visible pero el resto de usuarios no podran conectar con el.
Esto se indica con un * en la lista de equipos, * indica aquellos que estan on-line y disponibles
+ indica aquellos equipos con los que se ha perdido la conexion.
Otro comando util es “set-nick” permite ponernos un nick o alias al nombre de nuestro PC. a su vez con get-nicks recuperamos los nicks del resto de integrantes de la VPN, lo que es util cuando hay muchos usuarios conectados, asi podremos saber quien es quien.
root@soledad:~# hamachi get-nicks
Retrieving peers’ nicknames ..
root@soledad:~# hamachi list
* [UBUNTULIFE_VPN]
* 5.0.33.122 Jacobo-Curro 192.168.22.22:1449
5.221.33.50 Juan
5.221.33.24 anonymous
* 5.222.33.13 Jacobo-Casa 58.17.22.11:20482
Con esto ya tenemos la VPN montada. Hemos creado una red (create) y el resto de usuarios se ha unido a nuestra red (join). Seria bueno añadir un script del tipo:
#!/bin/bash
case “$1″ in
start)
hamachi-init
hamachi start
hamachi login
hamachi join NUESTRA_RED password
hamachi go-online NUESTRA_RED
hamachi set-nick Nuestro_Nick
#hamachi list
;;
stop)
hamachi logout
hamachi stop
;;
*)
echo “Usage: $0 {start|stop}”
exit 1
;;
esac
En el /etc/init.d para que se cree la VPN cada vez que nos iniciemos sesion y nos asociemos, cada vez que arranquemos el PC. para eso fijamos que se ejecute este script en los diferentes niveles de arranque:
root@soledad:/etc/init.d# update-rc.d hamachi defaults
Adding system startup for /etc/init.d/hamachi …
/etc/rc0.d/K20hamachi -> ../init.d/hamachi
/etc/rc1.d/K20hamachi -> ../init.d/hamachi
/etc/rc6.d/K20hamachi -> ../init.d/hamachi
/etc/rc2.d/S20hamachi -> ../init.d/hamachi
/etc/rc3.d/S20hamachi -> ../init.d/hamachi
/etc/rc4.d/S20hamachi -> ../init.d/hamachi
/etc/rc5.d/S20hamachi -> ../init.d/hamachi
Una cosa importante: Cuidado con los firewalls, que podria ser que al estar activo, no te deje alcanzar el resto de equipos, es decir, hacemos un ping al resto de equipos que nos sale en la “hamachi list” y no los alcanzamos. Si acaso tenemos un firewall activo, lo deshabilitamos.
En mi caso, deshabilito el firewall firestarter:
$ /etc/init.d/firestarter stop
Para comprobar que todo va bien, tambien podemos comprobar nuestra ip que nos asigna Hamachi.
Con ifconfig podemos ver nuestra ip de VPN:
ham0 Link encap:Ethernet HWaddr 0A:98:C4:16:AC:FE
inet addr:5.221.33.36 Bcast:5.255.255.255 Mask:255.0.0.0
UP BROADCAST RUNNING MULTICAST MTU:1200 Metric:1
RX packets:31 errors:0 dropped:0 overruns:0 frame:0
TX packets:24 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:4914 (4.7 KiB) TX bytes:3405 (3.3 KiB)
Existe una aplicacion grafica llamada hamachi-gui que nos permite hacer todos estos pasos que hemos hecho desde consola.
Nos bajariamos el paquete .deb correspondiente y con doble click lo instalamos. despues desde consola ejecutando:
$ hamachi-gui
la iniciamos:
Con la aplicacion grafica podemos hacer lo mismo que hemos hecho antes con la consola: Crear una red nueva VPN (create), asociarnos a alguna red VPN ya existente (join) o ver nuestra IP y la del resto de equipos que estan conectados.
Bien, en este punto hemos creado una red VPN (uno de nosotros) y el resto de equipos se ha unido (join) pero claro, poco mas podemos hacer. unos a otros se hacen ping y ven que se alcanzan. Si quisieramos jugar a un juego online, uno de los equipos montaria el server y el resto ya podria acceder indicando en las opciones del juego que pertenecen a la misma LAN. Pero si queremos hacer mas cosas, lo que tenemos que hacer es montar un servidor en uno de los equipos.
Asi lo tengo yo montado, tengo una VPN entre mi PC de trabajo y mi PC de casa, y en mi PC de trabajo monte un servidor ssh, de esta manera accedo a los recursos del PC de trabajo.
Para montar un servidor SSH puedes consultar este tutorial.
Si montas un servidor SSH en uno de los PCs que forman parte de la red VPN ya puedes acceder a el desde la consola de la forma:
$ ssh usuario@servidor_remoto
O incluso si usas nautilus, empleando la URL: ssh://user@servidor_SSH/ruta
Ejemplo:
Para Konqueror es igual, pero empleando como URL: fish://user@servidor_ssh/ruta
Aqui ya depende de lo que quieras servir/ofrecer en el equipo. Hemos instalado un servidor SSH, pero podriamos instalar un web server, o cualquier otro tipo de servicio. De todas formas con SSH nos basta y sobra para acceder por consola al equipo remoto, a su sistema de fichero y es seguro, pues la comunicacion va encriptada. Incluso con SSH podemos hacer Port forwarding.
Port forwarding
El port forwarding es util cuando queramos acceder a una maquina/puerto de la red, a traves del equipo que hace de servidor SSH.
Lo que hacemos es mapear un puerto local de nuestra maquina, conectar mediante ssh al SSH server y solicitar peticiones al otro equipo:puerto que es accesible mediante la maquina que hace de SSH server.
Es decir empleamos un puerto local de nuestra maquina como si fuera el puerto de otra maquina a la que podemos acceder mediante el servidor SSH.
Lo intentare explicare mejor. Por ejemplo tenemos:
- nuestro pc en casa : LOCAL
- el pc remoto con el SSH al que llamaremos SSH_SERVER
- y otro PC de la red remota donde esta una base de datos y que llamaremos ORACLE_SERVER
Supongamos que desde casa queremos conectar con la base de datos,
a priori no podemos, pq no tenemos acceso a esa maquina (ORACLE_SERVER)
solo tenemos acceso al SSH_SERVER. pero a traves de este SSH_SERVER
si que podemos acceder a la maquina de la base de datos. Asi que vamos a usar a este SSH SERVER como intermediario. Vamos a mapear un puerto de los de nuestra maquina local (p.ej 8888 ) para simular que es el puerto 1521 (puerto por defecto de la base de datos Oracle) de la base de datos remota. Asi cuando ataquemos al 8888 local, realmente estaremos atacando al puerto
1521 de ORACLE_SERVER pero a traves del tunneling SSH que se habra creado.
Esto lo hariamos asi:
$ ssh -v -L 8888:ORACLE_SERVER:1521 -p 22 SERVIDOR_SSH
Donde:
-v : Modo verbose, vete contandome todo lo que va pasando
-L : indica cual es el puerto local que quiero usar
Luego vendria la IP remota y el puerto remoto
-p : indica el puerto del SSH (22 es el valor por defecto del SSH, pero podriamos estar usando otro)
y por ultimo la direccion IP del servidor SSH
Existe una aplicacion para facilitar la creacion de estos tuneles. Se llama gSTM.
Ahora la prueba de fuego.
conecta con tu cliente SQL a localhost:8888
si estamos viendo las tablas de ORACLE_SERVER del puerto 1521 a traves de nuestro puerto local 888, significa que el Port forwarding lo hemos ejecutado bien, y realmente estamos accediendo a traves del tunel SSH.
Pero estar accediendo al equipo remoto mediante ssh (la consola) y port forwarding es un poco “rollo”. No seria mejor poder acceder a nuestro PC remoto como si realmente estuvieramos sentado delante de el.
Vamos a ver como conseguirlo. Y como un ejemplo de ello te muestro una pantalla de mi Pc local, si te fijas estoy accediendo a mi PC del trabajo mediante una sesion remota.Es genial!! desde mi casa estoy controlando el PC de mi oficina.
La magia ahora es de NxFree. NX Free es parecido a VNC, pero tiene la ventaja de que comprime
las X, asi que es bastante rapido, NXFree lo unico que requiere es tener instalado en el ordenador remoto,ssh y eso ya lo teniamos. Asi que procedemos a su instalacion.
En el ordenador que queramos controlar via NX Free, instalamos los 3 siguientes paquetes (que descargamos desde aqui)
Los descargamos y los instalamos en este orden:
$ sudo dpkg -i nxclient_3.2.0-9_i386.deb
$ sudo dpkg -i nxnode_3.2.0-8_i386.deb
$ sudo dpkg -i nxserver_3.2.0-11_i386.deb
Después debemos configurar lo siguiente, Editamos el fichero de configuracion de ssh:
$ sudo gedit /etc/ssh/sshd_config
y añadimos esta linea al final del archivo:
AuthorizedKeysFile /usr/NX/home/nx/.ssh/authorized_keys2
Reiniciamos ssh:
$ sudo /etc/init.d/ssh restart
Comprobamos que todo funciona bien
$ sudo /usr/NX/bin/nxserver –status
root@soledad:~/Desktop# sudo /usr/NX/bin/nxserver --status
NX> 900 Connecting to server …
NX> 110 NX Server is running.
NX> 999 Bye.
Con esto queda instalado el servidor en el Pc y como podemos acceder a el a traves de su IP de hamachi cuando estamos unidos a la red VPN, significa que podemos controlarlo remotamente mediante nuestro usuario de ssh.
Bien, si queremos controlarlo desde otro PC con Linux, basta con instalar el cliente de Nxfree (nxclient_3.2.0-9_i386.deb) Si en cambio queremos controlarlo desde una maquina con Windows, el
cliente para Windows de NxFree esta aqui.
Con esto se instala una entrada en Aplicaciones > Internet > NXClient for Linux desde ese menu podemos acceder a un Wizard donde podemos configurar los equipos remotos a los que queremos acceder.
El equipo remoto debe tener instalado NXFree Server y SSH y ser accesible (pertenecer a nuestra VPN), pero con este asistente podemos definir el acceso a tantos equipos como queramos.
Bastaria con poner la IP del equipo remoto (la que nos habra dado Hamachi para ese PC de acuerdo a nuestra VPN), y el escritorio que usa el equipo (Gnome o KDE por ejemplo). Despues a la hora de conectar, indicamos el usuario y password SSH del equipo remoto y ya estariamos dentro de ese PC. Te recuerdo que NXfree trabaja sobre SSH.
Resumen: Hemos creado una VPN para formar una red interna entre los equipos que queramos e instalado NXFree en uno de ellos para poder acceder remotamente desde otro de esos equipos que forman parte de la VPN.
Son las 4 de la mañana y ahora “si” que me voy a dormir. Espero que sirva este tutorial y si tenemos que mejorarlo, ya sera otro dia…








Excelente lo voy a probar ya que anteriormente en el 7.10 no lo pude instalar, a ver como sale con el 8.04
Saludos!!
Desde casa no se curra y menos horas extras. Sacrílego.
Yo he tenido varios problemas con redes vpn (incluso tenía que reiniciar el router), pero no he probado ultimamente.
Yo usaba kvpn.
un saludo
Muy buen tutorial… te felicito por el esfuerzo pero no son horas de
currar
Saludos
Buenísimo este tutorial, increíble de verdad….
Excelente tutotial!!!
holaaa
sabes de algun tutoria sobre openvpn
Espléndido tutorial, ha funcionado todo a la perfección y qué diferencia de velocidad en comparación con VNC a través de Hamachi.
Una duda ¿es conveniente desactivar la encriptación? se supone que hamachi está ya encriptando el tráfico ¿se ganaría velocidad?
Menudo post más currado! Me lo guardo en los marcadores porque me hará falta dentro de poco :P.
se gana en velocidad pq comprime la informacion de las X.
lo que me preguntas no se si se ganaria en velocidad, creo que ya depende de mas factores, como el PC que encripta y el que desencripta, pero yo en principio mantendria la encriptacion, cuanto mas seguro sea nuestro canal de comunicacion, mejor. no creo que a nadie le gustara que alguien se colase en su pc, o nos robase nuestras contraseñas.
@oaglp
buscando en google he encontrado varios.
pero si tengo tiempo, creo que publicare la version de OpenVPN.
Yo tengo un problema, al cliquear en la “tuerquita” azul de abajo se me cierra el Hamachi.
Yo lo uso en Windows y espero poder hacerlo en Ubuntu.
Alguien sabe por qué se me cerrará?
[...] Starman, si lo consigues hacer funcionar, monto un servidor y nos echamos unos hamachi [...]
[...] Starman, si lo consigues hacer funcionar, monto un servidor y nos echamos unos hamachi [...]
[...] Starman, si lo consigues hacer funcionar, monto un servidor y nos echamos unos hamachi [...]
[...] unos dias hable de como montar una red privada virtual con Hamachi y NxFree. Por defecto NX lleva soporte para Gnome y KDE, sin embargo si quisieramos [...]
me parece muy interezante el tutorial, he probado hamachi solo en windows con amigos para jugar, pero intentare hacer todo lo de esta guia con ubuntu a ver q tal me va…..
una pregunta: puedo acceder con los programas q apuntas arriba remotamente de windows a ubuntu y viceversa??? yo uso logmein solo entre windows pero como no me gusta usar Window$ quiero acceder desde ubuntu a maquinas con xp o vista (y por q no? viceversa)
gracias de antemano un saludo desde Caracas Venezuela
@Knightab
Por desgracia el NX Server solo esta disponible para Linux y Solaris. Desde Windows si que existe un cliente, asi que desde Windows puedes acceder a Ubuntu por ejemplo. Pero si quieres el paso inverso, deberias montar algo parecido a lo que comentan aqui:
http://www.nomachine.com/ar/view.php?ar_id=AR02D00349
Al no existir un NX server para Windows, tienes que montar el NX es un Linux o Solaris que actue como pasarela y a su vez esta maquina debe ser capaz de ejecutar aplicaciones windows remotamente.
Desconozco si habra alguna otra solucion mas sencilla.
[...] VPN con Hamachi y NxFree (muy bien explicado) [...]
[...] A veces me quedo trabajando desde casa en lugar de ir a la oficina. Para ello abro una sesion remota con NXClient desde el ordenador de mi casa al ordenador de mi oficina mediante una VPN privada, y trabajo desde mi casa como si estuviera sentado delante del ordenador de mi empresa. Si os interesa el tema podeis consultar el siguiente enlace: VPN con Hamachi y NXFree [...]