我有一个用作端口扫描程序的代码,基本上创建了一个原始套接字,并将TCP和UDP数据包发送到目标主机及其端口,然后接收到数据包,并根据响应确定端口是否打开/关闭/过滤
代码在C ++中,我正在使用libpcap捕获数据包。我打开一个活动设备,应用过滤器并启动pcap_loop。 Fedora在我的ntb上一切正常,接收数据包,正确显示端口状态。但是,问题是代码必须在具有Ubuntu的虚拟机上运行。我将虚拟机用于虚拟机和桥接网络。代码工作正常,创建了套接字,发送了数据包,但使用pcap_loop没有捕获任何响应。我可以在tcpdump中看到,我发送的数据包具有正确的校验和,并立即带有正确标志的响应数据包,但是pcap_loop不会捕获它。我再次对同一端口运行捕获过程,但无济于事。同样,在Fedora上一切正常。
是否有任何主要因素会使Ubuntu VM上的Fedora功能失常?我可以尝试改变什么?问题可能在哪里?
我更新了所有软件包,尝试在虚拟框中设置不同的网络设置,尝试在混杂模式下运行pcap_loop(网络也在混杂模式下),但没有任何帮助。我调试了程序,并且一切都与我的Fedora ntb相同(不同的IP除外)。我确保不使用具有环回或本地绑定IP的接口。我尝试过尽可能多地使用Google,但找不到任何相关内容。我检查了软件包,它们似乎都是同一版本。
非常感谢
//由于该代码是家庭作业,因此我在这里无法显示,但它基本上只是互联网上来自各种教程的代码。