允许linux防火墙接收我的代码包

时间:2017-10-13 10:57:51

标签: c linux sockets firewall

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

EDITED

iptables输出:

  

Chain INPUT(政策接受)   目标prot opt源目的地

     

Chain FORWARD(政策接受)   目标prot opt源目的地

     

Chain OUTPUT(政策接受)   目标prot opt源目的地

Wireshark输出:

  

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

此外,我可能犯了一个错误,问题可能不在接收中,而在于发送数据包

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

考虑使用某些类似using a FileDialog insteadliboping

的库

请注意ping使用libping(请参阅ICMP)。您的程序可能需要root权限。因此,您需要以root身份运行它,或使用icmp(7)技术。

系统地检查您正在使用的每个系统调用失败(有关列表,请参阅setuid)。阅读syscalls(2)并使用errno(3)(或strerror(errno))。

在程序中也使用perror(3)来了解已完成的系统调用(以及哪个系统调用失败)。