Auflegen funktioniert nicht

helste

Neuer User
Mitglied seit
24 Sep 2008
Beiträge
58
Punkte für Reaktionen
0
Punkte
0
Hallo,

ich habe ein Problem beim beenden von Anrufen.
Und zwar wird die Leitung nicht geschlossen, wenn man auflegt. Egal ob nun beim Softphone oder beim physischen Telefon (Grandstream GXP2000).
Das passiert aber nur auf Geräten, die über VPN am Asterisk Server hängen.

Meine Konfiguration sieht in etwas so aus:
LAN: 192.168.11.x
Asterisk Server ist in diesem IP Bereich.

Ein entferntes LAN ist per VPN angebunden. Die IP Adressen dort sind im Bereich 192.168.0.x

Geräte oder Softphones, die im 192.168.11.x IP Kreis liegen, funktionieren problemlos.
Geräte oder Softphones, die im 192.168.0.x IP Kreis liegen, funktionieren nicht korrekt. Wenn man von so einem Gerät z.B. die Zeitansage anruft und dann auflegt, bleibt die Leitung offen.

Woran könnte das liegen?

Die Leitung wird erst geschlossen, wenn die Gegenstelle auflegt (im Falle der Zeitansage passiert das praktisch nie).

Grüße
Helmut
 
Habe jetzt mal bei einem Client, der sich von außen anmeldet von VPN auf public IP umgestellt.
Gleiches Verhalten.
Das Telefon meldet sich an, kann auch Anrufe tätigen, aber ein Auflegen wird offenbar nicht registriert.
Die Leitung bleibt am Asterisk Server offen.
Weiters gibt es bei diesen Clients auch das Problem, dass die Verbindung zur Gegenstelle nach ca. 20 Sekunden von selbst unterbrochen wird.

Das mag jetzt vielleicht merkwürdig klingen, ist aber so.
Die Verbindung wird nach einiger Zeit (ca. 20 Sekunden) selbstständig unterbrochen. Versucht man aber die Verbindung selbst zu unterbrechen (Auflegen), dann bleibt die Verbindung ebenso ca. 20 Sekunden offen, ehe sie automatisch unterbrochen wird.

Das passiert jedoch nicht, wenn ich mich von meinem LAN aus über die public IP am Asterisk anmelde.
Da wäre aber denkbar, dass meine Firewall dafür sorgt, dass diese Verbindung nur intern abgehandelt wird, also nicht über das Internet läuft. Das würde erklären, dass es sich da gleich verhält wie bei der Anmeldung über die lokale IP Adresse.

Hat vielleicht irgendwer eine Idee, was die Ursache für das Problem sein könnte?

Grüße
Helmut
 
Es gibt je ein Grandstream in beiden Netzen und die haben jeweils IP Adressen der jeweiligen Netze.
Ich denke aber nicht, dass es etwas damit zu tun hat.
Ich habe nun weitere Tests gemacht.

Zum einen habe ich jetzt mal auf einem Rechner in meinem Netz das Softphone auf die public IP des Asterisk Serves eingestellt. Das funktioniert auch wunderbar, solange ich mich dabei über meine ADSL Leitung ins Netz hänge. Das ist die selbe Leitung, über die der Asterisk Server online ist. Beide hängen da an einer Fortigate 50 und ich kann mir vorstellen, dass die Fortigate in dem Fall den Zugriff auf die externe IP des Servers gleich behandelt wie den Zugriff über die lokale IP. Deshalb dürfte das auch gehen.

Um das auszuschließen habe ich mich dann auf mit meinem Notebook über eine UMTS Verbindung eingewählt und das Softphone auf die public IP des Asterisk eingestellt. Das funktioniert auch und ich kann auch eine Verbindung aufbauen, aber es scheint so, als hätte ich da keine Kontrolle über die Verbindung. Ich kann sie nicht beenden, jedoch wird sie automatisch nach knapp 20 Sekunden beendet.

Logfiles bin ich gerade am erstellen. Möchte alle verschiedenen Fälle durchprobieren und dann die Logs vergleichen.

Grüße
Helmut
 
Ich habe jetzt den Teil des Logfiles, der sich unterscheidet.

