Page Index Toggle Pages: 1 Send TopicPrint
Hot Topic (More than 10 Replies) Zerhacktes INVITE bei TLS mit Asterisk 1.6 (trunk) (Read 7866 times)
wildzero
YaBB Newbies
*
Offline


Phoner ist großartig!

Posts: 9
Joined: 12. Aug 2008
Zerhacktes INVITE bei TLS mit Asterisk 1.6 (trunk)
15. Apr 2009 at 16:24
Print Post  
Hallo, nachdem PhonerLite soweit erfolgreich mit der TLS Variante in CallWeaver funktioniert, habe ich mich nun an Asterisk 1.6 trunk versucht.

Der REGISTER über tls ist kein Problem, nur beim INVITE passiert folgendes:

SIP debug vom Asterisk:

<--- SIP read from TLS:192.168.116.108:3323 --->

INVITE sip:10@192.168.116.104 SIP/2.0
Via: SIP/2.0/TLS 192.168.116.108:3323;branch=z9hG4bK00314ff43228de11895100c09f5dad7b;rport;alias
From: "123test" <sip:9@192.168.116.104>;tag=15858
To: <sip:10@192.168.116.104>
Call-ID: 00314FF4-3228-DE11-8950-00C09F5DAD7B@192.168.116.108
CSeq: 7 INVITE
Contact: <sip:9@192.168.116.108:3323;transport=tls>
Content-Type: application/sdp
Allow: INVITE, OPTIONS, ACK, BYE, CANCEL, INFO, NOTIFY, MESSAGE, UPDATE
Max-Forwards: 70
Supported: 100rel, replaces
User-Agent: SIPPER for PhonerLite
Content-Length:   259


<------------->
mylab*CLI> 
<--- SIP read from TLS:192.168.116.108:3323 --->
v=0
o=- 8756 0 IN IP4 192.168.116.108
s=SIPPER for PhonerLite
c=IN IP4 192.168.116.108
t=0 0
m=audio 5062 RTP/AVP 8 0 3 101
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:3 GSM/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=sendrecv


<------------->

Wie man hier sieht, "zerhackt" Asterisk den INVITE auf dem weg zum SIP parser, dem "Sitzungs Eröffnung Protokoll Syntaxanalysierer" Smiley
irgendwo in zwei Teile. Asterisk bleibt dann stumm, er kann damit dann nichts anfangen. Wenn man im Asterisk den debug in der main/tcptls.c nach dem 
ssl_read aktiviert, sieht man aber, dass das INVITE hier noch "am Stück" ankommt. Mit einem snom das auch per tls an der gleichen Maschine
hängt passiert das nicht. Macht Phoner/Asterisk oder beide hier was falsch? Kann das jemand reproduzieren?

Ist hier irgdwo eine Größenangabe falsch, ein line break zuviel oder soetwas in der Richtung?
« Last Edit: 15. Apr 2009 at 17:45 by wildzero »  
Back to top
 
IP Logged
 
Phoner Admin
YaBB Administrator
*****
Offline



Posts: 11389
Location: Germany
Joined: 12. Oct 2003
Gender: Male
Re: Zerhacktes INVITE bei TLS mit Asterisk 1.6 (trunk)
Reply #1 - 16. Apr 2009 at 16:05
Print Post  
TLS sitzt aus Protokoll-Stack Sicht oberhalb von TCP. Bei TCP kann es sehr wohl vorkommen, dass Nachrichten nicht am Stück ankommen, sondern in Teilen. Genauso kann es passieren, dass zwei schnell hintereinander geschickte Pakete bei der Gegenstelle als ein Paket ankommen. Die Applikation muss das dann wieder auseinander dröseln bzw. zusammensetzen.
Benutze also mal TCP, ob da das gleiche Problem auftritt. Wenn Asterisk das in der Tat nicht könnte, wäre das aber sehr schlecht.
  
Back to top
WWW  
IP Logged
 
wildzero
YaBB Newbies
*
Offline


Phoner ist großartig!

Posts: 9
Joined: 12. Aug 2008
Re: Zerhacktes INVITE bei TLS mit Asterisk 1.6 (trunk)
Reply #2 - 16. Apr 2009 at 17:50
Print Post  
Ist TLS unabhängig, scheint tatsächlich mehr ein TCP bedingtes Problem zu sein. 

