讨厌的ALG

2020-12-21 15:33:52 浏览数 (1)

这几天测试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的包。

还有几天就过年了,最近一年无法想象的忙,更新有点少。这几天如果老板提前放假,我就补几篇。提前祝大家新年快乐。

0 人点赞