VirtualBox 仅主机适配器端口转发

VirtualBox 仅主机适配器端口转发

我在真实的 Windows 机器上有一个虚拟 Ubuntu,其中 VirtualBox 是一个虚拟机管理程序。

虚拟机网络使用仅主机适配器连接到主机。问题是 - 由于各种原因我无法更改它,但我希望能够从外部访问虚拟 Ubuntu。

我尝试安装自己的 DHCP 服务器并将 VirtualBox 主机专用适配器指向该服务器,但没有成功。

我怎样才能将端口 22 转发到 Windows 上的真实世界?

答案1

仅主机意味着……完全没有与外界的连接。如果您确实无法切换到其他适配器类型,则除了将 Windows 计算机配置为路由器(这似乎超出了范围)外,没有其他方法可以实现此目的。

最好的选择(不了解您不更换的原因)是切换到桥接适配器,这将允许从外部机器进行完全访问。

答案2

我知道我正在重提四年前的一个问题,但我偶然发现了这个问题,很高兴我没有被 Frank Thomas 的帖子吓倒(如果我按照他的本意阅读,他说没有可能让主机专用 VM 连接到主机外部)。我尝试了一段时间,想弄清楚如何创建一个完全隔离的 VM,除了远程桌面和 FTP(也是 Apache)等功能之外。我使用 DHCP 设置了主机专用适配器。目标是让主机(Windows)在特定端口上接收连接,然后将这些连接转发到主机专用适配器,从而转发到隔离的 VM(Ubuntu-Linux)。我找到了一种使用 netsh 执行此操作的可靠方法。

假设我的主机的公网 IP 地址是 47.74.47.74,而我的客户机的私有 IP 是 192.168.47.74:在客户机上,我设置 Apache 监听其默认端口 (80),XRDP(远程桌面)监听其默认端口 (3389)。我选择随机端口用于连接到我的主机。只要您记得您正在使用哪些端口,并且没有其他东西在使用它们,它们可以是任何您想要的。我希望将到 47.74.47.74:12567 的连接转发到客户机并从 Apache 显示 index.html,因此我将端口 12567 转发到客户机端口 80(这需要在 CMD,Windows 命令控制台中进行):

netsh interface portproxy add v4tov4 listenport=12567 listenaddress=0.0.0.0 connectaddress=192.168.47.74 connectport=80 protocol=tcp

(说明:这在特定端口上添加了转发规则以发送到另一个地方。“v4tov4”是指接收 IPV4 地址并转发到 IPV4 地址。“listenaddress=0.0.0.0”表示它正在监听通过该端口的任何 IPV4 地址。如果您愿意,可以将其限制为来自特定 IPV4 地址的连接。“connectaddress”和“connectport”是客户机信息。)

在路由器上将端口 12567 转发到主机后,我便可以使用 Web 浏览器从任何地方访问客户机上的 index.html。同样,

netsh interface portproxy add v4tov4 listenport=12568 listenaddress=0.0.0.0 connectaddress=192.168.47.74 connectport=3389 protocol=tcp

允许我使用 Windows 远程桌面从任何地方登录并连接到 47.74.47.74:12568。

FTP 涉及以这种方式转发相当多的端口,并使用特定端口设置 FTP 服务器(不能使用 netsh portproxy 使用端口范围),但如果有人希望我这样做,我才会解释。

答案3

正确的答案应该是定义VM 的虚拟适配器。一个应该是 NAT,另一个应该是主机专用的。问题解决了。

相关内容