具有双接口的服务器。
One(eht0)用于为互联网用户提供http / ssh服务的WAN。
另一个(eth1)用于从Intranet接收组播数据。
218.108.132.177是公共网络网关。
125.210.198.1是专用网络网关。
233.49.3。* / 24是多播地址。
10.0.11。* / 24是组播数据的来源。
当路由表如下所示,ffmpeg无法从eth1读取udp数据,ffmpeg挂起:
rrca@rcasnap02:~$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
218.108.132.176 * 255.255.255.252 U 0 0 0 eth0
125.210.198.0 * 255.255.255.240 U 0 0 0 eth1
default 218.108.132.177 0.0.0.0 UG 100 0 0 eth0
default 125.210.198.1 0.0.0.0 UG 100 0 0 eth1
或
rrca@rcasnap02:~$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
218.108.132.176 * 255.255.255.252 U 0 0 0 eth0
125.210.198.0 * 255.255.255.240 U 0 0 0 eth1
default 218.108.132.177 0.0.0.0 UG 100 0 0 eth0
10.0.11.0 125.210.198.1 0.0.0.0 UG 100 0 0 eth1
或
rrca@rcasnap02:~$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
218.108.132.176 * 255.255.255.252 U 0 0 0 eth0
125.210.198.0 * 255.255.255.240 U 0 0 0 eth1
default 218.108.132.177 0.0.0.0 UG 100 0 0 eth0
233.49.3.0 125.210.198.1 255.255.255.0 UG 100 0 0 eth1
我想ffmpeg正常工作,但现在我认为路由表中的两条默认路由会互相干扰,我会尝试删除公共网关路由,或者私有网关路由是公共的默认网关路由,ffmpeg运行良好,我认为它从eth1读取多播。但路由表不是这样,ffmpeg无法从eth1读取数据,我认为它读取eth0上的数据(这不是私有网络接口)。 / p>
如何做ffmpeg同时适用于两个接口?
答案 0 :(得分:4)
您需要为多播流量配置正确的路由。内核对所有传入的多播流量进行原始检查:如果它到达与用于发送此类流量的接口不同的接口,则将其丢弃。
只需在eth1接口上设置多播路由:
# route add -net 224.0.0.0/8 dev eth1
或者,禁用原点检查:
# echo 0 > /proc/sys/net/ipv4/conf/eth1/rp_filter
答案 1 :(得分:0)
虽然答案是正确的,因为需要一条路由,但我的设备将视频流发送到239.255时,我必须路由 224.0.0.0/4 (其中最多239.255.255.255) .42.42