Problems with SIP calls dropping outside of local network

That’s not surprising for this issue. On an inbound call, the extension is sending the 200 and the PBX is sending the ACK. Asterisk is smart enough to send the ACK back to the address/port the 200 came from, if the Contact header looks like a NAT address.

A couple of other thoughts:

In the Transports section of PJSIP Settings, you may need to disable the “udp - 0.0.0.0 - All” entry and enable a separate transport for each interface. Then (after saving) at the bottom of the page you’ll see separate sections for each transport.

I found a thread discussing a similar issue, showing how to do some manual tweaking: Custom transport in PJSIP, possible from GUI? - #5 by lgaetz . However, if that’s necessary, chan_sip is probably simpler (if it in fact works).