如何使用 cgroups 进行网络记账

t-8*_*8ch 7 networking linux accounting cgroup

我正在尝试获取进程组的网络统计信息。据我所知,Linux 上的复杂网络记帐通常是使用 netfilter/iptables 的记帐基础结构完成的。

因为我想为这样的群体继承遗产cgroups将是一个很好的匹配。

我最好的想法是让 iptables 匹配classid可以使用net_cls-controller设置的。

但似乎,iptables的只能设置通过这个值--set--class

那么:是否有一种很好的方法可以为 Linux 上的进程组获取(复杂而灵活的)网络记帐和日志记录?

Gio*_*Mac 1

这是一个非常好的问题!谢谢。旧的,但会帮助这里的人

\n\n
\n\n

答:您可以将 cgroup 与 tc 一起使用。我从来没有听说过,但谷歌搜索后发现以下内容:

\n\n
\n

net_cls \xe2\x80\x94 该子系统使用类标识符 (classid) 标记网络数据包,允许 Linux 流量控制器 ( tc) 识别源自特定 cgroup 任务的数据包。

\n
\n\n

据此,您应该使用 tc 并从那里获取统计数据(有许多可用的工具)。

\n\n

http://patchwork.ozlabs.org/patch/194809/

\n\n

联系 Alexey,也许他可以帮助你:)

\n\n
\n\n

B. 您可以使用 SELinux 和 iptables 进行统计,但使用 cgroup 限制带宽 - 我更喜欢这种方法 - 在某些情况下 tc 对我来说看起来很难看,并且对于集成来说不是最佳选择。

\n\n

SELinux 具有网络钩子,可以根据进程标签为每个数据包分配附加数据作为标签,甚至可以传输到另一个系统并过滤/记录/获取统计信息,通过使用 SECMARK 完成 iptables 所能做的一切。

\n\n

http://selinuxproject.org/page/NB_Networking

\n\n

如果你还不熟悉 SELinux,我建议你阅读 RedHat/Fedora 指南“Security-Enhanced Linux”和“SELinux FAQ”,另外还有非常好的解释和指南,Daniel J. Walsh (Dan Walsh) 的博客文章- 谷歌搜索一下。

\n\n

另外,对于新手来说,非常好的(也是更好的)起点是关注 YouTube 上的视频,我相信您可以在大约三个小时内处理它并了解您需要的一切:

\n\n
    \n
  • 适合每个人的 SELinux - Paul Wayper
  • \n
  • 适用于系统管理员的 SELinux - Paul Wayper
  • \n
\n\n

SELINUX 很简单,不用害怕

\n