linux中tcpdump抓包中有组播数据,应用程序收不到数据问题
服务器重启后无法接收组播数据,经排查是Linux内核rp_filter(反向路径过滤)机制导致。该安全特性会丢弃源地址与接口不匹配的数据包。解决方法:修改/etc/sysctl.conf文件,将all、default及对应网卡的rp_filter设为0,执行sysctl -p生效后即可正常接收组播数据。
·
问题描述
服务器运行正常,维保需要,重启服务器后应用程序无法收到组播的媒体数据。百思不得其解。
原因分析
最终的定位原因是 linux系统的自我保护机制导致的。
rp_filter
(反向路径过滤)是Linux内核的一个安全特性,用于防止IP欺骗。如果rp_filter
设置为1,系统会丢弃那些源地址和到达接口不匹配的数据包。这可能导致你的程序无法接收到组播数据包。
解决方法:
修改文件/etc/sysctl.conf
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.eth2.rp_filter=0
执行 sysctl -p 生效
这样执行以后就可以正常收到组播的媒体数据了。在此记录一下
本项目使用的网卡是eth2,此处需要根据实际情况修改为实际使用的网卡名

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)