正如dirkt所指出的,我缺少信息:这是该问题的继续,但是总而言之,我试图接收大量多播流量,一个以上的接口可以处理,因此为了接收全部,我想使用多个接口,并分别在每个接口上加入流。
我有三个NIC,其中1个(称为webIf)连接到Internet,另外2个(称为lanIf1和lanIf2)连接到LAN(两者均相同)。我试图同时接收它们的多播流量,但是在接收IGMP查询时仅报告一个接口,并且仅针对它加入的流进行报告。因此,在超时时间之后,交换机将停止发送另一个接口加入的流。
为了解决该问题,我尝试使用策略路由:为每个lanIf创建一个路由表,在每个lanIf上添加一条路由以转到同一网关,并在使用主路由之前创建两个规则以使用两个新的路由表桌子
因此,如果我的地址是:
lanIf1: 25.25.43.88
lanIf2: 25.25.43.84
default gateway of the lan switch: 25.25.43.5
igmp querier: 25.25.43.1
我首先将表添加到/ etc / iproute2 / rt_tables中,如下cat /etc/iproute2/rt_tables
所示:
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
2 lanIf1Table
3 lanIf2Table
然后,我将以超级用户身份运行此脚本:
ip route add 25.25.43.0/24 dev lanIf1 src 25.25.43.88 table lanIf1Table
ip route add default via 25.25.43.5 dev lanIf1 table lanIf1Table
ip route add 25.25.43.0/24 dev lanIf2 src 25.25.43.84 table lanIf2Table
ip route add default via 25.25.43.5 dev lanIf2 table lanIf2Table
ip rule add from 25.25.43.88 table lanIf1Table prio 1000
ip rule add from 25.25.43.84 table lanIf2Table prio 1001
但是随后什么也没发生,IGMP查询仅由其中一个接口回答。
我可以使任何工作生效的唯一方法是更改以下规则之一:ip rule add from 0.0.0.0 table lanIf1Table prio 1000
。然后,在lanIf1上完成IGMP报告。但是,由于所有流量都经过,因此我当然失去了所有的互联网访问权限lanIf1Table
。
我究竟做错了什么?我一直在关注这些教程:http : //www.rjsystems.nl/en/2100-adv-routing.php
https://blog.scottlowe.org/2013/05/29/a-quick-introduction-to-linux-policy-routing/
在这里进行解释:https://access.redhat.com/solutions/53031
在这里不太清楚:https : //www.kernel.org/doc/Documentation/networking/ip-sysctl.txt
考虑具有2个网络接口(接口A和接口B)的计算机。考虑到Linux决定使用interfaceB将数据包发送到IP地址X。考虑到从IP地址X在interfaceA上接收到的数据包。Linux将丢弃该数据包。
除非您sysctl net.ipv4.conf.all.rp_filter=2
在终端中运行或将该行添加到中/etc/sysctl.conf
。
它启用了从其他接口上的IP地址接收数据包的功能,而不是用于将数据包发送到该IP地址的接口!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句