小编Chr*_*urm的帖子

在大型系统(约 2000 个用户)中进行流量控制的最佳解决方案是什么?

以下情况:我们是一群学生管理当地宿舍的互联网连接,共有大约2000名最终用户。

我们有一个流量积分系统,每 MB 下载或上传都会花费积分,新积分按小时添加。目前,我们会在用户用完所有积分后阻止其访问互联网(通过将他置于 Debian 网关路由器上 iptables 中的 REJECT 策略中)。

我们只想限制用户的带宽。做这个的最好方式是什么?

简单的答案是对用户的交换机端口(主要是 Cisco Catalyst 3550)设置速率限制。然而,这是不可取的,因为我们自己的网络内部和到大学网络的流量应该保持无限。有没有办法限制 Cisco IOS 中具有特定目标或源 IP 范围(即出口和入口)的数据包的带宽?我找不到任何东西。

另一种方法是控制我们网关路由器上的流量。我想到了几种解决方案:

  • tc 或 tcng - 似乎两者都具有相当神秘的语法,并且都没有提供用于执行每个 IP 流量控制的良好功能。为这么多人准备的专用 QDisc 可能会大大降低路由器的速度。此外,关于两者的文档已经过时了。

  • shorewall - 似乎有一个相当简洁的配置语法,但是,我不确定它是否可以处理这么多的流量和用户,以及它是否适用于 per-IP 流量限制

  • pfSense - 看起来像一个用于像我们这样的目的的操作系统。但是,这需要我们完全重新安装我们的网关路由器。我们没有其他 BSD 系统,pfSense 也需要有非常好的流量统计功能(我们目前在那里使用 fprobe-ulog 和 ulog-acctd)。

你的经验是什么?哪种解决方案适合我们的需求并且最容易维护?你有其他想法吗?

如果您需要有关我们系统的任何其他信息,请随时询问。

提前致谢。


编辑:我已经用iptables和实现了系统tc

每个用户都有一个 /28 子网、一个 VPN IP(都来自 10.0.0.0/8)和一个外部 IP,所有这些都通过一个 iptables 链进行控制。这条链只有一个规则,一个简单的RETURN.

每五分钟,一个 Python 脚本读出这些规则的字节计数器。它会重置计数器并更新我们 PostgreSQL 数据库中用户的流量点帐户。

如果用户的点数余额低于某个阈值,则会为该用户创建两个 tc 类(一个用于传入,一个用于我们网关路由器上的传出接口),IP 将输入到属于这些类的 tc 过滤器中。这些课程受 HTB 限速。

与以前的系统相比fprobe-ulog, …

networking linux cisco iptables traffic-shaping

11
推荐指数
1
解决办法
2175
查看次数

如何选择网络交换机厂商?

我意识到这是一个非常普遍的问题,但我找不到任何真正有用的东西 - 在这里或其他地方。

我目前正在寻找可用于运行具有数千台主机的网络的交换机。目前,我们将 Cisco 3550/3560 用于接入,将 C3750/C4500 用于边缘/核心。

由于是时候从 FastEthernet 访问和千兆核心转向千兆以太网访问和 10Gbit 核心,我们将需要一些新设备。

但是,网络交换机供应商和操作系统太多了:

  • 思科/IOS
  • 马力(*)
  • 瞻博网络 / JUNOS
  • Force10 / FTOS
  • 极进网络 / ExtremeXOS

在他们之间如何选择?或者差异是如此之小以至于人们应该只使用已经存在的东西(在我们的例子中是思科)?

(*) 实际上,我找不到在 hp 交换机上运行的操作系统的名称。如果有人知道请编辑。

networking

3
推荐指数
1
解决办法
528
查看次数

我应该在 Linux 机器上更新内核吗?

据我了解,更新到新内核(使用普通linux-image...包,而不是通过自己的包)需要重新启动服务器。

但是,我们的其中一台服务器 (Ubuntu 10.04) 正在运行多个广泛的screen会话。重新启动会杀死那些对它们的所有者来说总是一个主要麻烦的东西(主要是因为丢失的会话历史记录)。

我该怎么办?我看到了几种可能性:

  • 什么都不做,那就是只更新非内核包(也许使用 apt-pinning?)
  • 更新内核,但不要重启。(这很聪明吗?我似乎记得加载内核模块可能会出现一些问题。)
  • 更新内核并重新启动。
    • 有没有办法保留screen会话?

我想最终归结为这个问题: 更新内核有多重要?

我在这里而不是 askubuntu.com 发布了这个问题,因为我认为这不是 Ubuntu 特定的问题,尽管该服务器正在运行 Ubuntu。

linux debian kernel gnu-screen apt

2
推荐指数
1
解决办法
1627
查看次数

如何记录所有流量的确切长度?

我想处理通过我们的网关服务器(运行 Debian 4.0)的所有数据包。

我的想法是使用tcpdump,但是我有两个问题。
我目前想到的命令是tcpdump -i iface -n -t -q.

  1. 是否保证 tcpdump 会处理所有数据包?如果 CPU 满负荷工作会发生什么?
  2. 输出行的格式是IP ddd.ddd.ddd.ddd.port > ddd.ddd.ddd.ddd.port: tcp 1260. 1260究竟是什么?我怀疑它是以数据包的字节为单位的有效载荷,这正是我需要的,但我不确定。它可能是 TCP 窗口大小。

或者也许有更好的方法来做到这一点?我想到了iptables中的LOG规则,但是tcpdump似乎更容易,我不知道iptables是否可以记录数据包长度。

更新:

它现在在 IpTables 中实现。对每个网段使用单独的链,我有一个深度为 3 的树。

机器软中断负载比较高,尤其是晚上(我们大部分用户都在线的时候),但是到现在还可以接受。

感谢您的输入。

linux debian iptables tcpdump

0
推荐指数
1
解决办法
1726
查看次数