Linux 带有双以太网接口的ffmpeg工作不正常

Linux 带有双以太网接口的ffmpeg工作不正常,linux,ffmpeg,multicast,Linux,Ffmpeg,Multicast,具有双接口的服务器 一个(eht0)用于WAN,它为internet用户提供http/ssh服务 另一个(eth1)用于从内部网接收多播数据 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 Dest

具有双接口的服务器

  • 一个(eht0)用于WAN,它为internet用户提供http/ssh服务

  • 另一个(eth1)用于从内部网接收多播数据

  • 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
    

    我希望ffmpeg正常工作,但现在我认为路由表中的两个默认路由相互干扰,我尝试一下,当公共网关路由被删除,或者私有网关路由位于公共默认网关路由的头部时,ffmpeg工作得很好,我认为它从eth1读取多播。但是路由表不是这样,ffmpeg无法从eth1读取数据,我认为它在eth0上读取数据(这不是专用网络接口)


    如何使ffmpeg同时在两个接口上运行良好?

    您需要为多播流量配置正确的路由。内核对所有传入的多播通信进行起源检查:如果它到达的接口与它用来发送此类通信的接口不同,那么它将被丢弃

    只需在eth1接口上设置多播路由:

    # route add -net 224.0.0.0/8 dev eth1
    
    或者,禁用原点检查:

    # echo 0 > /proc/sys/net/ipv4/conf/eth1/rp_filter
    

    虽然答案是正确的,因为需要路由,但我必须路由224.0.0.0/4(最多包括239.255.255.255),因为我的设备正在将视频流发送到239.255.42.42

    ,谢谢你的回答。我添加了路由,并将值回显到rp_过滤器,但它也不起作用。我修复了它。我需要删除默认路由125.0.0.0,同时添加10.0.0.0和233.0.0.0。
    # route add -net 224.0.0.0/8 dev eth1
    
    # echo 0 > /proc/sys/net/ipv4/conf/eth1/rp_filter