我在 Windows 上使用 Oracle VirtualBox。我已经设置了 NAT 和转发端口。
当某些转发端口意外与主机端口冲突时,不会显示错误并且所有转发端口都失败。
有没有可能检测到那些冲突的端口?我使用了 VBoxManage 工具,既没有输出消息,也没有startvm命令的详细模式。
谢谢
我在 Windows 上使用 Oracle VirtualBox。我已经设置了 NAT 和转发端口。
当某些转发端口意外与主机端口冲突时,不会显示错误并且所有转发端口都失败。
有没有可能检测到那些冲突的端口?我使用了 VBoxManage 工具,既没有输出消息,也没有startvm命令的详细模式。
谢谢
我建议结合使用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 上获取了一个连接。如果您没有得到任何输出,那么该特定端口上没有任何东西在监听,您可以安全地启动您的虚拟机。