Ubuntu防火墙监控流量的常用方法
Ubuntu系统中,防火墙通常由ufw(Uncomplicated Firewall,基于iptables的前端工具)或直接使用iptables/nftables管理。以下是针对不同场景的流量监控方案,覆盖从基础状态查看至实时流量分析的需求:
UFW提供了简洁的命令查看防火墙运行状态及规则,间接反映流量过滤情况:
sudo ufw status,可显示防火墙是否启用、默认策略(如deny incoming/allow outgoing)及已配置的规则摘要。verbose参数(sudo ufw status verbose),会输出每条规则的详细信息(如协议、端口、动作)及流量计数(部分版本支持),帮助了解规则匹配的流量量级。无论是UFW还是直接配置的iptables,其规则均可通过-v参数显示**数据包(pkts)和字节(bytes)**计数,用于监控特定流量的累计量:
sudo iptables -L -v -n,输出中“Pkts”列表示匹配该规则的数据包数量,“Bytes”列表示累计字节数。例如,ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22对应的“Pkts”值即为通过22端口(SSH)的累计数据包数。sudo iptables -L INPUT -v -n,聚焦入站流量的统计信息。sudo iptables -Z清零所有规则的计数器,之后新增的计数即为该时间段内的流量。若需实时查看网络接口的带宽使用情况及连接流量,可使用以下工具:
sudo apt install iftopsudo iftop -i eth0(eth0为网络接口,可通过ip a查看),界面中会实时更新连接的带宽使用情况,按P可切换端口显示,按h查看帮助。sudo apt install nloadnload,默认显示主网络接口的流量曲线,按左右箭头切换接口。若需深入分析流量内容(如协议、源/目的IP、端口),可使用tcpdump捕获并保存数据包:
sudo tcpdump -i eth0 -w /var/log/tcpdump.log(-i指定接口,-w保存到文件),之后可通过tcpdump -r /var/log/tcpdump.log读取分析。sudo tcpdump -i eth0 port 80)、来自某IP的流量(sudo tcpdump -i eth0 src 192.168.1.100)。若需记录网络接口的历史流量(如每日/每月的流量趋势),可使用vnstat:
sudo apt install vnstat,sudo systemctl start vnstat,sudo systemctl enable vnstat(开机自启)。vnstat -i eth0显示指定接口的累计流量(日/月/总),vnstat -i eth0 -l查看实时流量趋势,vnstat -i eth0 --daily查看每日流量报告。通过日志可审计流量事件(如被拒绝的连接、异常流量),帮助排查安全问题:
sudo ufw logging on(默认日志级别为low,可设置为medium/high),日志默认记录到/var/log/ufw.log。sudo tail -f /var/log/ufw.log | grep "ALLOW\|DENY",实时查看被允许或拒绝的连接。sudo iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH Traffic: "),日志会记录到/var/log/syslog或/var/log/kern.log,可通过sudo grep "SSH Traffic" /var/log/syslog过滤查看。以上方法可根据需求选择使用:若需快速查看防火墙规则及累计流量,用UFW状态命令或iptables计数器;若需实时监控带宽使用,用iftop/nload;若需分析流量内容,用tcpdump;若需长期记录流量趋势,用vnstat;若需审计流量事件,用日志分析。