Ausgehende Gespräche werden sofort beendet

Bluemaster

Neuer User
Mitglied seit
7 Okt 2009
Beiträge
10
Punkte für Reaktionen
0
Punkte
0
Hallo, ich habe mir nun schon die Finger wund gegooglet, konnte aber leider bisher trotzdem nicht herausfinden warum bei mir ausgehende Gespräche sofort beendet werden.

Eingehende Gespräche funktionieren soweit, allerdings kommt es vor das der Anrufer die ersten Sekunden nichts hört.

Ausgehende Gespräche werden sofort nach Verbindungsaufbau beendet:Rufnummer wird gewählt, externes Telefon klingelt (mein Handy in diesem Fall), sobald ich am Handy das Gespräch entgegen nehme wird die Verbindung beendet.

Intern können alle in alle Richtungen telefonierten. Das Problem tritt also nur auf wenn ich von einem internen zu einem externen Teilnehmer wähle.

Für alle Tips wäre ich sehr dankbar! Logdateien kann ich gerne online stellen, weiß nur leider überhaupt nicht welche interessant wären...

Aufbau: Debian mit Asterisk 1.4, Telefone: Grandstream 2010 und verschienden Softphones. Das Problem tritt bei allen Telefonen, also nicht nur am Grandstream, auf.

Ach so: Der Asterisk Server macht selbst eine pppoe einwahl. Diese funktioniert auch (eingehende Gespräche gehen ja wie gesagt..).

Sip-Anbieter: Alice / Hansenet
 
Zuletzt bearbeitet:
Ach so: Der Asterisk Server macht selbst eine pppoe einwahl. Diese funktioniert auch (eingehende Gespräche gehen ja wie gesagt..).

In der sip.conf für die Telefone ein canreinvite=no

Wie ist der Aufbau deines Servers?
Asterisk mit öffentlicher ip und Telefone via nat ggf. noch ip-tables auf Asterisk?
 
Hi,

vielen Dank erstmal für die schnelle Antwort!

canreinvite=no steht bereits in der sip.conf (im Context [ext-voip-provider]). Ist das da richtig? Oder gehört das nach oben zu [general]? Ich habe auch schon "canreinvite=yes" und "canreinvite=update" getestet: Kein Unterschied feststellbar.

Was meinst Du genau mit "wie ist der Aufbau"? Der Asterisk läuft wie gesagt auf einem Debian Rechner. Dieser stellt eine pppoe-Verbindung mit Hansenet her (IP: 10.???.???.???). Im lokalen Netz (192.168.1.0) befindet sich die Telefone und natürlich ebenfalls der Asterisk.

Mir ist aufgefallen, dass bei den ausgehenden Gesprächen sogar kurz eine Verbindung zustande kommt. Man hört ca. 200-500 mS lang etwas. Dann beendet das interne Telefon die Verbindung (spawn extension ... exiting non-zero...), soweit man das der Asterisk Console bzw. den Log-Dateien entnehmen kann.

Kannst Du mir vielleicht erklären wie der Ablauf normalerweise beim raustelefonieren über einen Sip-Provider auf ein "Nicht-Sip-Endgerät" abläuft? Also welche einträge werden von Asterisk in welcher Reihenfolge durchlaufen, wann kommt eine Verbindung zwischen Asterisk und Sip-Provider zustande und wann und wie werden das interne Endgerät mir dem externen "verbunden". Passiert das verbinden generell direkt, oder läuft der Stream immer durch den Asterisk. Ich hatte oberflächlich mal was zum Thema "native bridging" gelesen. Aber ganz einleuchten tut mir das ncoh nicht wann das zum Tragen kommt und wann nicht. Und auch nicht wie ich das wirklich beeinflussen kann.
 
Kannst Du mir vielleicht erklären wie der Ablauf normalerweise beim raustelefonieren über einen Sip-Provider auf ein "Nicht-Sip-Endgerät" abläuft?

Dein Telefon hat sagen wir die Nummer 10.

Du hast in der sip.conf einen Eintrag [10]

Dort steht unter anderem context= irgendwas

Bei einem Anruf deines Sip-Telefons wird der Kontext irgendwas angesprungen und die Regeln die dort stehen abgearbeitet.

Dort steht auch eine Regel, dein Asterisk soll eine Verbindung mit Teilnehmer über Provider herstellen.

Also stellt Asterisk die Verbindung her und übergibt das Gespräch.

Bei sip werden zwei Ports benutzt. 5060 für die Signalisierung und ein weiterer für die Daten.

Der Datenport wird normalerweise direkt von den beiden Endgeräten (Kann auch die Übergabestelle deines Providers sein) direkt geführt.

