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 iftop
sudo iftop -i eth0
(eth0
为网络接口,可通过ip a
查看),界面中会实时更新连接的带宽使用情况,按P
可切换端口显示,按h
查看帮助。sudo apt install nload
nload
,默认显示主网络接口的流量曲线,按左右箭头切换接口。若需深入分析流量内容(如协议、源/目的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;若需审计流量事件,用日志分析。