近期生产环境出现故障,背景如下:
我们使用一个udp server用于接收上报监控信息,写入下游监控平台。
某天,udp server向下游写入的数据量骤减,发现部分监控信息缺失,怀疑是上报侧出问题。
我们进行了如下步骤的排查:
- 在上报侧使用tcpdump抓取发送至对应端口的udp数据包,数据格式和上报频率正常
- 在udp server所在服务器使用tcpdump抓取接收到的udp数据包,发现数据格式和数据量正常,证明上报数据已正确抵达接收端,排除上报sdk的异常
- 在udp server应用内部打印接收到的数据,发现数据缺失,说明udp数据包正常到达了网卡,但是没有被应用接收到
- 查看所在server的iptable配置,发现缺少了对于上报sdk所在网段的accept配置
经过搜索,我们可以了解到,对于IN侧的数据,处理顺序是tcpdump -> iptable,所以可以确认在iptable侧被拦截。
参考:
https://superuser.com/questions/925286/does-tcpdump-bypass-iptables
firewall - Will tcpdump see packets that are being dropped by iptables? - Server Fault