Quote:
dass Nachrichten nicht am Stück ankommen, sondern in Teilen


Kann man das von der Anwendung her (also Phoner) beinflussen, oder ist allein in der Hand des Netzwerk-Stack des jeweiligen OS? Ich frage, da ich das bei dem snom (bisher) nicht beobachtete. 

Der Hauptfehler dürfte zwar auf jdem Fall im den TCP Funktionen des chan_sip liegen, aber wenn sich das Verhalten von der Anwendungen her beeinflussen läst, wäre das natürlich auch interessant.
 
...und mich wieder in die Untiefen des chan_sip werf Wink
  
Back to top
 
IP Logged
 
wildzero
YaBB Newbies
*
Offline


Phoner ist großartig!

Posts: 9
Joined: 12. Aug 2008
Re: Zerhacktes INVITE bei TLS mit Asterisk 1.6 (trunk)
Reply #3 - 16. Apr 2009 at 18:50
Print Post  
...strange  Shocked

die TCP SIP Nachrichten vom Phoner kommen über die sipsock_read im chan_sip rein. Also die Funktion welche eigentlich UDP verarbeitet und nicht über die _sip_tcp_helper_thread welche für TCP zuständig ist...
  
Back to top
 
IP Logged
 
wildzero
YaBB Newbies
*
Offline


Phoner ist großartig!

Posts: 9
Joined: 12. Aug 2008
Re: Zerhacktes INVITE bei TLS mit Asterisk 1.6 (trunk)
Reply #4 - 16. Apr 2009 at 19:33
Print Post  
nee, das mit der UDP Sache ist mehr das Fallback Feature vom Phoner, wenn TLS oder TCP nicht geht.

Das Problem scheint mir die Content-Length:   260 Zeile vom Phoner zu sein (also zwichen Content-Length: und dem Wert). den die sip_tcp_helper_thread Funktion im chan_sip prüft anhand dieser Größenangabe, wie lange er Pakte sammeln soll, bis er eine vollständige SIP Nachricht zusammen hat. Da genau in der Zeile eine Leerstelle zuviel ist, vermute ich mal hier das Problem.

Kann man hier mal einen schnellen Fix im Phoner machen, um zu sehenm ob dass das Problem ist? 
  
Back to top
 
IP Logged
 
Phoner Admin
YaBB Administrator
*****
Offline



Posts: 11389
Location: Germany
Joined: 12. Oct 2003
Gender: Male
Re: Zerhacktes INVITE bei TLS mit Asterisk 1.6 (trunk)
Reply #5 - 17. Apr 2009 at 10:11
Print Post  
Ich sehe das als keinen Fehler von Phoner an.
Asterisk müsste dann mit allen Gegenstellen, welche auf oSIP beruhen (z.B. Linphone) ein Problem haben.
  
Back to top
WWW  
IP Logged
 
wildzero
YaBB Newbies
*
Offline


Phoner ist großartig!

Posts: 9
Joined: 12. Aug 2008
Re: Zerhacktes INVITE bei TLS mit Asterisk 1.6 (trunk)
Reply #6 - 17. Apr 2009 at 22:48
Print Post  
alsoooooo....

Phoner sendet alle paar sek. eine leere SIP Nachricht Inhalt: "\r\n" (ein SIP/NAT offen halten dummy Paket)

Was ja soweit ok geht, nur bitte dann eine ganze SIP Nachricht senden also min. "\r\n\r\n" Damit die Gegenstelle (nicht nur Asterisk) das dummy Paket
auch als solches verarbeiten kann, denn was hier passiert ist folgendes:

Es kommt ein TCP dummy Paket mit \r\n rein, Asterisk puffert das, da dies noch keine abgeschlossene SIP Nachricht ist, wir haben im Buffer also eine leere Zeile,
jetzt kommt eine "echte" SIP Nachricht rein, also das INVITE, und dass wird nun zusammen mit dem halben dummy Packet als eine Nachricht gewertet. Dies führt jetzt dazu das alle restlichen SIP Parser im chan_sip Problem haben das INVITE zu lesen, da es nun mit der einen Leerzeile des dummy Paket beginnt.

