Page Index Toggle Pages: 1 Send TopicPrint
Normal Topic Warum bekomme ich keinen Fehler wegen NAT (Read 2632 times)
SurviKnows
YaBB Newbies
*
Offline


Phoner is great!

Posts: 2
Joined: 30. Jul 2011
Warum bekomme ich keinen Fehler wegen NAT
30. Jul 2011 at 20:23
Print Post  
Hallo,

ich bereite gerade ein paar Screenshots vor um den Verbindungsaufbau (usw) bei SIP zu zeigen. Dementsprechend wollte ich auch auf die NAT Problematik hinweisen, leider tritt diese nicht wie geplant auf (ich bin wahrscheinlich der erste, der sich darüber beschwert  Wink).

Im Anhang ist ein Screenshot der Invite Anfrage. Im Message-Header ist klar die private IP (192.168.0.100) zu erkennen, dennoch schickt Phoner die Antwort an die öffentliche IP (62.143.60.202) zurück.

Was mach ich hier falsch? Soweit ich weiß ist der VIA Eintrag für den Empfänger die Quelladresse... Gibts eine versteckte Option, dass sich Phoner doch die IPs der UTP Pakete schnappt?

Aufbau: 2 Windows PCs mit Phoner, einer hinter Router(ink NAT), der andere hat direkt ein öffentliche IP.

vielen Dank für die Hilfe!

Gruß

PS: Die öffent. IPs sind alle dynamisch, da hab ich keine Sicherheitsbedenken, die hier zu veröffentlichen  Wink
  

1.jpg ( 222 KB | Downloads )
1.jpg
Back to top
 
IP Logged
 
Phoner Admin
YaBB Administrator
*****
Offline



Posts: 11421
Location: Germany
Joined: 12. Oct 2003
Gender: Male
Re: Warum bekomme ich keinen Fehler wegen NAT
Reply #1 - 30. Jul 2011 at 20:58
Print Post  
Da ist nichts Magisches dabei. In der Via-Zeile gibt es einen Parameter "rport". Dieser besagt, dass die Empfangsadresse gleich der Senderadresse ist. Für den Empfänger der Nachricht heißt das, dass er seine Rückantwort auf dieses INVITE nicht an die Adresse im Via sendet, sondern dorthin, von wo der Request herkam. Folglich geht die Antwort an die öffentliche IP-Adresse zurück. Zusätzlich muss im Response nachher der Port und die IP-Adresse angegeben werden, an welche Adresse die Response ging.
Das kannst du in RFC 3581 nachlesen.

Responses kommen also normalerweise problemlos zurück durch NAT. Das eigentliche Problem ist dann jedoch RTP. Dafür wird ein eigener UDP-Socket verwendet - und somit beim NAT auch ein anderes Mapping. Den öffentlichen Port dazu bekommt man nicht gesagt. Die Folge sind deshalb meistens "einseitige Sprachverbindungen". Der Teilnehmer hinter NAT hört halt nichts.

Mittels STUN oder UPnP kann man aber auch sowas umgehen - leider nicht immer.

Es gibt jedoch auch Gegenstellen, welche davon ausgehen, dass der andere Teilnehmer auch den gleichen RTP-Port zum Senden und Empfangen nimmt. Deshalb schicken manche die RTP-Pakete auch nicht an die im SDP angegebene Adresse, sondern dorthin, von wo die RTP-Pakete des anderen herkommen. Das ist aber leider nur eine Vermutung, welche jedoch meistens zutrifft Smiley
  
Back to top
WWW  
IP Logged
 
SurviKnows
YaBB Newbies
*
Offline


Phoner is great!

Posts: 2
Joined: 30. Jul 2011
Re: Warum bekomme ich keinen Fehler wegen NAT
Reply #2 - 31. Jul 2011 at 15:10
Print Post  
Erstmal vielen vielen Dank für die schnelle Antwort - und tatsächlich erfolgt genau das beschriebene Phänomen:

Das erste RTP Paket geht wirklich an die private Adresse, weswegen keine Kommunikation möglich wird. Dann schickt der Client (hinterm NAT mit der .202) eine zweite Invite Nachricht, dann aber mit der öffentlichen IP in der VIA?! Woher hat er diese denn inzwischen gelernt?

Naja dannach erfolgt auf jeden Fall eine normale Kommunikation mit  - wie richtig angenommen - dem gleichen Port zum senden und empfangen.
« Last Edit: 31. Jul 2011 at 16:24 by Phoner Admin »  
Back to top
 
IP Logged
 
Phoner Admin
YaBB Administrator
*****
Offline



Posts: 11421
Location: Germany
Joined: 12. Oct 2003
Gender: Male
Re: Warum bekomme ich keinen Fehler wegen NAT
Reply #3 - 31. Jul 2011 at 16:31
Print Post  
Ich habe mal deine Screenshots von Wireshark gelöscht. Das Bild war einfach zu groß.
In diesem Fall kommt RFC 5626 zum Einsatz. Wenn PhonerLite NAT erkennt (siehe Via-Header im Response), dann versendet PhonerLite STUN-Requests an den SIP-Port der Gegenstelle. Nach Rufaufbau wird auch ein solcher STUN-Request über den RTP-Port an den RTP-Port der Gegenstelle geschickt. In der STUN-Antwort steht dann ja die öffentliche IP-Adresse und Port. Weicht diese Adresse von der bisher verwendeten ab, dann schickt PhonerLite ein Re-INVITE mit den neuen Daten. Kein Hexenwerk. Hauptsache es geht Smiley
In deinem Wireshark-Trace wurden die STUN-Paket nicht richtig erkannt, sondern ein "falsches" RTP-Paket.
  
Back to top
WWW  
IP Logged
 
Page Index Toggle Pages: 1
Send TopicPrint