一、 概述
在 Linux 服务器运维中,有时我们需要对特定端口(如游戏服务器、内网穿透、代理服务等)进行独立的流量监控。相比于传统的 iptables,nftables 提供了更现代、更高性能的计数器(Counter)机制。
通过在 nftables 中设置特定端口范围的匹配规则,我们可以轻松获取累计流量,并以此为基础计算出瞬时带宽(Mbps)。
二、 规则配置:创建流量统计表
我们将创建一个名为 portstats 的表,分别对 11000-19000 端口范围的 TCP 和 UDP 流量(入站与出站)进行统计。
1. 初始化表与链
Bash
2. 定义命名计数器 (Named Counters)
使用命名计数器可以方便地单独调用和查看数据:
Bash
3. 绑定端口匹配规则
注意:入站流量匹配 Destination Port (dport),出站流量匹配 Source Port (sport)。
Bash
三、 数据查看与分析
执行以下命令即可实时查看所有计数器的当前值:
Bash
输出示例:
packets代表包数量,bytes代表累计总字节数。
Plaintext
四、 流量单位转换与瞬时带宽计算
1. 累计流量转换 (Bytes -> MB)
如果你想知道累计跑了多少流量,可以使用 bc 命令进行换算:
Bash
2. 计算瞬时带宽 (Mbps)
瞬时带宽的逻辑是:在固定时间间隔内,计算流量的差值。
实操步骤:
-
获取当前
bytes值(记为 $T_1$)。 -
等待 10 秒 (
sleep 10)。 -
再次获取
bytes值(记为 $T_2$)。 -
计算:
Bash
五、 清理规则
如果你不再需要监控,只需删除整个表,系统会自动清理关联的所有链、规则和计数器,不会留下冗余配置。
Bash
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END












暂无评论内容