问题描述
服务器运行正常,维保需要,重启服务器后应用程序无法收到组播的媒体数据。百思不得其解。
原因分析
最终的定位原因是 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,此处需要根据实际情况修改为实际使用的网卡名