Hi,
I'm using kamailio 5.3 & rtpengine ( both kamailio and rtpengine resides on public IP on same machine)
am using below logic to handle clients behind NAT

                if(nat_uac_test("8")){
                        rtpengine_manage("SIP-source-address replace-origin replace-session-connection ");
                }else{
                        rtpengine_manage("trust-address replace-origin replace-session-connection ");
                }

I don't want all the rtp packet to go over the server, i just want to make it use the rtpengine just in case it is needed.
but am not sure how this can be done using kamailio,
from the client side i'll try to use STUN, but i understand STUN doesn't work all the time ( ~90% of the cases it will work)

can anyone help me with this ? 

another question - if one client works with STUN and the other is behind NAT how this should be handled?

Cheers