2017-10-13 102 views
-1

我为ping命令写了一个c代码,并且由于某种原因它没有收到任何回复。我花了几天的时间试图找到代码问题,但后来我用wireshark检查了数据包发送。我发现答复已发送给我(目的地无法访问,因为它应该与我输入的目标IP)。在互联网上,我发现我的防火墙可能会导致这个问题,但我找不到任何解决方案。所以请帮助我,我怎样才能为我的防火墙添加某种特定的代码?谢谢。允许linux防火墙为我的代码接收数据包

EDITED

iptables的输出:

链INPUT(策略ACCEPT) 目标PROT选择源目的地

链FORWARD(策略ACCEPT) 目标PROT选择源目的地

链条OUTPUT(政策接受) 目标PROT选择源目的地

Wireshark的输出:

17 0.641636029 192.168.0.134 192.168.0.1 ICMP 120目的地不可达(端口不可达)

另外我可能犯了一个错误和问题可能不在接收中,但在发送数据包中

+0

运行'/etc/init.d/iptables stop'如果没有帮助 - 它不是防火墙 –

+0

我无法阻止* iptables *出于某种原因,尝试了*服务停止*也是,我也是使用kali linux,我甚至没有iptables在这个位置 –

+0

那么它不是防火墙 –

回答

1

尝试使用以下命令检查防火墙iptables -L -n
,并提供输出

+0

刚刚编辑我的帖子 –

+0

不幸的是它不是防火墙 –

+0

哦,这对我来说不是那么好,它可能是什么,我应该在哪里寻找问题?谢谢 –

1

考虑使用像libopinglibping

一些图书馆要知道,ping使用ICMP(见icmp(7))。您的程序可能需要root权限。所以你需要以root身份运行它,或者使用setuid技术。

系统检查系统故障您正在使用的系统调用(请参阅syscalls(2)的列表)。阅读errno(3)并使用perror(3)(或strerror(errno))。

还可以在程序中使用strace(1)以了解系统调用已完成(以及哪个系统调用失败)。