使用iptables统计流量
背景:
使用iftop命令统计带宽可能会出现顺时打高网卡的情况。因此使用iptables来进行带宽数据。
实现思路
- 新建一个链
- 在新链中添加一个ACCEPT的rule
- 引用新添加的链
举个例子:新建一个链统计本机间的带宽数据
#新建一个名为LOCAL_CHAN的链
iptables -N LOCAL_CHAN
#添加一个规则,捕获来自127.0.0.1的端口
iptables -A LOCAL_CHAN -p tcp -j ACCEPT -s 127.0.0.1
#在默认的链中引起新创建的LOCAL_CHAN
iptables -I INPUT -p tcp -j LOCAL_CHAN
##这一行命令表示,"-j LOCAL_CHAN"表示:所有的tcp报文将由自定义链"LOCAL_CHAN"中的规则进行处理
数据获取
使用命令iptables -nvxL LOCAL_CHAN
即可获取对应链的带宽详情
ps:
- 当传输量较大时, iptables 预设会以 K、M、G 等单位来显示传输量, 与一般的计算不同, 这些单位分别代表 1000、1,000,000 与 1,000,000,000 bytes。就阅读上, 使用这些单位能让我们更容易地判断数量大小, 但是未来如果以程序统计传输总量, 使用较精确的数字才能方便地进行数字的比较。此时可以如下使用 “-x” 参数, 强迫 iptables 显示精确的传输量
- -v 输出详细信息,包含通过该规则的数据包数量,总字节数及相应的网络接口
- -L 查看当前表的所有规则
- -n 不对ip地址进行反查,加上这个参数显示速度会快很多
byte记录从这个rule生效到现在的总字节
1 references表示这个chan被引用了一次
总结:引入链时尽量最小单位进行引用,需要结合环境和背景进行使用。
因为我的INPUT链 默认规则是ACCEPT,因此这样定义还可以正常使用。
参考文档:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)