这几天测试FreeSWITCH的Bypass Media功能,FreeSWITCH在公网上,客户端在私网,发现SDP数据被篡改,影响通话。
在客户端抓包,发出去的SDP是这样的(用ngrep抓包,每行会多显示个点)
Content-Length: 544.
.
v=0.
o=- 3693862075 3693862075 IN IP4 192.168.3.119.
s=pjmedia.
b=AS:117.
t=0 0.
a=X-nat:0.
m=audio 4006 RTP/AVP 103 102 104 125 109 3 0 8 9 101.
c=IN IP4 192.168.3.119.
b=TIAS:96000.
a=rtcp:4007 IN IP4 192.168.3.119.
a=sendrecv.
a=rtpmap:103 speex/16000.
a=rtpmap:102 speex/8000.
a=rtpmap:104 speex/32000.
a=rtpmap:125 opus/48000/2.
a=fmtp:125 useinbandfec=1.
a=rtpmap:109 iLBC/8000.
a=fmtp:109 mode=30.
a=rtpmap:3 GSM/8000.
a=rtpmap:0 PCMU/8000.
a=rtpmap:8 PCMA/8000.
a=rtpmap:9 G722/8000.
a=rtpmap:101 telephone-event/8000.
a=fmtp:101 0-16.
在服务端看到的SDP却是这样的:
Content-Length: 542
v=0
o=- 3693862075 3693862075 IN IP4 27.194.24.94
s=pjmedia
b=AS:117
t=0 0
a=X-nat:0
m=audio 4006 RTP/AVP 103 102 104 125 109 3 0 8 9 101
c=IN IP4 27.194.24.94
b=TIAS:96000
a=rtcp:4007 IN IP4 192.168.3.119
a=sendrecv
a=rtpmap:103 speex/16000
a=rtpmap:102 speex/8000
a=rtpmap:104 speex/32000
a=rtpmap:125 opus/48000/2
a=fmtp:125 useinbandfec=1
a=rtpmap:109 iLBC/8000
a=fmtp:109 mode=30
a=rtpmap:3 GSM/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:9 G722/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
我们本次实验,希望客户端能保持私网IP,以便我们在Bypass Media的情况下RTP可以直接通过私网互通,不经过服务器。
这一般是ALG在捣鬼。ALG的全称是应用层网关,有时会偷偷地修改SIP协议,然而,检查了路由器的设备,并没有找到相关设置,也无法判定到底是中由器问题还是运营商在中间自作聪明捣了鬼。
另外,不知道你有没有注意到,这个篡改还有个Bug,那就是它没有改rtcp那一行。
上面的SIP使用的是UDP协议,后来,把SIP变成TCP传输就好了。看来,这个ALG只会篡改UDP的包。
还有几天就过年了,最近一年无法想象的忙,更新有点少。这几天如果老板提前放假,我就补几篇。提前祝大家新年快乐。
广告时间:

该网关是一款支持GB28181协议,实现视频监控系统同视频会议系统、视频指挥调度系统、即时通讯系统之间进行融合的网关设备。
该网关主要解决了在视频相关系统中,任意调取视频监控系统图像这一直困扰业界的技术难题,在综合会商、应急处置和指挥调度等多种应用场景下,准确、直观地展现现场情况。
有需要的可以与我们联系,价格面议!
另外,年前几天“小樱桃商城”正在优惠8折促销,时间有限,想假期充电的,可以提前购买!


