尝试从主机 (Mac OS X) 127.0.0.1:8282 端口转发到客户机 (CentOS) 的 10.10.10.10:8080。现有端口转发包括 127.0.0.1:8181 和 9191 到客户机,无需指定任何 IP(因此无论它通过 DHCP 获得什么,如文档中所述)。
以下是添加无效绑定的方式:
VBoxManage modifyvm "VM name" --natpf1 "rule3,tcp,127.0.0.1,8282,10.10.10.10,8080"
以下是添加工作项的方式:
VBoxManage modifyvm "VM name" --natpf1 "rule1,tcp,127.0.0.1,8181,,80"
VBoxManage modifyvm "VM name" --natpf1 "rule2,tcp,127.0.0.1,9191,,9090"
而“不工作”,我的意思当然是没有听(这是转发的先决条件):
$ lsof -Pi -n|grep Virtual|grep LISTEN
VirtualBo 27050 user 21u IPv4 0x2bbdc68fd363175d 0t0 TCP 127.0.0.1:9191 (LISTEN)
VirtualBo 27050 user 22u IPv4 0x2bbdc68fd0e0af75 0t0 TCP 127.0.0.1:8181 (LISTEN)
上面应该有类似的一行,但内容是 127.0.0.1:8282。
需要说明的是,此端口在客户机上监听得非常好。当我删除客户机 IP(即清除 10.10.10.10)时,转发工作正常,尽管转发到 eth0(而不是我需要的 eth1)。我可以使用 tcpdump 并观察来回的流量。是的,我在测试时完全禁用了 iptables——它在客户机上的任何地方都没有被阻止。
正如 VirtualBox 所写他们的文件,如果客户机 IP 是静态的(这很合理,因为它不保留 DHCP 记录),则需要指定客户机 IP:“如果由于某种原因,客户机使用未从内置 DHCP 服务器租用的静态分配 IP 地址,则需要在注册转发规则时指定客户机 IP:”。但是,这样做(我需要这样做)似乎会破坏端口转发,而我在找到的任何日志文件中都没有报告。(我查看了 ~/Library/VirtualBox/ 中的所有内容)。
其他说明:
- 当我使用上述命令添加第三条规则时,我也验证了它在 GUI 中正确显示,然后从那里删除/重新添加以确保无误)。
- 这论坛链接-- 虽然很过时 -- 看起来有些相关,因为没有出现到静态 IP 的端口转发(也许他们认为是由于缺少免费的 arp 发送给主机以让主机知道 IP 是否存在/可用?)。
无论如何,发生了什么?这仍然有问题吗?有什么建议吗?如果没有,有足够简单的解决方法吗?有趣的是,这在另一个用户的 Mac 上运行良好,但他运行的是稍旧的版本(4.3.6 v. 4.3.12)。