我在路由器(Linux机器)上设置了这些接口:
br0: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST> mtu 1500
inet 192.168.0.3 netmask 255.255.255.0 broadcast 192.168.0.255
bridge name bridge id STP enabled interfaces
br0 8000.00156d8591ec no eth0
wlan0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::7271:bcff:feb1:d9cf prefixlen 64 scopeid 0x20<link>
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.200.44.147 netmask 255.255.255.128 broadcast 10.200.44.255
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::215:6dff:fe85:91ec prefixlen 64 scopeid 0x20<link>
在br0中有两个接口(eth0 – 本地家庭网络和wlan0 – 无线家庭网络). eth1是互联网连接接口,不是br0的一部分.
我使用mumudvb发送IP组为239.100.0.1(udp / 1234)的组播IPTV,并使用VLC播放器在LAN上的另一台机器上接收此组播流量.
当我将其配置为通过eth0发送多播时,所有在家庭LAN上运行良好但我无法从路由器本身加入多播组.
这就是为什么我将它配置为通过br0发送多播(更有意义 – 然后我可以从LAN eth0以及路由器本身加入多播组)但是在加入后大约5分钟后,LAN多播连接丢失(不发送任何IGMP消息) ).但我可以再次加入,它将在接下来的5分钟再次工作,然后再下降.
为什么在通过br0发送多播时丢弃而在直接通过eth0发送时不丢弃?我错过了桥上的一些配置吗?什么可以在此期间到期?例如,为桥接器禁用STP,但它不应该影响这个?
当我从路由器本身加入br0多播组时,它不会丢弃.仅当从连接到br0到eth0的机器订阅时.
解决方法:
使用br0进行多播时,需要启用IGMP查询器.启用后,IGMP协议版本将从v3更改为v2,它将开始发出成员资格查询,不再丢弃.
从我用Google搜索的内容来看,似乎没有用于在桥上启用查询器的实用程序,它必须通过/ sys完成,如下所示:
$echo -n 1 > /sys/devices/virtual/net/br0/bridge/multicast_querier