Nat
更改 Asterisk UDP 埠後無法獲得語音
測試環境由一個 CSipSimple 客戶端、Asterisk 伺服器和一個帶有 NAT 的路由器組成。以前設備使用UDP埠5060,一切都很好。然後我在 Asterisk、路由器的轉發規則和客戶端應用程序中將埠號更改為 15000。現在,當從外部訪問網路時,客戶端可以註冊,但是當它呼叫某個擴展時,Asterisk 抱怨無法創建 DAHDI 通道。當客戶端在 LAN 中時,呼叫正在工作。
什麼地方出了錯?我只更改了控制埠號。
更新
首先我需要提一下,當我撥打分機號碼 100 時,無論語音是否正常,Asterisk 總是抱怨無法創建 DAHDI 頻道。因此,可以忽略此錯誤消息。
現在,詳細呼叫日誌的不同尾部:
手機客戶端註冊過3G,沒有聲音(通話、代答、超時):
-- SIP/103-00000001 answered SIP/101-00000000 > 0x7fda800295a0 -- Probation passed - setting RTP source address to 192.168.1.100:5062
就這樣。沒有進一步的消息。
通過WiFi註冊的移動客戶端,聲音作品(通話,接聽,通話,掛斷):
-- SIP/103-00000003 answered SIP/101-00000002 > 0x7fda88026620 -- Probation passed - setting RTP source address to 192.168.1.100:5062 > 0x7fda78013fb0 -- Probation passed - setting RTP source address to 192.168.1.112:4000 > 0x7fda78013fb0 -- Probation passed - setting RTP source address to 192.168.1.112:4000 -- Executing [h@macro-dial-one:1] Macro("SIP/101-00000002", "hangupcall,") in new stack -- Executing [s@macro-hangupcall:1] GotoIf("SIP/101-00000002", "1?theend") in new stack -- Goto (macro-hangupcall,s,3) -- Executing [s@macro-hangupcall:3] ExecIf("SIP/101-00000002", "0?Set(CDR(recordingfile)=)") in new stack -- Executing [s@macro-hangupcall:4] Hangup("SIP/101-00000002", "") in new stack == Spawn extension (macro-hangupcall, s, 4) exited non-zero on 'SIP/101-00000002' in macro 'hangupcall' == Spawn extension (macro-dial-one, h, 1) exited non-zero on 'SIP/101-00000002' == Spawn extension (macro-dial-one, s, 43) exited non-zero on 'SIP/101-00000002' in macro 'dial-one' == Spawn extension (macro-exten-vm, s, 9) exited non-zero on 'SIP/101-00000002' in macro 'exten-vm' == Spawn extension (from-internal, 103, 2) exited non-zero on 'SIP/101-00000002'
我懷疑你的 SIP 埠現在在 RTP 範圍內,所以 Asterisk 沒有意識到這是一個 SIP 連接。移動 SIP 埠或移動 RTP 埠範圍,以免它們重疊。
請擷取失敗呼叫(區域網路外)和成功呼叫(區域網路)的 CLI 輸出,並在此處發布結果。
要從 bash 提示符擷取 CLI 輸出:
asterisk -r core set verbose 10
然後從你的區域網路撥打電話,然後從你的區域網路外撥打電話,但失敗發布上述的完整輸出(我假設你有一個簡單的撥號計劃)。如果您使用的是 Elastix 或 FreePBX 等罐裝 PBX,則輸出可能太長,無法在此處發布…