Hier das AUsschnitt aus dem Logfile wenn die verbindung über die interne Leitung aufgebaut wird:
Code:
[Oct  9 16:35:27] WARNING[20737] rtp.c: Unable to set TOS to 184
[Oct  9 16:35:27] VERBOSE[20737] logger.c:     -- Called 10
[Oct  9 16:35:27] VERBOSE[20737] logger.c:     -- SIP/10-0823a3c8 is ringing
[Oct  9 16:35:29] VERBOSE[20737] logger.c:     -- SIP/10-0823a3c8 answered SIP/25-082315e8
[Oct  9 16:35:57] VERBOSE[20737] logger.c:   == Spawn extension (macro-dial, s, 7) exited non-zero on 'SIP/25-082315e8' in macro 'dial'
[Oct  9 16:35:57] VERBOSE[20737] logger.c:   == Spawn extension (macro-dial, s, 7) exited non-zero on 'SIP/25-082315e8' in macro 'exten-vm'
[Oct  9 16:35:57] VERBOSE[20737] logger.c:   == Spawn extension (macro-dial, s, 7) exited non-zero on 'SIP/25-082315e8'
[Oct  9 16:35:57] VERBOSE[20737] logger.c:     -- Executing [h@macro-dial:1] Macro("SIP/25-082315e8", "hangupcall") in new stack
[Oct  9 16:35:57] VERBOSE[20737] logger.c:     -- Executing [s@macro-hangupcall:1] ResetCDR("SIP/25-082315e8", "w") in new stack
[Oct  9 16:35:57] DEBUG[20737] app_macro.c: Executed application: ResetCDR

und hier der selbe Ausschnitt wenn über eine externe Verbindung angewählt wird:
Code:
[Oct  9 16:23:51] WARNING[20601] rtp.c: Unable to set TOS to 184
[Oct  9 16:23:51] VERBOSE[20601] logger.c:     -- Called 10
[Oct  9 16:23:51] VERBOSE[20601] logger.c:     -- SIP/10-081e9e50 is ringing
[Oct  9 16:23:52] VERBOSE[20601] logger.c:     -- SIP/10-081e9e50 answered SIP/25-082379e0
[Oct  9 16:24:12] WARNING[20124] chan_sip.c: Maximum retries exceeded on transmission ZjQ3NzFlNzI3YjdhY2M1ZTQ0ODBmYjcyMWI4NTY2ZWM. for seqno 2 (Critical Response)
[Oct  9 16:24:12] WARNING[20124] chan_sip.c: Hanging up call ZjQ3NzFlNzI3YjdhY2M1ZTQ0ODBmYjcyMWI4NTY2ZWM. - no reply to our critical packet.
[Oct  9 16:24:12] VERBOSE[20601] logger.c:   == Spawn extension (macro-dial, s, 7) exited non-zero on 'SIP/25-082379e0' in macro 'dial'
[Oct  9 16:24:12] VERBOSE[20601] logger.c:   == Spawn extension (macro-dial, s, 7) exited non-zero on 'SIP/25-082379e0' in macro 'exten-vm'
[Oct  9 16:24:12] VERBOSE[20601] logger.c:   == Spawn extension (macro-dial, s, 7) exited non-zero on 'SIP/25-082379e0'
[Oct  9 16:24:12] VERBOSE[20601] logger.c:     -- Executing [h@macro-dial:1] Macro("SIP/25-082379e0", "hangupcall") in new stack
[Oct  9 16:24:12] VERBOSE[20601] logger.c:     -- Executing [s@macro-hangupcall:1] ResetCDR("SIP/25-082379e0", "w") in new stack
[Oct  9 16:24:12] DEBUG[20601] app_macro.c: Executed application: ResetCDR

Kann man daraus etwas ableiten?
 
Das geht mir zu sehr durcheinander. Funktioniert es denn wenn Asterisk die IP-Adresse 192.168.11.10 und das Grandstream 192.168.11.11 hat? Keep it simple. Dann kannst Du Dich vortasten.
 
Ja, das funktioniert.

Ich habe jetzt Folgende Konfiguration:

LAN mit IP Kreis 192.168.11.0

