项目中遇到了这个奇葩问题,搞了好多天才定位到问题所在,在此记录下。
应用软件通过组播收媒体数据,同一个组播IP和端口,打开后只能收到终端发来的媒体数据,特定IP 192.168.4.8 发来的媒体数据,应用软件无法收到,导致丢失部分媒体数据。
通过tcpdump抓包,抓包命令:tcpdump -i any -w call.pcap。使用wireshark打开抓包,发现92.168.4.8 发来的媒体数据都有。但是应用软件中没有收到。
后来通过命令:ip a查看,发现该服务器中两个网卡eth0 和eth1都是打开状态,实际只有eth0连接了网线,且应用软件绑定的也是eth0。
凑巧的是eth1的默认ip是192.168.4.123,跟特定IP 192.168.4.8是同一个网段。导致组播媒体包都转发到了eth1上,而应用软件绑定的网卡是eth0。
将eth1网卡配置文件修改,ONBOOT=no,重启网卡后,应用软件可以正常收到所有组播媒体数据了。
抓包一定要明确抓哪个网卡,不能用any,否则问题很难分析出来。
tcpdump -i eth0 -w call.pcap