I suspect the answer is it can’t be done, unless both endpoints and Asterisk are in the same intranet, but if it can you will need to enable directmedia (if you are using example configurations that have nat==yes, they may use the, deprecated, name canreinvite for this).
Do not use directrtpsetup, as it has never been supported.
Please also describe your topology so that I can understand what, if any nat= workarounds are needed. I think you either have a very tricky configuration, or you are overcomplicating things.
Note that, if you can get directmedia to take, it will be necessary for the end points to be mutually routable and for them to be including the routable IP address, for direct routing, in their SDP.
Please also provide the complete general section, of sip.conf, and the sections relating to the end points in question. Obfuscate passwords, and public IP addresses. Make sure that it clear whether addresses are public or private, and for private addresses, to which intranet they belong.
I think the chances of this being supported are very slim. NAT of any sort is a hack and back to back NAT makes things even more confusing. It would be best to have a satellite PABX, or to create a virtual network, so the internet was hidden.
To stand any chance, you would need discrete sub-networks address ranges.
Also, it is the c= line that matters, although that is probably the same.
Typically phones can’t cope with a mixture of NAT and non-NAT, even if they can be made NAT aware.
Also remember that many things you can do with Asterisk require it to be in the media stream, so will disable direct media (in the case of FreePBX it is difficult or impossible to meet the conditions to allow direct media.)