Klar kann man auch im Asterisk jetzt hingehen und dafür sorgen, dass man Leerzeilen am Anfang einer SIP-Nachrichten wegschneidet, so einen Patch werde ich
in den Digium Bugtracker stellen, aber vorallem Phoner sollte, wie gesagt, aus dem NAT dummys komplett abgeschlossene SIP-Nachrichten machen. 

So weit ertmal. Und trotz dieses kleinen Bugs, PhonerLite ist trozdem eine gutes Win-Softphone, und vorallem eines der ganz wenigen das TLS/SRTP kann. Der Grund weshalb ich das auch zum chan_sip stressen nutze Smiley 
  
Back to top
 
IP Logged
 
wildzero
YaBB Newbies
*
Offline


Phoner ist großartig!

Posts: 9
Joined: 12. Aug 2008
Re: Zerhacktes INVITE bei TLS mit Asterisk 1.6 (trunk)
Reply #7 - 17. Apr 2009 at 22:55
Print Post  
...und wegen der extra Leerstelle in der Content-Length Zeile. Kann man drüber streiten. rfc326 sagt zwar, dass das
Code
Select All
Subject:            lunch
Subject      :      lunch
Subject            :lunch
 


grundsätzlich erlaubt sei, zu bevorzugen sei aber:

Code
Select All
Subject: lunch
 

  
Back to top
 
IP Logged
 
Phoner Admin
YaBB Administrator
*****
Offline



Posts: 11389
Location: Germany
Joined: 12. Oct 2003
Gender: Male
Re: Zerhacktes INVITE bei TLS mit Asterisk 1.6 (trunk)
Reply #8 - 18. Apr 2009 at 18:58
Print Post  
Ich habe eine neue Beta-Version hoch geladen, welche nun ein doppeltes CRLF sendet.
Probier mal, ob es damit nun geht. Ich kann zwar oSIP so patchen, dass keine überflüssigen Leerzeichen enthalten sind, aber eigentlich muss Astersk (bzw. der sip_chan) sowas abkönnen. Ich warte also erstmal ab.
  
Back to top
WWW  
IP Logged
 
wildzero
YaBB Newbies
*
Offline


Phoner ist großartig!

Posts: 9
Joined: 12. Aug 2008
Re: Zerhacktes INVITE bei TLS mit Asterisk 1.6 (trunk)
Reply #9 - 18. Apr 2009 at 20:34
Print Post  
ja super, ist nun gefixt mit der neuen 1.58beta. Bei Interesse, hier der Patch den ich noch zusätzlich für chan_sip gemacht hatte:
http://bugs.digium.com/view.php?id=14929
(sorry für das "crappy SIP dummy packages")

Richtig super jetzt noch, wenn man die dummys abschalten kann. Als Option in der phonerlite.ini?
Wenn man Phoner intern an einer SIP-PBX nutzt sind die ja sinnfrei und fluten nur den sip debug.

Wegen den überflüssigen Leerzeichen, ne ne der parser im chan_sip kommt damit doch klar (war ja erst nur meine Vermutung) aber stell doch einen Patch dazu bei den oSIP Leuten rein. Möglichst RFC-konform zu sein macht sinn Smiley
  
Back to top
 
IP Logged
 
Phoner Admin
YaBB Administrator
*****
Offline



Posts: 11389
Location: Germany
Joined: 12. Oct 2003
Gender: Male
Re: Zerhacktes INVITE bei TLS mit Asterisk 1.6 (trunk)
Reply #10 - 20. Apr 2009 at 15:45
Print Post  
Ich kenne einige Gegenstellen, die TCP-Verbindung nach einer gewissen Inaktivität geschlossen haben. Das hat also nicht nur mit NAT zu tun, dass PhonerLite solche Dummy Pakete schickt.
Das andere Problem (unnötige Leerzeichen) sehe ich nicht als Problem an, da es ja nicht der RFC widerspricht. Wenn es denn nun geht, dann lasse ich es auch so.
  
Back to top
WWW  
IP Logged
 
Page Index Toggle Pages: 1
Send TopicPrint