配置为路由器的普通计算机可以支持任意数量的用户(连接的客户端)吗?

配置为路由器的普通计算机可以支持任意数量的用户(连接的客户端)吗?

我计划安装一个路由器对于相当大量用户(50-100),我发现家用路由器在如此多的设备数量下非常不稳定。
在研究时,我发现了这一点报告关于我必须使用的思科路由器类型,作为已连接客户端数量

但是我有一台现在没用的电脑,它的配置还不错:

  • 英特尔 i5。
  • 8GB-RAM。
  • 128GB SSD硬盘用于操作系统。
  • 用于存储数据的标准附加硬盘。

我以前能够安装Ubuntu Linux 服务器曾蒂亚尔,而且它似乎在几个月内起到了作用带 NAT 的路由器以及其他额外功能(防火墙、平衡负载、统计信息等)。我想知道它是否会这次做工作而不需要购买如此昂贵的思科设备(50 个客户端的费用超过 1500 美元)。

我的问题是:

  • 可以不错的电脑配置为网关路由器(我希望它至少能作为 NAT 和 DHCP 服务器工作)它将支持大数字连接电脑的数量?有多少?
  • 如果添加防火墙、流量整形、端口转发、VPN 或其他额外服务,会吗减少数量支持连接多少台电脑?

笔记:

  • 我们根本不是在谈论无线客户端。只是电缆连 接。

答案1

如果您只是需要它进行路由,那么一切都归结为一个问题:CPU 每秒可以处理多少个数据包。

为了进行负载测试,您可以在每侧放置一个交换机,并将几台计算机连接到每个交换机以生成流量。然后测量您可以推送的数据包数量。您应该至少执行三次测量 - 一次使用最小大小的数据包,一次使用最大大小的数据包,一次使用代表性混合。

这将为您提供它可以处理的流量大小的测量值。它可以处理多少用户取决于每个用户需要多少流量。

与真正的路由器相比,它的缺点是它必须在 CPU 上完成所有路由,这可能会成为瓶颈。但只要你知道它每秒可以处理比你所需更多的数据包,那就不是问题了。

一旦添加需要额外处理的任务,CPU 和内存需求就会增加。这些任务可能是 NAT、防火墙、DPI、代理等。这些任务会使对设置进行负载测试变得更加困难,因为每个数据包的处理时间会比仅需要路由时差异更大。

在某些情况下,这些高级任务可能会让您的计算机比真正的路由器更具优势。真正的路由器有一个专门用于路由数据包的芯片,没有其他功能。如果大多数要路由的数据包需要对该专用芯片进行过于复杂的处理,路由器将失去其优势。然后归结为 CPU,您的计算机可能拥有比您原本使用的路由器更强大的 CPU。

任何有状态处理都会使情况变得更加复杂。任何 NAT、防火墙和代理功能通常都是以有状态的方式实现的。对于这些功能,内存量很重要,状态在内存中保存的时间也很重要。每个具有数据包状态处理的路由器都是可靠性的障碍。对于如何克服这些障碍,没有单一的答案。

上述要求均不需要大量存储空间。为了提高可靠性,我会让机器从两个驱动器上的 RAID-1 启动。至于性能,这应该没什么区别,因为一旦机器启动,它几乎就不会再接触存储。

运行 DHCP 服务器不需要太多处理能力。考虑到您已有的所有其他要求,添加 DHCP 服务器只是一项很小的任务,您可能不会注意到对机器的要求有任何差异。

答案2

我曾使用一台旧的 3GHz Pentium 4(带 2GB RAM)作为路由器 + 防火墙,为 500 多个用户提供服务,并在各个方向配备全双工千兆上行链路(我们甚至拥有 1Gbps 互联网服务),并且它从未出现过任何问题。

思科的设备很坚固,但考虑到他们的条款和定价有多令人讨厌,它的功能并不强大。所以,我不会对他们作为配置指南给出的数字感到太害怕。

如果您想在同一台机器上执行纯路由以外的任何操作(防火墙、NAT、DHCP 等),请远离 Linux。Iptables/netfilter 是一场灾难。我会选择原始 OpenBSD,或者基于 BSD 的防火墙发行版,如 OPNsense 或 pfSense。

2021年编辑

有了 eBPF 和 nftables,Linux 防火墙现在相当不错了。当我写下最初的答案时,这些功能是最先进的。

相关内容