You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 22.04及其他发行版下按指定端口/用户统计SSH隧道累计网络流量

Ubuntu 22.04及其他发行版下按指定端口/用户统计SSH隧道累计网络流量

嘿,我懂你的需求——不需要实时盯着流量数据,就想事后算清楚某个专属端口或者用户的SSH隧道累计用了多少流量对吧?下面给你几个实用的方案,在Ubuntu 22.04或者其他主流Linux发行版上都能直接用:

方法一:用iptables自带计数器(无需额外软件)

系统自带的iptables就能帮你记录指定端口/用户的累计流量,步骤简单省心:

针对指定端口(比如7070)

  1. 先添加带流量计数的规则(要同时统计入站和出站流量):
sudo iptables -A INPUT -p tcp --dport 7070 -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 7070 -j ACCEPT
  1. 查看累计流量:
sudo iptables -L INPUT -v -n | grep "dpt:7070"
sudo iptables -L OUTPUT -v -n | grep "spt:7070"

输出里的bytes字段就是累计字节数,你可以自己换算成MB/GB(1GB=102410241024字节)

  1. 注意事项:
  • 重启iptables或服务器后,计数器会清零!如果要长期统计,建议写个简单的定时脚本,每天把当前字节数写入日志文件,最后汇总。比如用cron每天凌晨跑一次:
echo "$(date) - 入站流量: $(sudo iptables -L INPUT -v -n | grep "dpt:7070" | awk '{print $2}') 字节" >> /var/log/port7070_traffic.log
echo "$(date) - 出站流量: $(sudo iptables -L OUTPUT -v -n | grep "spt:7070" | awk '{print $2}') 字节" >> /var/log/port7070_traffic.log

针对指定用户(比如TEST)

  1. 先找到用户TEST的UID:
id -u TEST

假设输出是1001

  1. 添加针对该UID的流量统计规则:
sudo iptables -A INPUT -p tcp -m owner --uid-owner 1001 -j ACCEPT
sudo iptables -A OUTPUT -p tcp -m owner --uid-owner 1001 -j ACCEPT
  1. 查看累计流量:
sudo iptables -L INPUT -v -n | grep "owner UID 1001"
sudo iptables -L OUTPUT -v -n | grep "owner UID 1001"

同样,bytes字段就是累计流量,换算方法同上。

方法二:用tcpdump抓包统计(适合短期统计)

如果只是统计一周的流量,用tcpdump抓包后再分析也很方便:

  1. 启动抓包,指定端口7070并保存到文件:
sudo tcpdump -i any port 7070 -w /tmp/traffic_7070.pcap

按Ctrl+C停止抓包,或者用nohup让它后台运行一周:

nohup sudo tcpdump -i any port 7070 -w /tmp/traffic_7070.pcap &
  1. 统计累计流量:
sudo tcpdump -r /tmp/traffic_7070.pcap -qtnp | awk '{sum += $NF} END {print "累计流量: " sum/1024/1024 " MB"}'

这个命令会直接算出总流量并转换成MB单位。

方法三:用vnstat做长期自动统计

如果需要长期稳定统计,vnstat是个不错的选择,它会自动记录流量并生成直观的报告:

  1. 安装vnstat:
sudo apt install vnstat  # Ubuntu/Debian系列
sudo dnf install vnstat  # RHEL/CentOS系列
  1. 针对端口7070配置自定义监控:
    首先用iptables给端口7070的流量打标记:
sudo iptables -t mangle -A PREROUTING -p tcp --dport 7070 -j MARK --set-mark 1
sudo iptables -t mangle -A OUTPUT -p tcp --sport 7070 -j MARK --set-mark 1

然后修改vnstat配置文件/etc/vnstat.conf,添加以下内容:

Interface "port7070"
Mark 1
  1. 启动并启用vnstat服务:
sudo systemctl start vnstat
sudo systemctl enable vnstat
  1. 查看累计流量报告:
vnstat -u port7070  # 更新统计数据
vnstat -s port7070  # 查看汇总报告

报告里会直接显示累计的入站、出站和总流量,单位可以是MB/GB,非常直观。

备注:内容来源于stack exchange,提问作者Hatef

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 11:59:52