要在我的非默认 NIC (dvb) 上接收多播,我执行以下操作:
- 打开套接字(AF_INET、SOCK_DGRAM)
- 在 DVB 接口上使用 IP_ADD_MEMBERSHIP 加入多播地址
- 绑定多播地址(请注意,一个常见的错误是绑定“0.0.0.0”,然后在该套接字上接收甚至您不感兴趣的多播)和端口
此时接收所需多播数据包的唯一方法是在路由表中添加一条规则,通过 DVB 到达发送者所在的网络(另一个网络),就好像 DVB 需要回复多播发送者一样;假设一种源发送方多播模式。有人知道发生了什么事吗?这个问题对我来说很烦人,因为原则上我不知道发件人的IP。
你似乎被蜇了rp_filter
反向路径过滤。如果数据包到达没有源地址路由的接口,则会丢弃数据包。
您可以使用 sysctl 在每个接口上禁用它/proc/sys/net/ipv4/conf/<if>/rp_filter
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)