VoIP调试

文章 “如何利用ngrep调试sip系统” 适用于SIP包的快速分析,有些情况下系统环境比较复杂,我们希望能获取完整的通话信息(SIP+RTP,即完整的语音通话),这时我们可以使用tcpdump获取网络数据,使用wireshark进行进一步分析。

tcpdump

安装

命令基本格式如下

例如

表示将任意网络接口收到的包保存到internal.pcap文件

tcpdump voip调试

开始tcpdump抓包

命令执行后系统会停在这里,这时候我们可以打一个电话,然后使用Ctrl+c结束

tcpdump voip调试

中断tcpdump抓包

tcpdump会输出一些抓包的信息,这样tcpdump的使命就完成了,下载pcap文件,轮到wireshark出场了。

Wireshark

wireshark可以从http://www.wireshark.org/download.html下载,安装完毕后,运行wireshark,打开下载到的internal.pcap文件

wireshark VoIP调试

wireshark中查看VoIP通话

这里我们可以看到tcpdump抓到了各式各样的包,使用Telephony下的VoIP Calls,系统会自动归纳总结期间的通话, 便于进一步完成VoIP调试.

wireshark VoIP调试

wireshark中选择要查看的VoIP通话

选取一个通话,点击Flow按钮,wireshark会使用一个图形来表示参与通话的地址,点击相应的步骤,我们可以看到对应的IP包信息

wireshark VoIP调试

wireshark中查看VoIP通话的SIP流程

对于包含RTP语音的通话,点击 Player 按钮,我们还可以试着收听通话内容

wireshark VoIP调试

Wireshark 解码VoIP通话中的RTP流

对于G711编码的通话,wireshark自带解码器,点击 Play 按钮进行播放。在这个图中我们有三段RTP,我们可以分别收听,合成起来就是一个正常的通话了

wireshark VoIP调试

Wireshark 播放VoIP通话