我有一台有 256 个 IP 地址的服务器,供我们内部办公室使用。每个 IP 地址都通过 squid 代理提供给我们的员工。他们连接到代理,浏览网页等。问题是,有些人必须使用机器人等执行繁琐的任务,而其他人则不必,但那些造成大量流量的人最终会耗尽所有带宽,而其他人的下载速度只有 0.09mb/s,这太荒谬了。
我的问题如下。是否有适用于 ubuntu 的工具可以分析流量很大的 IP 地址,然后对其连接进行限制?像防火墙之类的东西?
答案1
通过查看一段时间内的流量来寻找违规者可能为时已晚。请记住,用户希望在几秒钟内收到网络响应。通过分析流量来限制用户很可能是在浏览用户放弃很久之后才应用限制。
您可以使用 iptables 执行某些操作(例如,参见 hashlimit),但您的用户可能还是会注意到速度变慢。如果您想确保每个人都能获得一份,则需要尝试优先处理流量。请参阅 tc 命令。为了更方便,我推荐使用 tcng。无论您使用哪种方法,您都需要一些标准来区分“坏”流量和“好”流量(数量除外)。
但是,我的经验是,性能良好的路由器(无论是 Linux Boxen 还是企业级路由器)几乎总是能够合理地对流量进行优先级排序,这样您就不会像 OP 描述的那样完全崩溃。在尝试做一些花哨的事情之前,我会尝试查看网络上是否存在一些配置或设计不当的硬件。我认为问题出在 ADSL 路由器、旧 Cisco PIX 路由器和廉价交换机上。
答案2
虽然我同意 Bittrance 关于解决此问题的方向所说的一切,但要回答你的直接问题,你应该看看 iftop:
http://www.ex-parrot.com/pdw/iftop/
如果您遇到单个用户或多个用户当前滥用行为的问题,这应该会像您询问的那样准确地显示谁在使用流量。