
Ich habe eine Asterisk-PBX-Konfiguration auf einem Raspberry Pi 1 (IP 192.168.2.2) und es läuft problemlos mit ein paar lokalen IP-Telefonen. Ich habe vor Kurzem ein Grandstream HT813-Gateway (IP 192.168.2.3) gekauft, um sowohl ein analoges Telefon mit IP als auch IP mit dem PSTN zu verbinden.
Das analoge Telefon funktioniert einwandfrei und die Einwahlausdas PSTN funktioniert einwandfrei. Das Hinauswählen war deutlich problematischer. Zunächst einmal habe ich in meiner sip.conf folgendes: (Ich habe die anderen Telefone nicht aufgenommen, nur den FXO-Port)
[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
Ich habe das obige Geheimnis aus offensichtlichen Gründen redigiert. Wenn ich über ein IP-Telefon (IP 192.168.2.5) das PSTN wähle, erhalte ich die folgende Fehlermeldung, in der [myphonenumber]
meine Handynummer steht, die ich zum Testen angerufen habe:
== 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
Also habe ich einen Switch-Port eingerichtet, um die Ausgabe meines Asterisk-Servers Pi zu spiegeln. Wenn dieser Fehler auftritt, sendet er keine Daten an das Gateway, das Problem liegt also bei Asterisk. Ich habe natürlich viele Posts gesehen, in denen es heißt, dass dies ein Berechtigungs- oder Firewall-Fehler ist. Zunächst einmal habe ich während des Tests die Firewall auf dem Asterisk-Server deaktiviert. (Es ist ein kleines Netzwerk.) Ich habe auch ausgeführt nmap -v -sU -p 5060 192.168.2.3
, was bestätigt hat, dass mein Gateway einwandfrei funktioniert. Wenn ich diesen Befehl als Asterisk-Benutzer ausführe, erhalte ich natürlich einen Berechtigungsfehler. Sonst sehe ich nichts im Syslog. Irgendwelche Ideen?
AKTUALISIEREN:Ich habe es mir noch einmal angesehen und den Aufruf durch den C-Code verfolgt. Es sieht so aus, als ob das Problem darin besteht, dass die sipsock
Variable (Zeile 1101) auf -1 gesetzt ist, wenn sip_prepare_socket
bestätigt wird, dass die Verbindung einen UDP-Socket erfordert (Zeile 29503). Dies gibt -1 zurück und löst einen Fehler aus __sip_xmit
. Ich werde meine Protokolldateien nach weiteren Informationen durchsuchen. Außerdem ist meine Asterisk-Version v16.2.1.