Hello,
so it seems that FreeSwitch is not handling properly the Path header. As you can see, that Path in REGISTER is:
Path:
<sip:KAMAILIO_PUBLIC_IP;lr;received=sip:UAC_PUBLIC_IP:5063>
But the INVITE has the ROUTE:
Route:
<sip:KAMAILIO_PUBLIC_IP>;lr;received=sip:UAC_PUBLIC_IP:5063
The closing '>' is no longer at the end, making lr and
received header parameters, instead of uri parameters.
Hi Daniel,
Yes, those headers are extracted from a wireshark pcap.
Yes, kamailio is listening on a public IP address without any sort of NAT.
Here's the REGISTER sent from kamailio to FreeSWITCH, copied from a pcap using wireshark with IPs replaced:
Session Initiation Protocol (REGISTER)
Request-Line: REGISTER sip:sip.test.com:5060 SIP/2.0
Method: REGISTER
Request-URI: sip:sip.test.com:5060
Request-URI Host Part: sip.test.com
Request-URI Host Port: 5060
[Resent Packet: False]
Message Header
Record-Route: <sip:KAMAILIO_PUBLIC_IP;lr=on;ftag=1015994109>
Via: SIP/2.0/UDP KAMAILIO_PUBLIC_IP;branch=z9hG4bKb4a9.4cbfa8e6cdc8083ffe5ff1ea228fea26.0
Via: SIP/2.0/UDP 192.168.1.200:5063;rport=5063;received=UAC_PUBLIC_IP;branch=z9hG4bK332629336
From: <sip:1001@sip.test.com>;tag=1015994109
To: <sip:1001@sip.test.com>
Call-ID: 1821101462@192.168.1.200
CSeq: 1 REGISTER
Contact: <sip:1001@192.168.1.200:5063>
Allow: INVITE, INFO, PRACK, ACK, BYE, CANCEL, OPTIONS, NOTIFY, REGISTER, SUBSCRIBE, REFER, PUBLISH, UPDATE, MESSAGE
Max-Forwards: 69
User-Agent: Yealink SIP-T42G 29.72.23.5
Expires: 3600
Allow-Events: talk,hold,conference,refer,check-sync
Content-Length: 0
Path: <sip:KAMAILIO_PUBLIC_IP;lr;received=sip:UAC_PUBLIC_IP:5063>
Path URI: sip:KAMAILIO_PUBLIC_IP;lr;received=sip:UAC_PUBLIC_IP:5063
Path Host Part: KAMAILIO_PUBLIC_IP
Path URI parameter: lr
Path URI parameter: received=sip:UAC_PUBLIC_IP:5063
And this is the test INVITE from FreeSWITCH to kamailio:
Session Initiation Protocol (INVITE)
Request-Line: INVITE sip:1001@192.168.1.200:5063 SIP/2.0
Message Header
Via: SIP/2.0/UDP FREESWITCH_PUBLIC_IP;rport;branch=z9hG4bK543jg8S9Ng8gm
Route: <sip:KAMAILIO_PUBLIC_IP>;lr;received=sip:UAC_PUBLIC_IP:5063
Max-Forwards: 70
From: "" <sip:0000000000@FREESWITCH_PUBLIC_IP>;tag=DyFB81r40609Q
To: <sip:1001@192.168.1.200:5063>
Call-ID: fad5ae53-e89d-1235-d8b5-00163e50ea42
CSeq: 109979488 INVITE
Contact: <sip:mod_sofia@FREESWITCH_PUBLIC_IP:5060>
User-Agent: FreeSWITCH-1.6.9-16-d574870~64bit
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY, PUBLISH, SUBSCRIBE
Supported: timer, path, replaces
Allow-Events: talk, hold, conference, presence, as-feature-event, dialog, line-seize, call-info, sla, include-session-description, presence.winfo, message-summary, refer
Content-Type: application/sdp
Content-Disposition: session
Content-Length: 319
X-FS-Support: update_display,send_info
Message Body
Session Description Protocol
Session Description Protocol Version (v): 0
Owner/Creator, Session Id (o): FreeSWITCH 1500611681 1500611682 IN IP4 FREESWITCH_PUBLIC_IP
Session Name (s): FreeSWITCH
Connection Information (c): IN IP4 FREESWITCH_PUBLIC_IP
Time Description, active time (t): 0 0
Media Description, name and address (m): audio 19424 RTP/AVP 9 0 8 3 101 13
Media Attribute (a): rtpmap:9 G722/8000
Media Attribute (a): rtpmap:0 PCMU/8000
Media Attribute (a): rtpmap:8 PCMA/8000
Media Attribute (a): rtpmap:3 GSM/8000
Media Attribute (a): rtpmap:101 telephone-event/8000
Media Attribute (a): fmtp:101 0-16
Media Attribute (a): rtpmap:13 CN/8000
Media Attribute (a): ptime:20
As always, thanks for all your help!
Kind regards,
Iskren
On 21.7.2017 г. 11:42, Daniel-Constantin Mierla wrote:
Hello,
are you sure that the Route is like that? The lr parameter and received should be between angle brakets <> along with the sip uri.
Maybe you should paste here the full REGISTER sent to sip server after adding the path as well as the INVITE received later. You can replace the IP addresses that are sensitive for you, but keel everything else as it is in order to see if there is something wrong in the headers.
Btw, the To header has nothing to do with routing, the R-URI will be also relevant in this case.
Is kamailio listening directly on a public ip?
Cheers,
Daniel
On 20.07.17 17:18, Iskren Hadzhinedev wrote:
Hello,
I have a kamailio proxy in front of FreeSWITCH.
Whenever FreeSWITCH initiates the dialog (e.g. sends an INVITE), kamailio doesn't use the 'received' parameter and it forwards to the RFC1918 IP address. The initial INVITE from FreeSWITCH has the following headers:
To: <sip:1001@192.168.1.200:5063>
Route: <sip:1.2.3.4>;lr;received=sip:5.6.7.8:5063
Where 1.2.3.4 is the kamailio public IP and 5.6.7.8 is the public IP of the UAC behind NAT.
I have modparam("path", "use_received", 1) in my config file and to my understanding that should be sufficient to route to the proper IP, but kamailio keeps sending INVITEs to 192.168.1.200.
Can anyone tell me what am I missing?
Thanks!
Kind regards,
Iskren
_______________________________________________ Kamailio (SER) - Users Mailing List sr-users@lists.kamailio.org https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
-- Daniel-Constantin Mierla www.twitter.com/miconda -- www.linkedin.com/in/miconda Kamailio Advanced Training - www.asipto.com Kamailio World Conference - www.kamailioworld.com
-- Daniel-Constantin Mierla www.twitter.com/miconda -- www.linkedin.com/in/miconda Kamailio Advanced Training - www.asipto.com Kamailio World Conference - www.kamailioworld.com