Mit canreinvite=no unterbindest du die Übergabe. Alle Daten laufen über Asterisk.

Diese Übergabe macht bei Verwendung von iptables oder nat oftmals Probleme, da die verwendeten Ports nicht geöffnet werden können.

Das Verhalten deines Asterisk deutet auf so was hin.
 
Wir haben canreinvite=no in unserer sip.conf unter [ext-sip-provider] stehen.

Wir haben allerdings 2 DSL Verbindungen.

Das "normale" Internet läuft über einen Router 192.168.1.0/24

An diesem Netz hängen alle Geräte (PC, Telefon, Asterisk, etc.).

Der Asterisk selbst macht für das VoIP noch eine eigene PPPoE verbindung zum Provider, die für das telefonieren von und nach extern genutzt wird.

Eingehende Anrufe funktionieren; je nach Konfiguration manchmal erst nach ca. 1 Sec. was zu hören.

Das GrandStream kann auch ohne Asterisk PPPoE Einwahl machen und direkt beim Provider anmelden. In diesem Fall funktionieren beide Richtungen.


sip.conf
Code:
[general]
port = 5060
bindaddr = 0.0.0.0
localnet = 192.168.1.0/255.255.255.0
language = de
allowsubscribe = yes
notransfer = yes
notifyringing = yes
notifyhold = yes
limitonpeers = yes

register => USER:[email protected]/USER

[2000]
type = friend
context = interne-benutzer
secret = 1234
host = dynamic
subscribecontext = interne-benutzer
call-limit = 10
callgroup = 2
pickupgroup = 2
mailbox = 2000

[2001]
type = friend
context = interne-benutzer
secret = 1234
host = dynamic
subscribecontext = interne-benutzer
call-limit = 10
callgroup = 2
pickupgroup = 2
mailbox = 2001

[2002]
type = friend
context = interne-benutzer
secret = 1234
host = dynamic
subscribecontext = interne-benutzer
call-limit = 10
callgroup = 2
pickupgroup = 2
mailbox = 2002

[ext-sip-account]
type = peer
context = von-voip-provider
username = USER
fromuser = USER
secret = PASS
host = registrar70.sip.alice-voip.de
fromdomain = registrar70.sip.alice-voip.de
qualify = yes
insecure = port,invite
nat = no
canreinvite = no
allow = all

extensions.conf
Code:
[default]
exten => 1001,1,Answer()
exten => 1001,2,Playback(hello-world)
exten => 1001,3,Hangup()

[interne-benutzer]
exten => 2000,hint,SIP/2000
exten => 2000,1,Dial(SIP/2000,20)
exten => 2000,2,VoiceMail(2000,u)

exten => 2001,hint,SIP/2001
exten => 2001,1,Dial(SIP/2001,20)
exten => 2001,2,VoiceMail(2001,u)

exten => 2002,hint,SIP/2002
exten => 2002,1,Dial(SIP/2002,20)
exten => 2002,2,VoiceMail(2002,u)

exten => 2999,1,VoiceMailMain(${CALLERID(num)},s)

exten => _**X.,1,Set(nst=${EXTEN:2})
exten => _**X.,n,Verbose(1,${CALLERID(num)} will Anruf von ${nst} holen)
exten => _**X.,n,DPickup(${nst}@interne-benutzer)

exten => _0[1-9].,1,Set(CALLERID(num)=USER)
exten => _0[1-9].,n,Set(CALLERID(name)=USER)
exten => _0[1-9].,n,Dial(SIP/${EXTEN}@ext-sip-account)

[von-voip-provider]
exten => USER,1,Dial(SIP/2001)

USER ist der Benutzername ( Vorwahl+TelNr )
PASS ist das dazugehörige Passwort

Diese Konfiguration ist nur eine von vielen, die aber fast alle die gleiche Problematik haben.


Der Asterisk Rechner macht kein NAT oder sonstiges.
 
Wir haben canreinvite=no in unserer sip.conf unter [ext-sip-provider] stehen.
Probier das canreinvite=no mal in der [2000], [2001]

Sehe ich das richtig, der Asterisk hat zwei IP-Adressen, eine öffentliche zum Provider und eine 192.168.1.irgendwas?
 
Ja, der Asterisk hat zwei IP-Adressen. Eine aus unserem lokalen Netz und eine von der PPPoE Verbindung. Die IP von der PPPoE-Verbindung stellt die Verbindung zum Alice SIP-Server dar. Man muß dazu sagen, dass Alice zwei PPPoE Verbindungen aufbaut: Eine für Internet und eine für VoIP. Für die Internet PPPoE Verbindung haben wir einen Router mit DHCP. Die andere PPPoE Verbindung (die für VoIP) stellt der Asterisk selber her. Somit hat er eine IP vom Router für Internet und das lokale Netz, sowie eine IP für VoIP.
 
