Hi
You also uploaded a pcap trace, using this link (which you sent directly to me). - https://1drv.ms/u/s!AkdU9Y6p5WVyjnrodIHt6EgS-h3U I read it and it's clear what's going wrong.
This is your desired flow.
192.168.0.11 ---> 192.168.0.2 ---> 122.97.130.198 192.168.0.11 <--- 36.140.122.12 <--- 122.97.130.198
In this, your INVITE goes to the public IP address (122.97.130.198) like this.
INVITE sip:+8618626439917@122.97.130.198:15060;user=phone SIP/2.0 Record-Route: sip:36.140.122.12:7080 ;lr;ftag=5c1a6b917a705e9e;did=2c4.8532;nat=yes;vst=AAAAAAAAAAAAAAAAAAAAAAAAAAALAAAIARYfAx4cCw4IAgE1MDYwO3VzZXI9cGhvbmU- Via: SIP/2.0/UDP 36.140.122.12:7080 ;branch=z9hG4bKe61a.5fe9d645ef1bbe470ca6d57fa20375bf.0 Via: SIP/2.0/UDP 192.168.0.11:45642 ;received=192.168.0.11;branch=z9hG4bK98457cb5b0e44505;rport=45642
The 200-OK goes to the UAC (192.168.0.11) like this.
SIP/2.0 200 OK Via: SIP/2.0/UDP 36.140.122.12:7080 ;rport=7080;branch=z9hG4bKe61a.5fe9d645ef1bbe470ca6d57fa20375bf.0 Via: SIP/2.0/UDP 192.168.0.11:45642 ;received=192.168.0.11;branch=z9hG4bK98457cb5b0e44505;rport=45642 Record-Route: sip:192.168.0.159;r2=on;lr=on;nat=yes Record-Route: sip:122.97.130.198:15060;r2=on;lr=on;nat=yes Record-Route: sip:36.140.122.12:7080 ;lr;ftag=5c1a6b917a705e9e;did=2c4.8532;nat=yes;vst=AAAAAAAAAAAAAAAAAAAAAAAAAAALAAAIARYfAx4cCw4IAgE1MDYwO3VzZXI9cGhvbmU-
The problem is, as you know, that the ACK from the UAC is routed to the public IP address 36.140.122.12, whereas you want it to be sent to the private IP address. For this, double record-routing is required, as suggested earlier in this thread.
My best guess is that your proxy has one IP address. A problem is that we now know that you have your listen directive set to listen on the private interface, but always advertise the public IP address, but this is not what you want. You want to advertise one address in one direction and another in the other direction. You want two Record-Route header fields when relaying the initial INVITE.
I see two possible solutions (but there may be others). - Get your proxy server to listen on two addresses, and force the socket when relaying messages. This can be cumbersome and tricky. - Try using the record_route_preset() function from the rr module. This can be used to write the two Record-Route header fields exactly as you want (in the correct order, of course).
I recommend the second option, because it would be simpler for me to implement. I don't know how to do it in KEMI, though. https://kamailio.org/docs/modules/5.7.x/modules/rr.html#rr.f.record_route_pr...
James
On Mon, 9 Oct 2023 at 07:12, 城门 虾米 via sr-users sr-users@lists.kamailio.org wrote:
listen=udp:0.0.0.0:7080 advertise 36.140.122.12:7080
*发件人:* Nick F nik.oloakt@gmail.com *发送时间:* 2023年10月9日 6:36 *收件人:* 城门 虾米 codenot@msn.com *抄送:* Kamailio (SER) - Users Mailing List sr-users@lists.kamailio.org *主题:* Re: [SR-Users] 回复: Re: kamailio Behind nat. How Record-Route should be added ?
Hello,
Could you please share part of "listen=" in your config. Do you have two separate interfaces for each IP?
пн, 9 окт. 2023 г. в 06:00, 城门 虾米 via sr-users < sr-users@lists.kamailio.org>:
UA(192.168.0.11) received 183, find Record-Route(36.140.122.12) then send ACK to 36.140.122.12(Kamialio public ip) not 192.168.0.2(kamailio internal ip), so Kamailio can't receive ACK.
this is my config,192.168.0.11 -> Kamailio -> Other SBC(public ip) function ksr_request_route() if KSR.is_INVITE() then KSR.rr.record_route(); KSR.nathelper.fix_nated_contact() end end
This question has been bothering me for a long time, help me
*发件人:* James Browne james@frideo.com *发送时间:* 2023年10月2日 12:03 *收件人:* Kamailio (SER) - Users Mailing List sr-users@lists.kamailio.org *抄送:* codenot@msn.com codenot@msn.com *主题:* Re: [SR-Users] Re: kamailio Behind nat. How Record-Route should be added ?
If you upload a packet capture, I'll look at it and try to tell you what's going wrong. This is certainly something that can work, and I always find that making a diagnosis with a packet capture is the root to the solution. It's going to be difficult for anyone to help resolve your problem without a code example, a trace, or a detailed description of the problem. If you start with a packet capture, then I'll try to help you. If you give me a sample of code, too, then it'll be easier for me.
James
On Thu, 28 Sept 2023 at 10:56, codenot--- via sr-users sr-users@lists.kamailio.org wrote:
i tried. but it does't work. modparam("rr", "enable_double_rr", 1) __________________________________________________________ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-leave@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to
the sender!
Edit mailing list options or unsubscribe:
Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-leave@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-leave@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe: