VirtualBox NAT 端口转发在 Ubuntu 64 上吗?

VirtualBox NAT 端口转发在 Ubuntu 64 上吗?

我有一个 Ubuntu 9.04 桌面 64 位客户操作系统,运行在 Ubuntu 9.04 桌面 64 位主机操作系统上(是的,同一个操作系统)。我想在客户机上运行一个 Web 服务器,并使其可通过主机上的 NAT 进行访问。

我(我想我)关注了VirtualBox 端口转发说明,但是我完成配置后,客户机/VM 无法启动。

这是我运行的配置:

VBoxManage setextradata "<Guest Name>" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guesthttp/Protocol" TCP
VBoxManage setextradata "<Guest Name>" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guesthttp/GuestPort" 80
VBoxManage setextradata "<Guest Name>" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guesthttp/HostPort" 8080

<Guest Name>客户虚拟机映像的名称在哪里。

错误如下:

在此处输入图片描述

无论我在虚拟机运行时还是不运行时运行配置,都会发生同样的错误。

已安装来宾添加功能。

如何正确配置 NAT 端口转发?是什么导致了此错误?

答案1

使用命令获取为此 WM 执行的所有参数:

VBoxManage.exe getextradata "Name_of_VM" enumerate

您应该看到传输到 VM 的所有值。

Key: GUI/SaveMountedAtRuntime, Value: yes
Key: GUI/ShowMiniToolBar, Value: yes
Key: GUI/MiniToolBarAlignment, Value: bottom
Key: GUI/LastCloseAction, Value: save
Key: GUI/LastWindowPostion, Value: 345,133,640,522
Key: GUI/Fullscreen, Value: off
Key: GUI/Seamless, Value: off
Key: GUI/AutoresizeGuest, Value: on
Key: GUI/MiniToolBarAutoHide, Value: on
Key: VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/HostPort, Value: 22
Key: VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/GuestPort, Value: 22

通过复制并粘贴该行来删除所有以 VBoXInternal 开头的行,如下所示

VBoxManage.exe setextradata "Name_of_VM" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guesthttp/HostPort"

到最后都没有值。最后你应该再次枚举,并且看不到 VBoxInternal 的更多行。

现在您可以再次制定 NAT 规则,并使用不同的规则名称。

Key: VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/HostPort, Value: 2222
Key: VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/GuestPort, Value: 22
Key: VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol, Value: TCP
Key: VBoxInternal/Devices/pcnet/0/LUN#0/Config/guesthttp/Protocol, Value: TCP
Key: VBoxInternal/Devices/pcnet/0/LUN#0/Config/guesthttp/GuestPort, Value: 80
Key: VBoxInternal/Devices/pcnet/0/LUN#0/Config/guesthttp/HostPort, Value: 8080

在 Linux 下,您应该记住不应重定向端口 <1024。对 guestsh 使用 2222,对 guesthttp 使用 8080(示例)为了易于使用,我个人在 WINDOWS 下使用 <1014 端口。

希望这对你有帮助。

(抱歉,我说的是英语!我是法国人:P)

雅克·根舍里安

答案2

我遇到了同样的问题——我认为 Oracle 改变了 NAT 的设置方式。现在更简洁了。这是从用户手册中复制过来的,该手册仍然位于:http://www.virtualbox.org/manual/UserManual.html

VBoxManage modifyvm "VM name" --natpf1 "guestssh,tcp,127.0.0.1,2222,,22"

“这会将通过端口 2222 到达本地主机接口 (127.0.0.1) 的所有 TCP 流量转发到客户机中的端口 22。”在客户机中。”

答案3

当我在 VirtualBox 中设置端口转发时也出现了同样的症状。

当我在 VirtualBox 中创建新的虚拟机时,默认网络适配器是e1000,不pcnet符合您遵循的说明。

如果您将配置设置修改为:

VBoxManage setextradata "<Guest Name>" "VBoxInternal/Devices/e1000/0/LUN#0/Config/guesthttp/Protocol" TCP
VBoxManage setextradata "<Guest Name>" "VBoxInternal/Devices/e1000/0/LUN#0/Config/guesthttp/GuestPort" 80
VBoxManage setextradata "<Guest Name>" "VBoxInternal/Devices/e1000/0/LUN#0/Config/guesthttp/HostPort" 8080

这应该可以解决你的问题。


上述配置选项将适用于第一个e1000适配器,因此e1000/0在设置中。仔细检查您尝试端口转发到的虚拟机正在使用哪个网络适配器。

在我的安装中,可用的网络适配器是两个“PcNet”和三个“Intel Pro 1000”。

适配器由下列关键字引用:

  • 第一个PCNet:pcnet/0
  • 第二个PCNet:pcnet/1
  • 第一个英特尔 PRO/1000:e1000/0
  • 第二台 Intel PRO/1000:e1000/1
  • 第三个英特尔 PRO/1000:e1000/2

例如,如果您的适配器是列表中的第二个“PRO/1000”,那么您需要将上述配置修改为 e1000/1(ETC)。

相关内容