Debian Sniffer与流量控制的关联与实现方法
Debian Sniffer(如tcpdump、tshark)本身是网络流量分析工具,用于捕获、解析和可视化网络数据包,帮助识别流量模式、异常或高占用进程。但流量控制(如限制带宽、整形流量)需结合其他Linux内核工具实现,以下是具体方法:
在进行流量控制前,需通过Sniffer定位高带宽消耗的流量(如特定协议、IP、进程),为后续控制策略提供依据:
tshark -i eth0 -Y "port 80" -T fields -e frame.len -e ip.src -e ip.dst
sudo apt-get install iftop && sudo iftop -i eth0
sudo apt-get install nethogs && sudo nethogs eth0
流量控制需通过Linux内核的**tc(Traffic Control)**工具实现,以下是基础流程:
tc属于iproute2包(Debian默认安装),无需额外安装。首先确认网络接口名称(如eth0、ens33):
ip link show
HTB是常用的队列规则,支持带宽分层分配(如保证最小带宽、限制最大带宽)。以eth0接口为例:
sudo tc qdisc add dev eth0 root handle 1: htb default 30
handle 1::队列句柄(唯一标识);default 30:未匹配流量的默认类别(编号30)。创建子类并设置保证带宽(rate)与最大带宽(ceil)(单位:Kbps/Mbps)。例如,限制总带宽为10Mbps,其中类别1:10保证1Mbps,类别1:20保证2Mbps:
sudo tc class add dev eth0 parent 1: classid 1:10 htb rate 1mbit ceil 2mbit
sudo tc class add dev eth0 parent 1: classid 1:20 htb rate 2mbit ceil 3mbit
通过过滤器将特定流量导向对应类别。例如:
sudo tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip dst 192.168.1.100 flowid 1:10
sudo tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip dport 21 0xffff flowid 1:20
sudo tc -s qdisc ls dev eth0 # 查看队列规则
sudo tc -s class ls dev eth0 # 查看类别统计
/etc/rc.local(需赋予执行权限),确保重启后生效。若需快速限制接口的下载/上传带宽,可使用wondershaper(基于tc的脚本):
sudo apt-get install wondershaper
sudo wondershaper eth0 1000 500
sudo wondershaper clear eth0
通过iptables/ufw限制特定流量(如某IP段、端口),间接实现带宽回收:
sudo ufw limit 22/tcp
sudo iptables -A OUTPUT -d 192.168.1.100 -m limit --limit 1mb/s -j ACCEPT
sudo iptables -A OUTPUT -d 192.168.1.100 -j DROP
/etc/network/interfaces或netplan文件)。