Extension to extension doesn't work but conference room does

I have FreePBX running on a server with a public IP address and a LAN IP address. I have been unable to get two way audio when calling from extension to extension (one on public IP one on LAN IP) using SIP softphones (I’ve tried hundreds of configurations) but I can only get two way audio when I have the two extensions dial into a conference room.

This is confusing to me because I thought SIP audio always passed through the PBX anyways. How else would recording work if it created a direct connection between extensions? So whats the difference in a conference room call vs extension to extension call?

Thanks to anyone clarifying this for me. Its quite confusing.

Two things - Under Settings - > Asterisk SIP Settings, make sure that your Local Networks are properly defined and that your external address is also correct.

Under Applications -> Extensions, under SIP settings, make sure that the Internal phone is set to NAT Mode -> No and conversely, under the settings for the External phone, make sure NAT Mode -> Yes - (force_rport,comedia) and try your calls again.