我正在尝试使用 VirtualBox 进行简单的端口转发,看起来 VirtualBox.exe 正在主机上侦听端口,但实际上并未将连接转发到来宾。我尝试了多个端口,并且重新启动了 VirtualBox 好几次。另一方面,来宾到主机的连接很好。信息如下:
Host: Win7 x64
Guest: Win7 x64
VirtualBox version: VirtualBox 4.2.10
Firewalls: All firewalls on host and guest disabled.
Virtual Box > Machine Settings > Network
Adapter 1:
Attached to: NAT
Cable Connected : True
Port Forwarding:
Rule 1: TCP, HostIP=127.0.0.1, HostPort=8081, GuestIP=127.0.0.1, GuestPort=8081
On Host:
[VirtualBox.exe] TCP 127.0.0.1:8081 IBM-6KT5OPCF76P:0 LISTENING
On Guest:
I never get the connection request on port 8081 or any others I've tried.
有什么想法吗?由于多种原因,我想避免使用 VirtualBox 的桥接适配器。我的印象是,使用 VirtualBox 进行 NAT 端口转发相对简单。
谢谢!
半虚拟化网络*(virtio-net)是关键
选择您想要进行端口转发的虚拟机。
选择“设置”
提供
您以错误的方式指定了访客 IP,它应该是访客的 IP(如果您静态分配 IP 地址给访客)或将其留空。请注意,您将主机 IP 指定为 127.0.0.1,这意味着您转发的端口只能从端口访问(如果不是您想要的,它也应该为空)。
VBoxManage modifyvm "win" --natpf1 ",tcp,,8081,,8081"
也许这是您想做的事情。 (请查看这里了解更多详情)
不清楚您正在使用哪个客户操作系统。
我也遇到过同样的问题。
我的主机是 MAC PC,来宾是 VirtualBox 上的 CentOS 7。
我在 VirtualBox 级别为 ssh 端口 22 和 http 端口 80 启用了从访客到主机的 NAT 端口转发。
但是我发现我无法通过 http 连接从我的 MAC PC 主机连接到 Centos 7 guest 上的 Apache HTTP 服务器。
要修复此问题,我必须将防火墙服务设置为允许端口 80 连接。
在 Mac 主机、Fedora 来宾设置上遇到类似的问题。正在尝试从主机访问在访客计算机的端口 8000 上运行的 http Web 服务器。在来宾计算机上使用firewall-cmd 打开端口 8000/tcp 解决了问题。
sudo firewall-cmd --zone=public --add-port=8000/tcp
我遇到了类似的问题,事实证明是一些名为 proxycap 的公司代理拦截软件安装的网络堆栈中未签名的驱动程序导致 virtualbox 在设置端口转发时出错。在设置端口转发并列出未签名的驱动程序并卸载相应的应用程序时,请检查虚拟机日志中是否有错误消息。
如果其他人遇到与我同样的问题,我在这里写下我的错误:
我使用 CentOS 7 作为主机,Windows 作为访客。
阻碍我的唯一问题是:我忘记在访客计算机中禁用Windows 防火墙设置。一旦禁用它,一切正常。
如果有人遇到同样的问题,请尝试卸载重定向器,例如 ProxyCap、proxifier 等。VirtualBox NAT 不适用于它们。如果您尝试跟踪 VirtualBox 网络,您不会在日志中找到任何错误消息,也不会在 pcap 文件中看到任何内容。禁用 ProxyCap 是不够的,必须将其卸载,或者您需要使用“netsh Winsock Reset”重置网络配置,但 ProxyCap 将不再为您工作。
我像这样连接到我的 Centos7:
Virtual Box > Machine Settings > Network
Adapter 1:
Attached to: NAT
Cable Connected : True
Port Forwarding:
Rule 1: TCP, HostIP=127.0.0.1, HostPort=8081, GuestIP=10.0.2.15, GuestPort=8081
$> ssh -p8081 [更改]@127.0.0.1
在我的例子中,客户操作系统是CentOS8,主机操作系统是Ubuntu 22.04,主机上的转发端口是1022,我将其更改为10022然后它就工作了。
就我而言,代理禁用了我的连接,我必须运行
unset http_proxy