2

我在 Windows 上使用 Oracle VirtualBox。我已经设置了 NAT 和转发端口。

当某些转发端口意外与主机端口冲突时,不会显示错误并且所有转发端口都失败。

有没有可能检测到那些冲突的端口?我使用了 VBoxManage 工具,既没有输出消息,也没有startvm命令的详细模式。

谢谢

4

1 回答 1

2

我建议结合使用netstatandVBoxManage和 解析输出。您可以在非 Windows 主机上轻松替换该findstr命令。grep

首先,我将获得相关 VM 上的 NAT 端口列表。该VBoxManage showvminfo命令将输出一堆有关配置的信息,您可以过滤这些信息以仅查找 NAT 规则。您将需要在输出中查找主机端口协议字段(如果已配置,可能还有主机 ip),因为您将要查看它是否已在使用中。

C:\>vboxmanage showvminfo Linux  | findstr Rule
NIC 1 Rule(0): protocol=tcp, host ip=, host port=2222, guest ip=, guest port=22

其次,使用上面的信息,我知道我需要检查是否有任何东西在端口 TCP 端口 2222 上进行侦听,因此我可以使用该netstat命令向我显示所有侦听套接字,并按我的条件过滤:

C:\>netstat -an | findstr LISTENING | findstr TCP | findstr 2222
Proto  Local Address          Foreign Address        State
TCP    0.0.0.0:2222           0.0.0.0:0              LISTENING

因为我的客人已经在运行,所以我可以看到它已经在 TCP 2222 上获取了一个连接。如果您没有得到任何输出,那么该特定端口上没有任何东西在监听,您可以安全地启动您的虚拟机。

于 2013-06-25T05:27:27.933 回答