Hi, again,

Did this work any time before?
I have force_rport(),  fix_nated_register() active and as follows:



if (nat_uac_test("diff-ip-src-contact")) {



if (is_method("REGISTER")) {



fix_nated_register();



setbflag("NAT");



} else {



fix_nated_contact();  <<<<<<<<<



setflag("NAT");



}



}


But in my tcpdump I only see 1 natted address. Which would mean opensips 
suddenly forgets the register with the other natted address  
fix_nated_register().
we would like to see both natted ip adresses. The public IPv4 address is the 
only one addressed.


Regards

Ronald






September 2, 2023 at 2:17 AM, "Ray Jackson" <r...@hero.co.nz> wrote:


> 
> Hi all,
> 
>  
> 
> I'm facing a weird issue which I think is related to broken TCP socket reuse 
> logic where the wrong client is receiving incoming calls due to the wrong 
> socket being used for the incoming INVITE. 
> 
>  
> 
> The scenario is when I have 2 clients registering using TLS behind NAT at the 
> same Public IPv4 address and both clients are using the same private port 
> number.  So client 1 registers and the Via and contact header looks like: 
> 
>  
> 
> **Via: ** SIP/2.0/TLS 
> 192.168.42.162:5062;**branch=**z9hG4bK1409895926;rport;alias**Contact: ** 
> <sip:201@192.168.42.162:5062;**transport=**tls>;**reg-id=**2;+sip.instance="<urn:uuid:00000000-0000-1000-8000-C074AD928AC4>
>  urn:uuid:00000000-0000-1000-8000-C074AD928AC4 "
> 
>  
> 
> Client 2 registers from behind the same Public IPv4 address and the Via and 
> contact header looks like:
> 
>  
> 
> **Via: ** SIP/2.0/TLS 
> 192.168.42.186:5062;**branch=**z9hG4bK-aff1f3b3**Contact: ** 
> <sip:202@192.168.42.186:5062;**transport=**tls>;expire**s=**300
> 
>  
> 
> The location table shows Client 1 received field of 103.212.1.2:5062 and 
> Client 103.212.1.2:23456 
> 
>  
> 
> When a call comes in for Client 1 the location lookup seems to return the 
> correct 'received' address and port (e.g. 103.212.1.2:5062) and all the logs 
> indicate that this is where the SIP INVITE *should* be going to (in the $du 
> field).  However when you check the SIP traffic it selects Client 2's socket 
> and the traffic goes to port 23456 instead of 5062.
> 
>  
> 
> I think this is related somehow to the TCP port reuse logic inside Opensips.  
> My suspicion is that Opensips is looking at the Contact or Via port number 
> (which is the same for both client 1 and 2) and then somehow mapping this to 
> the wrong TCP received socket.
> 
>  
> 
> Does anybody have any suggestions here?  Should I be fixing the NAT in the 
> Contact header (using fix_nated_contact).  I read somewhere that you 
> shouldn't rewrite the Contact header to avoid problems with sending a 
> different Contact URI to the client on calls.  Or is this issue more related 
> to the Via header and the TCP port reuse logic looking at this port instead 
> of the actual received port when choosing the outgoing socket?
> 
>  
> 
> FYI: I am using both force_rport() and fix_nated_register() for incoming 
> registrations from these clients and matching_mode of 0 in usrloc.  However, 
> I am not using fix_nated_contact() for registrations.
> 
>  
> 
> Thanks,
> 
>  
> 
> Ray
>
_______________________________________________
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to