如何通过sip信令以及抓包文件分析媒体发到哪个地方

前言

问题描述:A的媒体没转发到B,B只能听到回铃音,没有A的说话声音,并且fs这边按正常的信令发送了.

分析流程

分析早期媒体发送到哪一个IP 

10.19.0.1发送了一个请求给10.19.0.157这个IP,然而这里的SDP媒体地址,IP4获取到的是10.19.0.16,所以刚开始的声音早期媒体的声音发送到10.19.0.16这个IP上去了,如果不确定的话可以查看另一个地方有RTP发送地址和端口

recv 1144 bytes from udp/[10.19.0.1]:5060 at 23:02:41.622566:
   ------------------------------------------------------------------------
   INVITE sip:1915703975683@10.19.0.157:5080 SIP/2.0
   From: <sip:952315@10.19.0.1:5060>;tag=008BD530-DB4E-161F-A212-0C00130AAA77-46591983
   To: <sip:1915703975683@10.19.0.1:5060>
   Call-ID: 008BD526-DB4E-161F-A212-0C00130AAA77-33366059@10.19.0.1
   CSeq: 1 INVITE
   Content-Length: 271
   Content-Type: application/sdp 
   v=0
   o=- 2065353572 1 IN IP4 10.19.0.16
   s=phone-call
   c=IN IP4 10.19.0.16
   t=0 0
   m=audio 30338 RTP/AVP 0 8 18 3 101

通过下面这个日志可以更确定 10.19.0.157的早期媒体发送到了10.19.0.16这个IP,所以早期媒体发送到了16这个上面,可以看到使用抓包软件看也是10.19.0.157发送嘟嘟的声音到10.19.0.16这个IP上了,怎么知道是嘟嘟的声音呢通过抓包软件RTP流里面查看,并且听了就可以看到是早期媒体的声音.

 switch_core_media.c:6878 AUDIO RTP [sofia/external/952315@10.19.0.1:5060] 10.19.0.157 port 25120 -> 10.19.0.16 port 30338 codec: 0 ms: 20

 分析接通后媒体发送到哪一个IP

接通后10.19.0.1向10.19.0.157这个IP发送请求然而这里的SDP获取的媒体地址,IP4获取到的是172.20.1.2,所以后面的声音送到了172.20.1.2的上面去了,如果不确定的话可以查看另一个地方有RTP发送地址和端口

recv 942 bytes from udp/[10.19.0.1]:5060 at 23:02:55.164856:
   ------------------------------------------------------------------------
INVITE sip:1915703975683@10.19.0.157:5080;transport=udp SIP/2.0
   From: <sip:952315@10.19.0.1:5060>;tag=008BD530-DB4E-161F-A212-0C00130AAA77-46591983
   To: <sip:1915703975683@10.19.0.1:5060>;tag=cK0tj60ZXX6aF
   Call-ID: 008BD526-DB4E-161F-A212-0C00130AAA77-33366059@10.19.0.1
   CSeq: 2 INVITE
   Content-Length: 236
   Content-Type: application/sdp
  
   v=0
   o=MediaServer 2065353572 2 IN IP4 172.20.1.2

通过下面这个日志可以更确定 10.19.0.157的声音发送到了172.20.1.2这个IP,可以看到使用抓包软件看也是10.19.0.157发送的声音到172.20.1.2这个IP上了,

switch_core_media.c:6878 AUDIO RTP [sofia/external/952315@10.19.0.1:5060] 10.19.0.157 port 25120 -> 172.20.1.2 port 20846 codec: 0 ms: 20

### 使用 sngrep 抓取查看 SIP 信令交互 对于 SIP 信令交互的捕获与查看,推荐使用专门针对 SIP 协议设计的 `sngrep` 工具。此工具不仅能够实时捕捉 SIP 流量,还提供了友好的终端界面来展示这些会话详情[^2]。 #### 启动 sngrep 并设置过滤条件 为了启动 sngrep 并指定要监听的具体 IP 地址或端口,可以按照如下方式操作: ```bash sudo sngrep -i eth0 'sip' ``` 这条命令会在名为 `eth0` 的网卡上监听所有的 SIP 流量。如果希望进一步限定源地址,则可以在命令中加入特定的 IP 过滤器: ```bash sudo sngrep -i eth0 'host 192.168.2.38 or host 192.168.1.204' ``` 上述命令仅限于来自两个指定 IP 地址之一的所有 SIP 请求响应消息。 #### 结合 tcpdump 使用 当需要更精细控制抓包过程时,也可以先利用 `tcpdump` 来收集原始数据包,之后再导入到 `sngrep` 中进行解析。例如,在 Linux 系统中执行以下命令可实现这一点: ```bash sudo tcpdump -w /tmp/sip.pcap udp port 5060 ``` 完成数据采集后,可以通过下面的方式打开已保存的数据包文件来进行离线分析: ```bash sngrep -r /tmp/sip.pcap ``` 这种方法允许在网络环境不允许直接在线监视的情况下依然能获取所需的信息。 ### Windows 下的选择 在 Windows 操作系统环境下,Wireshark 是一个非常流行且功能强大的选择。它可以轻松地截获并解码 SIP 及其关联媒体流 RTP 的通信内容。只需输入相应的显示过滤表达式即可聚焦关注的对象,比如只看某些特定主机之间的 SIP 对话: ```plaintext sip and (ip.src==192.168.2.38 or ip.src==192.168.1.204) ``` 这将筛选出由这两个 IP 发起的所有 SIP 相关活动记录[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值