Virtualbox: redirixir portos da máquina host á máquina guest cando a rede está en modo NAT

Imaxe de oscar
Enviado por oscar en 22 Outubro, 2009 - 19:04.

   Hai veces que temos unha máquina virtual de Virtualbox coa rede en modo NAT (o cal as máquinas da rede nin a propia máquina host pode ter acceso a esta máquina guest) e desexamos poder acceder a un porto da mesma sen darlle a esta máquina virtual unha ip real da nosa rede (modo bridge da tarxeta no virtualbox).

   Pra facelo efectivo antes de nada temos que apagalas máquinas que teñamos accesas e tamén pechalo frontend do Virtualbox se non ata que o fagamos non será aplicada a redirección.

   Se por exemplo queremos redirixir todo o tráfico que chegue á máquina host ó porto 8080 o redirixa ó porto 80 da máquina guest o que faremos será:

   1. Averiguar primeiro a tarxeta de rede que temos para a máquina á que imos facela redirección. Para ilo abriremos o Virtualbox -> Máquina -> Configuración -> rede e aí vemos se a tarxeta é unha pcnet ou unha intel.

   2. O que poño a continuación teremos que sustituir ó que está entre <> e en negrita

VBoxManage setextradata <GuestName> "VBoxInternal/Devices/pcnet/0/LUN#0/Config/<DescriptiveName>/HostPort" <HostPort>
VBoxManage setextradata <GuestName> "VBoxInternal/Devices/pcnet/0/LUN#0/Config/<DescriptiveName>/GuestPort" <GuestPort>
VBoxManage setextradata <GuestName> "VBoxInternal/Devices/pcnet/0/LUN#0/Config/<DescriptiveName>/Protocol" <Protocol>

   3. Así para o noso caso se a máquina guest se chamase VirtualUbuntu e tiveramos a tarxeta de rede pcnet no guest configurada quedaría coma segue: 

$VBoxManage setextradata VirtualUbuntu "VBoxInternal/Devices/pcnet/0/LUN#0/Config/HTTP/HostPort" 8080
$VBoxManage setextradata VirtualUbuntu "VBoxInternal/Devices/pcnet/0/LUN#0/Config/HTTP/GuestPort" 80
$VBoxManage setextradata VirtualUbuntu "VBoxInternal/Devices/pcnet/0/LUN#0/Config/HTTP/Protocol" TCP

No caso de que a tarxeta de rede fora unha intel teriamos que sustituir a cadea pcnet por e1000

   4. Pra ver que está todo correcto listaremos o feito anteriormente

$VBoxManage getextradata VirtualUbuntu enumerate
VirtualBox Command Line Management Interface Version 3.0.8
(C) 2005-2009 Sun Microsystems, Inc.
All rights reserved.
Key: GUI/SaveMountedAtRuntime, Value: yes
Key: GUI/LastCloseAction, Value: powerOff
Key: GUI/LastWindowPostion, Value: 5,178,640,528,max
Key: GUI/Fullscreen, Value: off
Key: GUI/Seamless, Value: off
Key: GUI/AutoresizeGuest, Value: off
Key: GUI/MiniToolBarAutoHide, Value: on
Key: GUI/ShowMiniToolBar, Value: yes
Key: GUI/MiniToolBarAlignment, Value: bottom
Key: VBoxInternal/Devices/pcnet/0/LUN#0/Config/HTTP/HostPort, Value: 8080
Key: VBoxInternal/Devices/pcnet/0/LUN#0/Config/HTTP/GuestPort, Value: 80
Key: VBoxInternal/Devices/pcnet/0/LUN#0/Config/HTTP/Protocol, Value: TCP

   5. Se queremos eliminar ou desfacer o anteriormente feito o único que teremos que facer é meter as liñas anterior pero vacías tal e coma segue:

$VBoxManage setextradata VirtualUbuntu "VBoxInternal/Devices/pcnet/0/LUN#0/Config/HTTP/HostPort"
$VBoxManage setextradata VirtualUbuntu "VBoxInternal/Devices/pcnet/0/LUN#0/Config/HTTP/GuestPort"
$VBoxManage setextradata VirtualUbuntu "VBoxInternal/Devices/pcnet/0/LUN#0/Config/HTTP/Protocol"

Espero que os serva de axuda,
Óscar Casal Sánchez


¿qué vantaxes ten este

¿qué vantaxes ten este método sobre o"bridge" do propio Virtualbox? interésame porque administrei unha sala de ordenadores, na cal:
1- PC do encargado ten Linux e unha máquina virtual con Windows
2- este Windows actúa coma servidor de impresión por problemas cos drivers da impresora en Linux(daban problemas en canto había que cancelar algún traballo, e bloqueaban todos os seguintes)
3-aproveitando, a máquina virtual actúa (pronto deixará de facelo) coma almacén dos programas instalados nos clientes

Imaxe de oscar

Tipos de rede

Boas Edge, nuns días incluso se xa teño mañán tempo vou facer un documento cos diferentes tipos de rede explicándoas un pouco e vendo coma configuras xa que outra persoa que anda por eiquí tamén mo pediu, así que xa aí poderás velas diferenzas e en función delo se inda tes dudas preguntarmo