我在 Ubuntu 12.04 x64 vm 主机上使用 virtualbox 4.1.16,所有 NAT 均正常工作,例如 HOST 2222 -> Client 22
但是我已将我的主机更改sshd
为侦听端口 81 并重新启动,因此主机端口 22 是空闲的。并命令我的客户虚拟机对 (HOST)22 到 (CLIENT)22 进行 NAT。而在同一个虚拟机客户机上,如果我将 NAT 1234 映射到 22,它就会再次工作。
我试过了ufw disable
,/etc/init.d/apparmor stop
但没什么帮助
我需要做什么才能实现它?
答案1
这听起来像是您的 VirtualBox 进程没有以正确的权限运行,允许它绑定到 1024 以下的端口 - 通常需要 root 级别权限。根据 VirtualBox 手册,NAT 引擎有四个限制:
- ICMP 协议限制,ping 可以工作,但很多事情可能会有问题
- 接收 UDP 广播不可靠
- 不支持 GRE 等协议
- 转发主机端口 < 1024 不可能在 Linux、Solaris、Mac OS X 等 Unix 主机上无需以 root 身份运行。
参考:http://www.virtualbox.org/manual/ch06.html#nat-limitations
如果在您的环境中可行,最好的解决方法是将您的虚拟机配置为使用桥接虚拟网络适配器。