如何捕获一系列IP+linux+的网络消耗?

如何捕获一系列IP+linux+的网络消耗?

我正在寻找一种方法来捕获一系列 IP 每天的网络消耗(而不是带宽)。可以说{192.168.122.0/25}。

我想计算这些 IP 范围每天消耗多少流量/数据。这只是为了我们的验证目的,了解每个 IP 每天消耗多少 KB/MB/GB/ 的数据。

我的环境是RHEL/Centos 7,

您能否建议任何带有选项的工具来实现此操作?如果我找到一种方法来跟踪使用/消耗,我将每天自动化该过程。

我正在寻找 CLI 而不是图形工具。另外,我尝试使用 iptraf、nmap、iftop,但无法找到跨 IP 范围进行网络消耗的选项。

答案1

一种可以满足您需求的工具是沙克:

$ tshark -q -i eth0 -a duration:86400 -z conv,ip net 192.168.122.0/25

和:

  • -q:不显示连续捕获的数据包计数
  • -i eth0:捕获接口上的流量eth0(或者您也可以用于-i any捕获所有接口上的流量)
  • -a duration:86400:捕获一天的流量
  • -z conv,ip:获取IP统计信息
  • net 192.168.122.0/25:捕获过滤器

示例输出:

$ tshark -q -i any -a duration:10 -z conv,ip net 192.168.134.0/24
                                               |       <-      | |       ->      | |     Total     |    Relative    |   Duration   |
                                               | Frames  Bytes | | Frames  Bytes | | Frames  Bytes |      Start     |              |

151.101.122.217      <-> 192.168.134.142          571     43915     591   3186555    1162   3230470     0,994980222         6,3748
192.168.134.142      <-> 192.168.136.27             5      1347       6       788      11      2135     5,714866377         0,0350
192.168.134.96       <-> 192.168.134.255            0         0      10      1060      10      1060     0,000000000         9,1583
151.101.129.69       <-> 192.168.134.142            5       608       5       632      10      1240     6,193916779         0,1324

从那里,根据您的需要,您可以使用其他 cli 工具来解析输出和总字节(例如awk

答案2

所以你确实想要网络流量带宽使用情况,而是每日总结。

您提供了一个私有 IP 范围,因此我假设您希望通过您自己计算机的 IP 地址来获取它们,而不是通过它们连接到的互联网主机的 IP 地址来获取它们。

原则上有两种方式:

1)监控每台机器上的流量。内核在 中保存每个网络接口的数据包计数器/proc,因此您可以读取这些计数器并计算平均/总流量。

2) 监控中央路由器上的流量。要按本地 IP 对这些进行排序,您需要的不仅仅是总流量,因此您需要检查数据包。许多流量监控工具通过在网络接口上使用混杂模式来工作;这可能会导致可测量的 CPU 负载。另一种选择是编写自定义iptable规则来计算使用情况。

有一个可用的不同工具,请参见例如这里或者这里对于某些人(以及更多的谷歌,软件推荐超出了本堆栈交换的范围)。

如果您选择替代方案 1,将所有受监控主机的信息收集到一个中心位置的流行协议是简单网络管理协议,所以将其包含在您的谷歌搜索中。

相关内容