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