Virtualbox从来宾到主机的“端口转发”


162

这是我的设置:

- Host: Windows XP
- Guest: Ubuntu 10.04
- Networking: NAT

我正在Guest上设置Apache Web服务器,但是我希望能够在Windows机器上执行此操作:

- go to the browser, type http://localhost:8000

另外,我尝试将网络更改为桥接,并获得了新IP。但是当我尝试执行http://:8000时,它说它无法连接。


1
我有同样的问题。原来的客户操作系统已经陷入阻塞端口80活动防火墙
尼古拉斯·尚克斯

149
作为将VirtualBox用作我日常工作流程一部分的Web开发人员,不同意将此标记为主题。请考虑重新打开。
sparecycle

1
1.转到VM 2. ifconfig(获取本地IP-应该为10.0.2.X)3. SSH 10.0.2.2进入主机
Mark Roberts

@deeperDATA可能属于Web开发人员的工作范围,但是堆栈溢出并不意味着封装了工作的每个部分。这证明了我们专业的复杂性,即其要求跨越多个堆栈交换站点。
凯文·劳伦斯

1
我花了很长时间才开始运作。我们的问题是访客系统中应用程序的ip绑定,它绑定到计算机名称,即ubuntu中的127.0.1.1。我们将绑定更改为0.0.0.0。端口转发设置:主机IP = DNS主机IP,主机端口= 8080,访客IP = eth0的IP,访客端口=
8080。–慢

Answers:


222

网络通讯主机->访客

连接到访客并找出IP地址:

ifconfig 

结果示例(IP地址为10.0.2.15):

eth0      Link encap:Ethernet  HWaddr 08:00:27:AE:36:99
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0

转到Vbox实例窗口->菜单->网络适配器:

  • 适配器应该是NAT
  • 点击“端口转发”
  • 插入新记录(+图标)
    • 对于主机ip,请输入127.0.0.1,对于从先前获得的来宾IP地址。步骤(在我的情况下为10.0.2.15)
    • 如果您的端口是8000,请在两个端口上都放,但是如果您愿意,可以更改主机端口

转到主机系统,然后在浏览器中尝试:

http://127.0.0.1:8000

或您的网络IP地址(通过运行ipconfig在主机上查找)。

网络通讯Guest-> Host

在这种情况下,不需要端口转发,通信将通过LAN返回到主机。

在主机上-找到您的IP地址:

ipconfig

结果示例:

IP Address. . . . . . . . . . . . : 192.168.5.1

在来宾计算机上,您可以直接与主机通信,例如,通过ping进行检查:

# ping 192.168.5.1
PING 192.168.5.1 (192.168.5.1) 56(84) bytes of data.
64 bytes from 192.168.5.1: icmp_seq=1 ttl=128 time=2.30 ms
...

11
两个端口都将不是8000。主机端口将是8000或您想要的任何端口,但访客端口应为80
Yasin

5
在这种情况下,应该可以通过以下步骤从VM到达主机并获取ITS IP地址(如下所示,为10.0.2.15)。要从VM到达主机,IP为10.0.2.2(按照惯例)。
马克·罗伯茨

5
如果为访客使用NAT ...如果在主机上运行的服务仅绑定到127.0.0.1,则访客无法使用主机的公共IP连接到该服务(示例服务:privoxy)。相反,您需要使用Mark提到的10.0.2.2,或任何显示为默认网关的“ route -n”(在guest虚拟机上运行)。
desm 2014年

4
如果使用CentOS,我们可能必须禁用防火墙编辑iptable中的特定规则
Reddy

2
我发现没有必要指定主机或来宾IP地址,您可以将这些框留空。尽管如果只想从本地主机连接,最好将127.0.0.1用作主机。
mwfearnley'3

14

那不可能 localhost始终默认为本地操作系统上的回送设备
当您的虚拟机运行自己的操作系统时,它具有自己的环回设备,您无法从外部进行访问。

如果要在浏览器中访问它,请使用本地IP连接到它:

http://192.168.180.1:8000

当然,这只是一个示例,您可以通过ifconfig在来宾操作系统中的shell上发出命令来找到实际的IP 。


我也尝试过此方法,但不适用于NAT和网桥。来宾中的apache登录未给出任何错误,并且apache已在来宾中启动并运行。
卡门

您确定使用正确的IP吗?您可以通过尝试从虚拟机内部访问地址来进行验证。如果失败,则说明您使用的IP错误或您的apache未设置为侦听8080端口。–
Chris

为我工作-谢谢!
Matt Frear 2013年

也为我工作。与主机操作系统IP地址替换“本地主机”以前,我总是得到“服务器拒绝了你的关键”,并在/ etc / SSH / sshd_config的“拒绝访问”没有/var/log/auth.log解释尽管LogLevel的DEBUG3
VR

@Chris表示在主机上,诸如虚拟主机之类的主机mysite.localhost将无法访问客户机,因为我必须仅使用IP地址来引用主机吗?
danjah
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.