We do this all the time... literally have hundreds of phones hanging off site from dozens of systems for various customers with all kinds of networking equipment, and rarely have issues.
Make sure the following ports are port forwarded to the IP address of your 5000 (ALL OF THEM!!!)
20001/UDP - TFTP (69/UDP is optional if 20001 fails for some reason)
6800-6802/TCP - MiNET control, basic call control of phones
3998-3999/TCP - SAC, application and button control of phones
50098–50508/UDP - RTP Audio Inbound from 52XX/53XX sets
6004–6261/UDP - RTP Audio Outbound from Processor module (even though they are outbound originating, forward them)
This is all that is needed for a basic 5000 controller with remote 53xx sets for port forwarding. Having the ports in bold above forwarded properly are all that is required for the phone to boot up properly, but it won't make a usable call yet though until we port forward the last 2 ranges so the audio works. Then you must set the public IP address that the 5000 uses in the IP connections for the processor. Then in each phone's IP Settings change Native to NAT, NAT may work inside your LAN as well depending on your network configuration, or the audio maybe broken on one or both directions.
We have seen issues where IPS/IDS in some firewalls prevents phones from working or causes them to disconnect. We have also had a LOT of problems with customers using Netgear routers, the way they do port forwarding is for lack of a better word, broken, and remote phones don't work properly on many router models. If the phones are failing to boot up, one of the first three entries in bold is not working properly.