>

Virtualbox 中提供的端口转发(Port Forwarding)主要是 NAT 网络模式下用来实现 Host 主机访问虚拟机中 Guest 主机的。

在 VirtualBox 的 NAT 网络模式下,虚拟机 Guest OS 对 Host 主机来说是不可见的,因为对于 Host 主机来说,Guest OS 处在一个内网中,他的 IP 地址是一个内网 IP 地址:比如 10.0.2.15 这种。而主机的地址一般可能是 192.168.1. 111 这种,也可能直接是一个公网 ip 地址。总之,NAT 模式下两个主机肯定不在一个网段内,那么主机要访问 Guest OS 的话就必须穿墙打洞了,VirtualBox 提供的是 Port Forwarding,把对 Host 主机上某个端口的访问转发给 Guest OS 上的某个端口。比如,在 Host 主机中想要 SSH 登录到 Guest 主机,那么就可以在 VirtualBox 中设置端口转发,通过 Virtualbox 来登录信息转发给 Guest 主机上的 22 端口从而实现远程登录。

在 VirtualBox 中设置端口转发的方法,如下所示:

Settings > Network > Port Forwarding

![](/image/port_fwd.png)

图中的 Host ip 可以随意填,Host Port 填一个未被 Host 主机应用程序占用的即可,Guest IP 可以填对应的 Geust OS 的 IP 地址,也可以不填(不填就代表所有的都行),Port 填 SSH Server 侦听的端口号, 也即 22。
填好之后, 启动 VirtualBox。
在 Windows 命令行中执行 netstat 命令就会看到有对应的 Host Port 处于侦听状态,如果该端口没有在侦听,那么就说明启动设备失败了,可以 通过查看 VirtualBox 启动日志来定位出错原因。

通过 Windows 任务管理器,找到 Headless 进程(一般启动一个 Guest OS 的话,会有 3 个 Headless 进程),找到那个内存占用最多的Headless进程对应的 pid:

在 Windows 下的 Git Bash 中执行;

$ netstat -nao | grep 5036

可以看到,所有设置了端口转发的端口都在侦听了!