情景:服务端进程绑定了 udp://0.0.0.0:10004 端口,客户单一直在往服务端发送数据,但是 strace 发现,服务端进程一直都在轮询调用 epoll_wait, 也就是服务端程序一直都没有收到过时间通知。但是通过 tcpdump 抓 udp 10004 端口的数据却能抓到。
查看了一下 iptables 的配置:
Chain ETH1_UDP (1 references)
target prot opt source destination
DROP all -- 0.0.0.0/0 0.0.0.0/0
事实证明:iptables 配置为 DROP 时丢弃的包,tcpdump 是可以抓到的。