Jav*_*ani 8 ssh ssh-tunneling bandwidth traffic-shaping
我有一个 Ubuntu 服务器,大约有 20 个用户,主要将其用于 SSH 隧道。
我想知道是否有任何方法可以确定每个用户在特定时间段(例如过去一周或一个月)传输的数据量。
一个好问题,我找到了一个视图答案:
\n\n\nRun Code Online (Sandbox Code Playgroud)\niftop -i "$iface" -nPf "tcp and port $sport and port $dport"\n
ssh 连接的数据包将在哪个
\n$iface
接口上发送/接收,以及$sport/$dport
源和目标 TCP 端口。您还可以通过指定源 IP 地址和目标 IP 地址来进一步细化过滤器。
\n\n您应该运行
\ntcpdump -ni eth0 -w dump port 22
以捕获所有数据包,然后tcpdump -nX -r dump
查看它们。
\n\n我会使用 iptables 所有者模块(可能与其他\n配额/报告模块一起使用)。
\nRun Code Online (Sandbox Code Playgroud)\niptables -A OUTPUT -p tcp --dport 22 -m owner --uid someuser -j ACCEPT\n
然后查看输出
\niptables -vL
以查看通过此规则的数据包/字节数,或使用某些分析器解析 iptables 统计信息。
要跟踪特定时间段内的数据,您可能需要定期重置统计信息并定期(例如每周或每月)收集数据。
\n将输出重定向iptables -vL
到文件以进行分析。
iptables -vL > ssh_traffic.txt\n
Run Code Online (Sandbox Code Playgroud)\n重置统计数据:
\niptables -Z
重置跟踪 SSH 流量的规则的统计信息iptables
。
您还可以编写bash script
并使用cron
或运行它anacron
,以按所需的时间间隔自动执行脚本以收集和分析流量。
还有另一种选择iptables
将,conntrack
和一起使用connmark
,但您必须自己看看。