Red lan con qemu y servicio vnc desde internet al guest (v.0.5.)

Imagen de neco
0 puntos

v.0.5.

Instalar qemu

Vamos a crear una red en lan con qemu, donde el sistema invitado tendra su propia IP pingeable desde el host y tendra acceso a internet. Ademas instalaremos tightvnc en linux y el sistema invitado tendra levantado el server vnc a donde dirigiremos el trafico que venga de internet del puerto 5900 del host al puerto 5900 del sistema invitado. (no me hago responsable de los agujeros de seguridad).

Primera parte --- crear la red lan entre el host y el invitado
Segubnda parte -- instalacion de tightvnc en linux ( va mejor k el terminal server :/ )
Tercera parte --- rutear el puerto 5900 del host al 5900 del invitado

---------------------------------------------------------------------------------------------------------

  • PRIMERA PARTE
  • En la red que vamos a configurar, el host y el guest tienen sus propias ips y se comportaran como maquinas distintas que comparten la conexion a internet del host.

    Lo primero que necesitamos es tener activo el módulo TUN en nuestro kernel. Para comprobar si tenemos este módulo podemos comprobar la existencia del fichero tun.ko haciendo:

    # ls /lib/modules/2.6.15-23-k7/kernel/drivers/net/ (Sustituir 2.6.15-23-k7 por vuestro kernel)

    Sino lo teneis; para disponer de este modulo deberemos recompilar el kernel y marcar la opcion:

    Device Drivers -> Networking support -> Universal TUN/TAP device driver support

    Como compilar el kernel en castellano
    Como compilar el kernel en ingles

    Ahora tenemos que crear un pequeño script que levantara la red que hara de puente entre nuestro linux y el sistema guest.Por defecto qemu busca este script en /etc/qemu-ifup.Con esta idea creamos el script /etc/qemu-ifup con el contenido:

    #!/bin/sh
    sudo -p "Pon la contraseña de tu usuario: " /etc/qemu-ifup-tun $1

    Creamos el segundo script, lo llamaremos /etc/qemu-ifup-tun, y tendrá el siguiente contenido:

    #!/bin/sh
    # Se levanta el interfaz que hace de túnel con la máquina virtual
    # y se enruta el tráfico de red para que la máquina virtual pueda acceder
    # a Internet a través de eth0.
    ifconfig $1 200.40.20.1
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    echo 1 > /proc/sys/net/ipv4/ip_forward

    Ahora para arrancar la imagen añadiremos la opcion "-net nic -net tap" y lo ejecutaremos con sudo , daros cuenta que en este caso el modulo solo lo puede levantar root:

    $ sudo qemu -hda nombre_de_imagen.img -net nic -net tap

    El último paso es configurar la conexión de red del windows (me baso en win2000) :

    Panel de control -> conexiones de red -> conexion de area local -> propiedades -> propiedades y rellenamos los campos de la siguiente forma:

    Direccion IP: 200.40.20.2
    Mascara de subred : 255.255.0.0
    Puerta de enlace predeterminada: 200.40.20.1
    Servidor DNS preferido y Servidor DNS alternativo: Los valores de DNS son los que utilicéis normalmente, los encontrareis en el /etc/resolv.conf o en /etc/network/interfaces.

    -------------------------------------------------------------------------------------------------------

  • SEGUNDA PARTE
  • Descargar para linux y para windows (la verdad es que para windows he usado el ultravnc pero como no son mas que simples .exe deberia ser lo mismo) tightvnc desde:

    http://www.tightvnc.com/download.html

    Descomprimir el archivo tar.gz. y situarnos dentro de su directorio

    $ xmkmf

    Ahora editaremos el fichero Makefile y buscaremos la siguiente linea:

    SUBDIRS = libvncauth vncviewer vncpasswd vncconnect

    Donde eliminaremos la palabra vncviewer y guardaremos.

    (Hmm da bastantes errores al compilar y no estoy seguro de que se instale , cuando lo hize por primera vez no se que virguerias hize para que funcionase, asi que editare mas adelante para poner los pasos correctos, o podeis ir a http://bulma.net/body.phtml?nIdNoticia=1227 y probar vosotros mismos :) )

    $ cd Xvnc
    $ ./configure
    $ make
    $ sudo make install

    Ahora podemos probar el vnc desde linux a windows, configuramos el vncserver en windows y le asignamos password y desde linux ejecutamos vncviewer

    $ vncviewer

    e introducimos la direccion 200.40.20.2, nos pedira la password, la introducimos y voila.

    ------------------------------------------------------------------------------------------------------

  • TERCERA PARTE
  • Ahora añadimos la regla para poder conectar al vncserver del guest desde internet ( no se si era eth1 o eth0 :/ )

    iptables -t nat -A PREROUTING -p tcp --dport 5900 -i eth1 -j DNAT --to 200.40.20.2:5900

    para comprobar que se puede acceder desde internet al puerto 5900 del sistema invitado, levantaremos el vncserver en windows, iremos a esta pagina

    http://www.adslayuda.com/TestPort.php

    y pondremos como numero de puerto el 5900 ( este es el puerto por defecto que usa el vncserver , podeis cambiarlo para estar mas protegidos) . comprobamos y deberia salir

    Conexión realizada! El puerto está abierto!!

    -------------------------------------------------------------------------------------------------------

    Esta es la version 0.5. de este how-to , esta sujeto a cambios , hay cosas que a estas horas ( 6 de la mañana ) ya no me acuerdo.

    -------------------------------------------------------------------------------------------------------
    Fuentes (el orden es segun aparicion en este how-to, por si alguien quiere comprobar datos)

    http://www.ubuntu-es.org/node/15126
    http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=debianQemu
    http://www.digitalhermit.com/linux/Kernel-Build-HOWTO.html#CONFIGURATION...
    http://llermano.eresmas.com/compilar_Kernel.htm
    http://www.tightvnc.com/download.html
    http://bulma.net/body.phtml?nIdNoticia=1227
    http://www.netfilter.org/documentation/HOWTO/es/NAT-HOWTO-7.html#ss7.2

    Imagen de neco
    +1
    0
    -1

    Lo siento me he equivocado de lugar al colgarlo :(

    +1
    0
    -1

    Un usuario de Linux 

    http://necoso.wordpress.com