2016-08-11 46 views
3

这与How to multicast send to all network interfaces?不一样,它要求的解决方案只能在一个程序中工作,并且需要源访问 - 我没有。到所有接口的组播路由

我有一堆程序产生组播流量,我希望在我的网络上看到wifi和ethernet,但是我也希望它们在网络出现故障时不会死于“无路由”。

所以我真正想要的是将所有多点传送流量从一台机器路由到所有可用的接口,或者在没有接口的情况下进行环回。

在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”。

我该如何路由这些东西,使它们能够连接到所有适配器,包括环回?

回答

1

您可以使用路由将多路复用路由添加到多个设备。

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路由”的路线,如

ip route add 224.0.0.0/4 dev eth0 
ip route add 224.0.0.0/4 dev wlan0 

但是IP路由韩元让你添加第二条路线。我有asked about如何正确使用IP路由而不必使用显式的多播组地址,但是如果您适合使用路由,则应该能够将路由添加到每个需要使用的设备。