Asterisk hat: 192.168.11.74
1. Telefon hat: 192.168.11.222
2. Telefon hat: 192.168.11.71
Alles funktioniert gut, egal ob ich nun die interne IP des asterisk einstelle oder die public IP.

Wenn ich aber von außerhalb meines LANs zugreifen will (über die Public IP oder per VPN über de 192.168.11.74), dann funktioniert es nicht korrekt.
Ich kann zwar anwählen, aber es wird nach 20 Sekunden automatisch aufgelegt. Lege ich vorher manuell auf, dann hat das keine Auswirkung und es wird nach 20 Sekunden die Leitung geschlossen.
 
Na dann hast Du doch was womit Du arbeiten kannst. Stehen die Telefone, für den Fall das Du Dich von "aussen" verbindest auf "nat = yes"? Was ist das für ein Gateway? Macht das vielleicht irgendwelche Schweinereien?
 
Ja, alle Telefone haben NAT = Yes eingetragen.

Mein Gateway ist eine Fortigate 50
 
Hm. So ganz kapiere ich Deine Netzwerkkonfiguration nicht. Wo stehen denn die Telefone wenn sie über dieses Fortigate Dingens angelatscht kommen? Kannst Du mal sowas wie einen Netzwerkplan posten?
 
Ich versuche mal alles genau zu beschreiben:

Ich habe ein LAN welches einen IP Kreis von 192.168.11.x hat. Dieses LAN liegt hinter einer Fortigate 50. Diese verbindet sich über einen Bintec230 per ADSL mit dem Internet.
Der Asterisk Server befindet sich im selben LAN. Er5 hat die IP Adresse 192.168.11.74

Dann gibt es Telefone (Grandstream und X-Lite Softphone), welche als IP Adresse ebenfalls eine Nummer aus dem Kreis 192.168.11.x haben.

Diese Telefone funktionieren einwandfrei.

Ich habe nun aber die Notwendigkeit, dass man sich auch von außerhalb meines LANs anmelden muss können. Es gibt also Telefone, die nicht im lokalen Netzwerk hängen.
Diese melden sich über die Public IP des Asterisk Servers an, welche auf der Fortigate durch eine Virtuelle IP freigeschalten ist. Die notwendigen Ports sind ebenfalls geöffnet.

Ich kann nun sowohl bei den im LAN befindlichen Telefeonen als auch bei den externen Telefonen als Server IP die Public IP meines Asterisk servers eingeben. Bei beiden funktioniert die Anmeldung und auch die Anwahl und Verbindungsaufnahme. Jedoch scheint es bei den externen Telefonen ein Problem zu geben. Sie können nicht auflegen, bzw. wird automatisch nach 20 Minuten die Verbindung unterbrochen.

Ich hoffe das war halbwegs verständlich.
Notfalls muss ich einen Plan zeichnen und den hier reinstellen.
 
Jo, ich denk ein Plan waehr nicht schlecht und wuerde helfen.

Was du noch probieren koenntest waehre an der Firewall die sip-messages mitzutracen, bzw auf der externen Seite die ueber das VPN zugreifen. Vielleicht einfach einen Rechner mit 2 Netzwerkkarten dazwischen stecken und dann weiterrouter... gleichzeitig tcpdump in ne file schreiben lassen udn heir posten.

greetz
 
So, habe mal versucht so ein Diagramm zu zeichnen. Bitte um Nachsicht. Ich mache sowas nicht jeden Tag, um es mal vorsichtig auszudrücken.

Diagramm1.jpeg


Telefon A und Telefon B funktionieren wunderbar. Egal ob ich nun als IP Adresse des Asterisk 192.168.11.74 oder die Public IP A.A.A.A eintrage.

Telefon C lässt sich zwar anmelden (über Asterisk IP 192.168.11.74 oder auch A.A.A.A) und es wird auch ein Anruf getätigt, aber dann kommt es zu den beschriebenen Problemen.
Bei Telefon D kann ich natürlich nur die Public IP (A.A.A.A) zum Anmelden an den Asterisk verwenden. Es verhält sich damit aber genauso wie Telefon C.

Auf der Fortigate 192.168.11.1 sind sämtliche notwendigen Ports freigeschalten (UDP 5060 und UDP 10000 - 20000).
 
Hallo,

zeig doch mal deine sip.conf.

