為什麼通過我的伺服器進行的 SIP 呼叫無聲?
我已經啟動並執行了 FreeSWITCH SIP 伺服器。它具有公共 IP,位於 1 對 1 NAT 後面(實際上是 Amazon EC2 實例)。
我可以連接到它,呼叫其他端點(即,我的 android 設備到我的電腦,反之亦然)並且信號發送沒有問題(呼叫、應答、掛斷等)。不幸的是,讓我抓狂的是:沒有音頻通過,也沒有影片。
伺服器不會拋出錯誤,但它會報告許多重傳,如下所示:
switch_rtp.c:915
$$ zrtp engine $$: 警告!HELLO 已達到最大重傳次數(重試 20 次)。編號=15 編解碼器設置正確(相同的配置在我的區域網路上本地工作)。客戶端的 NAT/防火牆可能是一個問題,信號確實可以通過(可能是由於固定埠,數據流在隨機埠上執行,這是目前我最好的選擇)。客戶端上的 STUN/TURN/ICE 設置似乎沒有效果。端點位於對稱 NAT 之後。在伺服器上沒有 iptables 規則,安全組按照那裡的建議設置:http ://wiki.freeswitch.org/wiki/Firewall
請幫忙。如何使其工作或至少診斷出什麼問題?
研究部分:(感謝 Matthias,tcpdump 日誌分析幫助)當通信客戶端-伺服器信號時,會話的一部分被路由到正確的 IP(這是我第一次檢查的),而媒體沒有(我沒有註意到,啊) . RTP 流向 10. . .* 網路(伺服器的私有 IP)和 192.168。. net(我的電腦私有IP)。一旦你知道你在找什麼,就很容易發現。
解決方案由兩部分組成。首先,我必須在我的家庭路由器上禁用 ALG 支持,因為它干擾了我的客戶端用來突破 NAT 的 STUN。基本上,STUN 設法找出的,ALG 逆轉了。經過簡單的更改,來自伺服器的 RTP 被定向到正確的地址。
其次,在設置 SECOND 伺服器後,我發現我錯過了在 FreeSWITCH 配置中為內部配置文件配置外部 IP。手冊在這裡:http ://wiki.freeswitch.org/wiki/Amazon_ec2是正確的,我只是設法在建議的配置中省略了兩行。基本上,帶有引用連結中描述的更改的香草配置對我有用。
靜音意味著沒有 RTP,請仔細檢查您的防火牆設置
還要檢查您在 SIP 響應的 SDP 部分中是否有正確的公共 IP 地址,EC2 實例位於 NAT 後面
tcpdump 和 wireshark 是你的朋友