在OS级别拒绝UDP数据包?

时间:2014-01-14 20:36:07

标签: networking udp ip

在Linux系统上运行,从另一个计算机地址获取UDP数据包让我们说192.168.0.2来自另一个地址让我们说192.168.166.66,我可以看到用tcpdump进入的UDP数据包。但是,如果我使用netcat,我实际上并没有收到数据包。

如果我在192.168.166.XXX网络上创建一个接口,那么netcat能够接收到没有问题的数据包。

我缺少什么基本网络概念?当我可以通过tcpdump看到它们正确传送时,为什么我需要在发送IP的网络上有一个接口?

2 个答案:

答案 0 :(得分:2)

默认情况下,tcpdump会将接口置于promiscious模式,这样您就可以看到所有到达网络接口的数据包。但是,您的操作系统仅处理发往本地系统的数据包,例如将本地或广播地址作为目的地。

答案 1 :(得分:0)

此问题的最终解决方案是禁用接口上的反向路径转发(RPF)。这里有安全隐患,但经过仔细审查后,这是在这种特殊情况下正确的前进道路。

通过修改/etc/sysctl.conf

来关闭RPF
net.ipv4.conf.eth0.rp_filter=0

有关RPF的更多信息:

Wikipedia - Reverse path forwarding

Linux kernel rp_filter settings