
我有一個在 Raspberry Pi 1 (IP 192.168.2.2) 上運行的 Asterisk PBX 設置,它可以很好地運行一些本地 IP 電話。我最近購買了 Grandstream HT813 閘道器(IP 192.168.2.3),用於將類比電話連接到 IP 以及將 IP 連接到 PSTN。
模擬電話工作正常並且可以撥號從PSTN 運作良好。撥出的問題大很多。首先,我的 sip.conf 中有以下內容:(我沒有包括其他電話,只包括 FXO 連接埠)
[general]
context=default
sipdebug=yes
bindaddr=0.0.0.0
[FXO]
type=peer
context=inbound
host=192.168.2.3
insecure=port
dtmfmode=rfc2833
canreinvite=no
secret=secret_was_here
出於顯而易見的原因,我編輯了上面的秘密。當我透過 IP 電話 (IP 192.168.2.5) 撥出 PSTN 時,出現以下錯誤,[myphonenumber]
我撥打測試的手機號碼在哪裡:
== Setting global variable 'SIPDOMAIN' to '192.168.2.2'
-- Executing [[myphonenumber]@local:1] Goto("PJSIP/104-00000000", "dialout,[myphonenumber],1") in new stack
-- Goto (dialout,[myphonenumber],1)
-- Executing [[myphonenumber]@dialout:1] Dial("PJSIP/104-00000000", "SIP/FXO/[myphonenumber], 30") in new stack
== Using SIP RTP CoS mark 5
Audio is at 13370
Adding codec ulaw to SDP
Adding codec alaw to SDP
Adding codec gsm to SDP
Adding non-codec 0x1 (telephone-event) to SDP
Reliably Transmitting (no NAT) to 192.168.2.3:5060:
INVITE sip:[myphonenumber]@192.168.2.3 SIP/2.0
Via: SIP/2.0/UDP 192.168.2.2:5060;branch=z9hG4bK71b94203
Max-Forwards: 70
From: <sip:[email protected]>;tag=as162b0b68
To: <sip:[myphonenumber]@192.168.2.3>
Contact: <sip:[email protected]:5060>
Call-ID: [email protected]:5060
CSeq: 102 INVITE
User-Agent: Asterisk PBX 16.2.1~dfsg-1
Date: Thu, 15 Aug 2019 19:11:17 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE
Supported: replaces, timer
Content-Type: application/sdp
Content-Length: 291
v=0
o=root 1202030057 1202030057 IN IP4 192.168.2.2
s=Asterisk PBX 16.2.1~dfsg-1
c=IN IP4 192.168.2.2
t=0 0
m=audio 13370 RTP/AVP 0 8 3 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:3 GSM/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=maxptime:150
a=sendrecv
---
[Aug 15 20:11:17] ERROR[23679][C-00000001]: chan_sip.c:4321 __sip_reliable_xmit: Serious Network Trouble; __sip_xmit returns error for pkt data
因此,我設定了一個交換器連接埠來鏡像我的 Asterisk 伺服器 Pi 的輸出。發生此錯誤時,它沒有向網關發送任何數據,因此問題出在 Asterisk 中。當然,我看到很多帖子說這是權限或防火牆錯誤。首先,我在測試過程中停用了Asterisk伺服器上的防火牆。 (這是一個小型網路)我也運行了nmap -v -sU -p 5060 192.168.2.3
,這證實了我的網關工作正常。如果我以 Asterisk 使用者身分執行該命令,當然會收到權限錯誤。我在系統日誌中沒有看到任何其他內容。有任何想法嗎?
更新:我又看了一遍,並透過 C 程式碼追蹤了呼叫。看起來問題在於,當確認連線需要 UDP 套接字(第 29503 行)sipsock
時,變數(第 1101 行)被設定為 -1 。sip_prepare_socket
這將返回 -1,將錯誤拋出到__sip_xmit
.我將搜尋我的日誌檔案以獲取任何其他資訊。另外,我的 Asterisk 版本是 v16.2.1。