It is hard to have a complete answer for this question because it is not quite correct, or else not enough information given. We can estimate how many connections could be translated. How this corresponds to the number of PCs remains a question: will they access the same remote resource or different? Which kind of accesses they use (VPNs, HTTPS, mail and so on)?
In general, when you are doing TCP and UDP NAT, each of them uses a tuple (local IP, local port, remote IP, remote port)
to recognize reply packets to know which (private IP, port)
to translate them back into. You've fixed to single local IP
, but left all other variables free; how many connections could be translated is a product of how many objects are in the set, with the rough maximum 64k local ports * 64k remote ports * 4G remote IPs
(of course, not all remote IPs are public, I am saying this is rough). If you limit it to only access TCP 443 (HTTPS) port, we have now a single remote port
too; and so on.
Therefore, your whole local network in total can open up to 64k TCP and UDP connections to each remote port on each remote IP address. If each PC opens a single connection, you may have up to 64k computers all accessing the same port on some remote server, and 64k more accessing other port on same remote server and 64k even more accessing the same port on other remote server. Notice that on one hand browsers open 6-8 connections at least (which reduces the result), on the other hand, popular services don't reside on a single remote IP (which increases the result).
The same restriction applies to HTTP proxy: it needs to establish outgoing connections and that has the same limit. Proxy and TCP NAT time will have a shared pool of available tuples; UDP stays alone.
There are sometimes other protocols used: SCTP, GRE and so on. They all have their interesting properties, but their limits are theirs. IPSec also adds some interesting question, but often it is used as per NAT-T which encapsulates IPSec into UDP and it falls within UDP limit.