如何限制每个端口的流量(Ubuntu Server)

如何限制每个端口的流量(Ubuntu Server)

我想为我运行代理的服务器设置一个 datacap 系统。

我对限制带宽不感兴趣。

我只想将端口限制为每月/每周/每天 x GB 等。我所有的谷歌搜索都返回了有关限制的数据。

服务器是一台 Ubuntu 机器。只是一个普通的盒子。

客户端通过我无法控制的应用程序连接到它。该服务器是代理服务器。

服务器接受端口 2000、3000、4000 等上的连接。每个端口都绑定到一个用户帐户。

一旦达到数据限制,我想停止接受每个端口的连接。

PS:当我说端口时,我指的是端口号(0-65535)

谢谢。

答案1

有多种替代方法来实施流量配额系统。

我确实认为所有这些都至少涉及一些脚本/软件开发。在这里帮助您远远超出了范围。不过,我们可以为您指明总体方向。

一般而言,这涉及以某种方式对所使用的流量进行统计,并且在x流量之后,动态修改squid配置或在客户的源IP中应用防火墙规则。但是,请注意,阻塞可能会在应用程序级别产生问题至少如果你完全阻止它们

有几种方法可以进行这种会计处理。

在linux端,你可以这样做:

  • 解析鱿鱼日志以获取每个用户使用的流量;

  • 在客户端到达的端口上创建防火墙规则,并计算所使用的流量(可能更容易)。看每个网络端口的流量统计。请注意,服务器重新启动会重置 iptable 统计信息,因此将它们保存到 SQL 数据库会更明智。 (在受控重启时或许iptables 会保存流量统计信息,但可能会出现崩溃或电源故障)。

在基础设施方面,您还可以捕获它们所经过的路由器上的网络流量如果您的设备支持。有使用网络流的开源解决方案,但它又涉及一些脚本/软件开发。解决方案会更加专业,但实施起来也更加困难。

同样,在基础设施方面,另一种方法是从您所在一侧的交换机端口捕获 SNMP 数据流量。

不用说,如果您使用 netflows 或 SNMP 来实现这一点,在遥远的将来,如果仅使用网络而不是用户作为流量来源,您可能可以不使用代理,而只需在出现问题时阻塞交换机端口即可。每月配额已用完。

免责声明:

  • 我曾经在莫桑比克经营一家 ISP;
  • 我使用了来自连接到互联网的边界路由器的网络流数据;
  • 当客户超过每月配额时,他们的调制解调器被我的配置软件阻止;
  • 现在我在其他地方工作,仍然使用netflows+Linux。

关于 neflow 的一些线索:如何收集 freebsd 路由器上的完整网络使用统计信息?

相关内容