VirtualBox 一直以来都是支持 NAT 端口转发,但是老版本的转发实在麻烦,命令又长又难记。所以在 3.2.0 版本里,更改了设置办法。现在只需一条命令就可以实现 NAT 端口转发了。老办法可以参考与此。
命令如下:
VBoxManage modifyvm "VM name" --natpf1 "guestssh,tcp,,2222,,22"
VM name 是虚拟机的名称,–natpf 是转发的选项,后面的 1 是第几个虚拟网卡。guestssh 是转发名称,实际上是任意写的。tcp 是转发的协议。22 是 Guest 需要转发的端口。2222 则是转发到 Host 上的端口。
若是需要删除转发,则可以用以下命令:
VBoxManage modifyvm "VM name" --natpf1 delete "guestssh"
为了从一个固定的网络接口接收所有的转发请求,你可以添加一个固定 IP:
VBoxManage modifyvm "VM name" --natpf1 "guestssh,tcp,127.0.0.1,2222,,22"
127.0.0.1 是本地网络接口的 IP。此时所有的连接请求将会从 127.0.0.1 这个 IP 的 2222 端口转发到 guest 的 22 端口上。
和以前一样,当 Guest 正在运行的时候设置 NAT 转发是无效的,需要关机一次或者保存一次快照。当 Guest 重新启动的时候,转发才有效。所以还是建议在关闭虚拟机的时候设置 NAT 端口转发。
实列:
centos上装有VirtualBox,VirtualBox上装有一虚拟机windows2003,开有3389远程端口。主机本地IP为A是外网IP,虚拟机是NAT模式主机和外网都不能访问B。要实现访问A的3389端口来连接B(windows2003)上的远程桌面,操作如下
1.开启A上防火墙的3389允许访问
iptables -I INPUT -p tcp --dport 3389 -j ACCEPT
iptables save
2.在A执行命令
VBoxManage modifyvm "win2003" --natpf1 "guest3389,tcp,,3389,,3389"
完成