Hallo,
Wenn ich PhonerLite auf einem PC verwende, der über ein VPN mit dem SIP Server verbunden ist, höre ich kein Klingeln beim Verbindungsaufbau und auch danach kein Audio vom Angerufenen.
Warum das so ist, habe ich bereits herausgefunden, bei den Recherchen zum selben Problem mit Linphone (siehe
https://github.com/BelledonneCommunications/linphone-sdk/issues/487)
Bei PhonerLite hier ist es so:
Der PC hat die Adresse: 10.27.96.3 und den Port 5060
Der VPN Server hat die Addresse 192.168.17.17, mit der er dem SIP Server kommunziert.
Der Asterisk SIP Server Addresse 192.168.17.20, und weiß über einen ip route add Eintrag dass er Pakete für 10.27.96.3 an 192.168.17.17 schicken soll.
beim Register liefert der SIP Server ein Via mit
Via: SIP/2.0/UDP 10.27.96.3:5060;rport=5060;received=192.168.17.17;
zurück, als Mitteilung dass er die Pakete von der Adresse 192.168.17.17 erhalten hat.
PhonerLite ändert daraufhin seinen Contact
von
Contact: <sip:100@10.27.96.3>;
zu
Contact: <sip:100@192.168.17.17>;
was richtig ist, damit der Server weiß, wohin er ankommende Anrufe leiten soll.
Meiner Meinung nach müsste auch der Port mit angegeben werden, aber wohl nur, wenn er sich ändert.
also
Contact: <sip:100@192.168.17.17:5060>;
Weiterhin ändert PhonerLite auch den Via Header von
Via: SIP/2.0/UDP 10.27.96.3:5060;rport
zu
Via: SIP/2.0/UDP 192.168.17.17:5060;rport
was gem o.g. Diskussion mit dem Linphone Entwickler laut rfc3261 nicht richtig ist.
Der Fehler mit dem fehlenden Ton kommt aber hierher:
PhonerLite ändert auch die IP Adresse für die SDP Header, die beim INVITE gesendet werden:
v=0
o=- 2310767077 1 IN IP4 192.168.17.17
s=PhonerLite/3.28
c=IN IP4 192.168.17.17
t=0 0
m=audio 5062 RTP/AVP 8 0 3 9 18 101
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:3 GSM/8000
a=rtpmap:9 G722/8000
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=yes
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ssrc:1701667894 cname:100@192.168.17.17
a=sendrecv
Die ankommenden Audio SDP Pakete werden nun an 192.168.17.17 geschickt statt an 10.27.96.3
Wenn man hier die originale Adresse drin lässt, funktioniert es. Also:
...
o=- 2310767077 1 IN IP4 10.27.96.3
s=PhonerLite/3.28
c=IN IP4 10.27.96.3
...
Dieser Beitrag ist also ein Change Request, die Adresse des PCs mit PhonerLite in den SDP Headern zu belassen.