虚拟机“端口转发”从客户端到主机

这是我的设置:

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

我正在给“客户”设置一个 Apache HTTP Server,但我希望能够在 Windows 机器上做到这一点:

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

还有,我试着把我的网络改成桥接,然后我得到了一个新的 IP 地址。但是,当我尝试做 http://: 8000,它说,它无法连接。

200107 次浏览

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

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

http://192.168.180.1:8000

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

网络通信主机-> 来宾

连接到客人并找到 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 在主机上找到)。

网络通信来宾-> 主机

在这种情况下不需要端口转发,通信通过局域网回到主机。

在主机上——找到你的新 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
...

防火墙问题?

@ Stranger 建议在某些情况下有必要像下面这样打开防火墙中使用过的端口(8000或使用过的端口)(比如 ufw 防火墙,我还没有测试过) :

sudo ufw allow 8000