Danke für Deine Antwort

Leider hat der Eintrag "canreinvite = no" in [2001] und [2002] etc nix geändert.

Ich bin erreichbar, kann aber nicht telefonieren. Es kommt für ganz kurze Zeit ein Gepräch zustande, und dann Ende.

Ausgabe auf der Console beim Wählen:
Code:
*CLI>     -- Executing [08004110411@interne-benutzer:1] Set("SIP/2001-08a92928", "CALLERID(num)=USER") in new stack
    -- Executing [08004110411@interne-benutzer:2] Set("SIP/2001-08a92928", "CALLERID(name)=USER") in new stack
    -- Executing [08004110411@interne-benutzer:3] Dial("SIP/2001-08a92928", "SIP/08004110411@ext-sip-account") in new stack
    -- Called 08004110411@ext-sip-account
    -- SIP/ext-sip-account-08a96d40 answered SIP/2001-08a92928
  == Spawn extension (interne-benutzer, 08004110411, 3) exited non-zero on 'SIP/2001-08a92928'

USER ist unsere Vorwahl+TelNr ( Benutzername )

Ab und zu bleibt das Gespräch jetzt für 1-2 Sekunden offen, meistens aber nur wenige Millisekunden.


Wenn ich mich selber Anrufe geht es und sieht so aus auf der Console:
Code:
*CLI>     -- Executing [USER@von-voip-provider:1] Dial("SIP/USER-08a92928", "SIP/2001") in new stack
    -- Called 2001
    -- SIP/2001-08a97538 is ringing
    -- SIP/2001-08a97538 answered SIP/USER-08a92928
    -- Packet2Packet bridging SIP/USER-08a92928 and SIP/2001-08a97538
  == Spawn extension (von-voip-provider, USER, 1) exited non-zero on 'SIP/USER-08a92928'

Und auch hier habe ich unsere Vorwahl+TelNr durch USER ersetzt ;)
 
Da kann ich dir nicht weiterhelfen.
Vermutlich klappt entweder die Übergabe des Datenstromes nicht, oder der Port des Datenstromes wird sofort wieder zugemacht.

Warum? Keine Ahnung.
 
Ja, das könnte sein, nur wie finde ich das raus? Und warum funktionieren dann eingehende Gespräche aus dem öffentlichen Telefonnetz ohne Probleme?
Ich kann auch die "03100" (Sprachansage bei welchem Provider man sich befindet) bei Hansenet / Alice anrufen. Das funktioniert auch ohne Probleme. Auch andere Ansagedienste wie z.B. "*21*XXXX*" oder das Gegenstück "#21#" laufen wunderbar. Nur sobald es den Voip-Server bei Hansenet verläßt, scheint die Sache in die Hose zu gehen. Ich würde daher denken das es eigentlich nicht am Routing oder NAT liegen kann. Weil bis zu Hansenet klappt die Verbindung in beide Richtungen.
Mein Problem ist ich habe mittlerweile keine Idee mehr wie ich das debuggen soll. Ich kann zwar rumprobieren, aber das bringt bisher noch nicht so viel, da ich wie gesagt im dunklen Stocher...

Vielen Dank aber für Deine Hilfe soweit! Vielleicht fällt Dir ja noch was ein oder ein anderer hat vielleicht ein ähnliches Problem...
 
Nur sobald es den Voip-Server bei Hansenet verläßt, scheint die Sache in die Hose zu gehen.

Schau dir einen Gesprächsdebug an. Vermutlich wird der Datenstrom vom Hansanet-Server an einen anderen Server übergeben.

Mach mal einen Anruf von der Konsole aus, ob das auch passiert oder verbinde einen deiner Klienten über die externe Ip deines Asterisk, so das das Gespräch von deinem Telefon über das Internet zum Asterik geht.
 
:)

ich habe nun herausgefunden warum Gespräche nach extern sofort beendet werden:

Von Hansenet (Alice) wird bei abgehenden Telefonaten ein AOC Protokoll mitgeschickt. Asterisk kann das nicht. Also taucht nach wenigen millisekunden im Gespräch "SIP 415 Unsupported Media Type" im Log auf und die Verbindung wird beendet.

Nun kenn ich das Problem, nur leider die Lösung noch nicht.

Asterisk unterstützt AOC-D im SIP nicht!

Kennst Du da einen Trick?
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
246,300
Beiträge
2,249,713
Mitglieder
373,904
Neuestes Mitglied
Elemir
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.