networking - 检测虚拟机上冲突的转发端口

标签 networking virtualbox

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

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

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

谢谢

最佳答案

我建议结合使用 netstatVBoxManage 并解析输出。您可以在非 Windows 主机上轻松地将 findstr 命令替换为 grep

首先,我会获得相关虚拟机上的 NAT 端口列表。 VBoxManage showvminfo 命令将输出一堆有关配置的信息,您可以过滤这些信息以仅查找 NAT 规则。您将需要在输出中查找主机端口协议(protocol)字段(如果配置的话可能还有主机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

因为我的 guest 已经在运行,所以我可以看到它已经在 TCP 2222 上获取了连接。如果您没有得到任何输出,则说明该特定端口上没有任何内容正在监听,您可以安全地启动虚拟机。

关于networking - 检测虚拟机上冲突的转发端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17114410/

相关文章:

虚拟机 “Callee RC: REGDB_E_CLASSNOTREG” (0x80040154)?

laravel - Vagrant Up VT-X 不可用

python - 在 Swift 中接收 TCP 数据包

c# - Windows 8.1中的http客户端取消请求

sockets - 'socket'系统调用中的“SOCK_RAW”选项

c# - 使用 C# 在复杂网络上添加 NAT UPnP 映射

ios - 最好的查找方法是我的自定义以太网设备在线以及它为 iOS 获得的 IP 是什么?

python-3.x - docker 段错误(core dumped),这种情况怎么办?

linux - Virtual Box 和 Windows 7 主机的 Gvim 重绘问题

linux - 按组名、用户名和上次登录 linux 管理用户帐户