Also for anyone who’s interested, I did put this in the /etc/firewall-4.rules to allow the endpoints to run on 45060 and convert at the firewall into 5060. Seems to work domestically but I’ve had one-way audio issues when used with philippines clients. I was trying this so I could have time to convert all my endpoints to 45060 and when done convert Freepbx to 45060.
Unless some network element (such as a firewall with a SIP ALG) is cleaning up after you, redirecting ports does not work.
For example, your external IP address is 1.2.3.4 and pjsip is listening on UDP port 5060. Client sends INVITE to 1.2.3.4 port 45060, which gets redirected. When the call is answered, the PBX sends a 200 OK back to the client, containing a Contact header Contact: sip:1.2.3.4:5060
because Asterisk does not know that the request was sent to port 45060. The client sends the ACK to 1.2.3.4 port 5060, which is blocked by the firewall. Asterisk repeatedly resends the 200 for 30 seconds, then drops the call.