如果我有一个代理服务器,其静态公共 IPv4 198.51.100.138 可以访问互联网。
本地网络中有多少台客户端电脑可以通过代理服务器访问互联网?
答案1
这个问题很难有一个完整的答案,因为它不太正确,或者提供的信息不够。我们可以估计可以转换多少个连接。这与 PC 数量如何对应仍是一个问题:它们访问的是相同的远程资源还是不同的?它们使用哪种访问方式(VPN、HTTPS、邮件等)?
通常,当您执行 TCP 和 UDP NAT 时,它们每个都使用一个元组(local IP, local port, remote IP, remote port)
来识别回复数据包,以知道(private IP, port)
将它们转换回哪个。您已将 single 固定为local IP
,但其他所有变量均保留自由;可以转换的连接数是集合中对象数的乘积,具有粗略的最大值64k local ports * 64k remote ports * 4G remote IPs
(当然,并非所有远程 IP 都是公共的,我说的是粗略的)。如果您将其限制为仅访问 TCP 443(HTTPS)端口,那么我们现在也有一个 single remote port
;依此类推。
因此,您的整个本地网络总共可以向每个远程 IP 地址上的每个远程端口打开最多 64k 个 TCP 和 UDP 连接。如果每台 PC 打开一个连接,则可能有最多 64k 台计算机都访问某个远程服务器上的同一端口,还有 64k 台计算机访问同一远程服务器上的其他端口,甚至还有 64k 台计算机访问其他远程服务器上的同一端口。请注意,一方面浏览器至少打开 6-8 个连接(这会降低结果),另一方面,热门服务不驻留在单个远程 IP 上(这会增加结果)。
相同的限制适用于 HTTP 代理:它需要建立传出连接,并且具有相同的限制。代理和 TCP NAT 时间将具有可用元组的共享池;UDP 保持独立。
有时还会使用其他协议:SCTP、GRE 等。它们都有各自的有趣属性,但也有各自的限制。IPSec 也带来了一些有趣的问题,但它通常按照 NAT-T 使用,将 IPSec 封装到 UDP 中,并且符合 UDP 限制。
答案2
如果您要进行端口地址转换,则取决于您有多少个 (TCP/UDP) 端口、每台机器一次将使用多少个端口以及这些端口的使用时间。实际上,10 秒到 100 秒很容易,因为您的代理上有 64k 个可用端口。
这是一个教育问题还是您希望它支持多少个主机?