Grüße, Werner
 
Hier der Inhalt der sip_general_custom.conf:

Code:
language=de

nat=yes
externip=meine public IP
localnet=192.168.11.0/255.255.255.0
qualify=yes

Und hier die sip_additional.conf:
Code:
;--------------------------------------------------------------------------------;
; Do NOT edit this file as it is auto-generated by FreePBX. All modifications to ;
; this file must be done via the web gui. There are alternative files to make    ;
; custom modifications, details at: http://freepbx.org/configuration_files       ;
;--------------------------------------------------------------------------------;
;

[10]
type=friend
secret=10
qualify=yes
port=5060
pickupgroup=
nat=yes
mailbox=10@device
host=dynamic
dtmfmode=rfc2833
dial=SIP/10
context=from-internal
canreinvite=no
callgroup=
callerid=device <10>
accountcode=
call-limit=50

[11]
type=friend
secret=10
qualify=yes
port=5060
pickupgroup=
nat=yes
mailbox=11@device
host=dynamic
dtmfmode=rfc2833
dial=SIP/11
context=from-internal
canreinvite=no
callgroup=
callerid=device <11>
accountcode=
call-limit=50

[12]
type=friend
secret=10
qualify=yes
port=5060
pickupgroup=
nat=yes
mailbox=12@device
host=dynamic
dtmfmode=rfc2833
dial=SIP/12
context=from-internal
canreinvite=no
callgroup=
callerid=device <12>
accountcode=
call-limit=50

Es sind noch ein paar mehr Extensions, aber die sind eh alle gleich. Dann noch der Trunk zum VOIP Provider, aber der ist eh aus dem Spiel, wenn ich nur von Nebenstelle zu Nebenstelle wähle.


Dann habe ich noch die sip_general_additional.conf anzubieten:

Code:
vmexten=*97
disallow=all
allow=ulaw
allow=alaw
context=from-sip-external
callerid=Unknown
notifyringing=yes
notifyhold=yes
limitonpeers=yes
tos_sip=cs3
tos_audio=ef
tos_video=af41


Fehlt noch etwas was notwendig ist um etwas zu erkennen?
 
Das habe ich jetzt eingetragen.

Für den ersten Moment schaut das sogar gut aus. Habe jetzt mal mit der Einwahl über mein UMTS Handy auf dem Notebook mit X-Lite probiert und die Verbindung wird jetzt nicht mehr unterbrochen, und das Auflegen funktioniert auch.

Die Verbindungsqualität ist aber sehr miserabel. Es kommt zu einer mehrsekündigen Verzögerung und die Sprache ist ziemlich unverständlich. Ich vermute aber mal, dass das möglicherweise daran liegt, dass ich gerade heftigen Traffic auf meiner Internetverbindung habe, weil ein Download läuft.

Muss wohl auch noch die QOS Einstellungen überprüfen.

Jedenfalls vielen Dank für die Mühe und Geduld.
 
Eins noch zum Abschluss:

Alle Telefone im Netz 192.168.11.0 und 192.168.0.0 sind auf nat=no zu setzen. Die Telefone die über das Internet (Public IP) angeschlossen sind benötigen nat=yes

Grüße
 
O.K., ich stelle das noch um. Vielen, vielen Dank für die Hilfe.
 
Nachdem ich dachte, es funktioniert jetzt, habe ich aber folgendes Problem.

Wähle ich von einem Gerät im LAN ein Gerät im VPN an, dann funktioniert alles wunderbar.
Wählt man aber von einem Gerät aus dem VPN eine Nebenstalle im LAN an, dann wird nach genau 20 Sekunden die Leitung unterbrochen.

Das passiert nicht, wenn ich bei dem Gerät im VPN nicht die interne IP Adresse des Servers (192.168.11.74) eingebe, sondern die öffentliche IP Adresse des Servers.
Merkwürdig ist für mich auch, dass das überhaupt geht, da ich die Anweisung externip=..... im sip_general_custom.conf ausremarked habe.

Hat jemand vielleicht eine Idee?

Ich kann jetzt natürlich mal die Telefone im entfernten Netz aufr die Publich IP einstellen, aber es müsste doch auch über die interne IP gehen, oder?
 
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.