Linux 网络/IP 计费(适用于 Linux-2.0)
外观
< Linux 网络
Linux 内核的 IP 计费功能允许您收集和分析一些网络使用数据。收集的数据包括自上次重置数字以来累积的包数和字节数。您可以指定各种规则来对这些数据进行分类,以满足您的任何目的。此选项在内核 2.1.102 中被移除,因为旧的基于 ipfwadm 的防火墙被“ipfwchains”所取代。
内核编译选项
Networking options ---> [*] IP: accounting
编译并安装内核后,您需要使用 ipfwadm 命令来配置 IP 计费。您可以选择多种不同的方式来分解计费信息。我选择了一个简单的例子,它可能对您有用,您应该阅读 ipfwadm 手册页以获取更多信息。场景:您有一个以太网网络,通过 PPP 连接到互联网。在以太网上,您有一台提供多种服务的机器,您感兴趣的是了解每个 FTP 和 WWW 流量产生的流量,以及总的 TCP 和 UDP 流量。
您可以使用以下命令集,它显示为一个 shell 脚本
#!/bin/sh # # Flush the accounting rules ipfwadm -A -f # # Set shortcuts localnet=44.136.8.96/29 any=0/0 # Add rules for local ethernet segment ipfwadm -A in -a -P tcp -D $localnet ftp-data ipfwadm -A out -a -P tcp -S $localnet ftp-data ipfwadm -A in -a -P tcp -D $localnet www ipfwadm -A out -a -P tcp -S $localnet www ipfwadm -A in -a -P tcp -D $localnet ipfwadm -A out -a -P tcp -S $localnet ipfwadm -A in -a -P udp -D $localnet ipfwadm -A out -a -P udp -S $localnet # # Rules for default ipfwadm -A in -a -P tcp -D $any ftp-data ipfwadm -A out -a -P tcp -S $any ftp-data ipfwadm -A in -a -P tcp -D $any www ipfwadm -A out -a -P tcp -S $any www ipfwadm -A in -a -P tcp -D $any ipfwadm -A out -a -P tcp -S $any ipfwadm -A in -a -P udp -D $any ipfwadm -A out -a -P udp -S $any # # List the rules ipfwadm -A -l -n #
名称“ftp-data”和“www”指的是 /etc/services 中的行。最后一个命令列出每个计费规则并显示收集到的总数。
在分析 IP 计费时,需要注意的重要一点是,所有匹配规则的总计都会被递增,因此要获得差值数据,您需要进行适当的数学运算。例如,如果我想知道有多少数据不是 FTP 也不是 WWW,我需要从匹配所有端口的规则中减去各个总计。
root# ipfwadm -A -l -n IP accounting rules pkts bytes dir prot source destination ports 0 0 in tcp 0.0.0.0/0 44.136.8.96/29 * -> 20 0 0 out tcp 44.136.8.96/29 0.0.0.0/0 20 -> * 10 1166 in tcp 0.0.0.0/0 44.136.8.96/29 * -> 80 10 572 out tcp 44.136.8.96/29 0.0.0.0/0 80 -> * 252 10943 in tcp 0.0.0.0/0 44.136.8.96/29 * -> * 231 18831 out tcp 44.136.8.96/29 0.0.0.0/0 * -> * 0 0 in udp 0.0.0.0/0 44.136.8.96/29 * -> * 0 0 out udp 44.136.8.96/29 0.0.0.0/0 * -> * 0 0 in tcp 0.0.0.0/0 0.0.0.0/0 * -> 20 0 0 out tcp 0.0.0.0/0 0.0.0.0/0 20 -> * 10 1166 in tcp 0.0.0.0/0 0.0.0.0/0 * -> 80 10 572 out tcp 0.0.0.0/0 0.0.0.0/0 80 -> * 253 10983 in tcp 0.0.0.0/0 0.0.0.0/0 * -> * 231 18831 out tcp 0.0.0.0/0 0.0.0.0/0 * -> * 0 0 in udp 0.0.0.0/0 0.0.0.0/0 * -> * 0 0 out udp 0.0.0.0/0 0.0.0.0/0 * -> *