使用 VMWare 进行端口转发的正确方法是什么

What is the correct way to do Port Forwarding using VMWare

我创建了一个 VM,它在 localhost:8675/ 有一个服务器 运行,为了便于理解,我想在同一端口连接到我的主机。我正在关注这些文档以获取信息:

当我在 VMWare Workstation 中时,我单击了我的 VM,然后执行:编辑 > 虚拟网络编辑器。之后,启用 Change Settings 以管理员模式重新启动 window。我单击了类型为 NAT 和外部连接 NAT 的行,并在按下 NAT 单选按钮的 VMNet 信息中单击了 NAT 设置 按钮。

我说:添加...然后做了:

Host: 8675
Type: TCP
VMIP: 127.0.0.1:8675
Description:  Port Foward of 8675 from Host to VM.

看起来一切都很好。我依次说 OkApply。看起来它关闭了 nat 并重新启动了一些服务。

我在虚拟机中确认,127.0.0.1:8675 是正确的。 在主机中,我试图去:http://localhost:8675/,它说:ERR_CONNECTION_REFUSED

我认为这就是我需要做的。

我正在查找一些附加信息并注意到有些人不得不配置防火墙。我不确定是否需要,因为我认为主机和虚拟机都在一台实际机器中,它可能完全独立。

我是否遗漏了一项关键任务?

我看到了这个post:https://superuser.com/questions/571196/port-forwarding-to-a-vmware-workstation-virtual-machine 它告诉我只需将其调整为桥接并以这种方式使用它。这是否解决了连接主机/虚拟机问题。

我不想说这是正确答案,因为问题本身是 NAT 特有的,但这是一个有效的替代答案。

这解决了手头的基本问题,但没有解决问题。

当你使用 NAT 时,主机系统和访客盒子在它们的虚拟子网上有完全不同的 IP 地址,所以我的猜测是当你尝试从主机系统连接到 localhost:8675 你实际上是尝试连接到主机的端口 8675 而不是来宾。所以不要使用 localhost 或 127.0.0.1 语法,而是发现来宾的真实 IP 地址并使用它。 如果您的访客 Windows 使用 ipconfig 命令,如果 Linux 使用 ifconfig.

可能您还必须在来宾端配置防火墙。

编辑: 注释"NAT: Used to share the host's IP address."这句话:它可能指的是你在主机上的真实以太网适配器的IP地址,并且由主机和访客共享以访问互联网。这与主人和客人一起交流的方式无关。例如,我使用 VMware Workstation 在 Windows 中 运行 虚拟 Linux 框。选择 NAT,VMware 创建一个名为 VMnet8 的虚拟子网。在这个子网中,虚拟路由器的地址为 192.168.120.0,我的 Windows 主机分配了一个地址为 192.168.120.1 的虚拟以太网适配器,我的 Linux 来宾的地址为 192.168.120.128。因此,当我想从 Windows 访问 Samba 共享文件夹时,我在 Windows 命令提示符中键入 "net use * 2.168.120.128"。当我想从 Linux 访问 Windows 共享文件夹时,我输入 "sudo mount.cifs //192.168.120.1/path_to_shared_folder target_folder".

我相信你确实正确地回答了你的问题,因为我一直在关注它并取得了预期的结果。

恕我直言,错误:ERR_CONNECTION_REFUSED 表示您的主机 OS 或来宾 OS(您的 VM)或两者上的防火墙不允许通过给定的通信端口。

最简单的方法是尝试在您的 HOST 和 GUEST OS.

上禁用防火墙

不确定你的 OS 是什么,但这里有一个很好的 guide for setting up firewall rules on Ubuntu