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