这与How to multicast send to all network interfaces?不同,{{3}}要求的解决方案仅适用于一个程序,并且需要源访问权限 - 我没有。
我有一堆程序会产生多播流量,我希望在我的网络上看到wifi和以太网,但我也希望它们在网络出现故障时不会死于“无路由”。
所以我真正想要的是将所有多播流量从一台机器路由到所有可用接口,或者在没有接口的情况下进行环回。
在Linux上我可以说:
sudo ifconfig lo multicast
sudo route add -net 224.0.0.0 netmask 240.0.0.0 dev lo
但这意味着使用 eth0 或 wlan0 的人无法获得多播。
同样地,我可以说:
sudo ifconfig lo multicast
sudo route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
但是 wlan0 将无法获得多播。更糟糕的是,如果所有接口都关闭,我的程序就会崩溃,“没有路由到[无论多播ip]”。
如何路由事物以便它们转到所有适配器,包括环回?
答案 0 :(得分:2)
您可以使用route将mutlicast路由添加到多个设备。
sudo route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
sudo route add -net 224.0.0.0 netmask 240.0.0.0 dev wlan0
这反映在路由表中,允许我们在单独的NIC上运行的服务工作。
但是,我不清楚你应该这样做。
我不确定是否有效"是我尝试从使用显然已弃用/过时的路线移植到使用" ip route",例如
ip route add 224.0.0.0/4 dev eth0
ip route add 224.0.0.0/4 dev wlan0
然而,ip route不允许你添加第二条路线。我有asked about 如何正确使用ip路由而不必使用显式多播组地址,但如果您习惯使用路由,则应该能够将路由添加到您需要使用的每个设备。