CentOS Sniffer(如tcpdump、Wireshark)主要用于网络流量监控和分析,无法直接实现QoS策略,但可通过结合其他工具完成QoS配置。以下是具体方法及工具:
tc filter或nftables标记特定流量(如VoIP、HTTP),例如:# 用tc标记目标端口为5060的VoIP流量
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 5060 0xffff flowid 1:10
nftables标记数据包,再由tc根据标记处理:# 用nftables标记IP为192.168.1.0/24的流量
sudo nft add rule ip filter forward ip saddr 192.168.1.0/24 counter set mark 1
tc创建分层队列,分配带宽并设置优先级(prio值越小优先级越高):# 创建根队列(HTB)
sudo tc qdisc add dev eth0 root handle 1: htb default 20
# 设置总带宽(如100Mbps)
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit
# 高优先级队列(如VoIP,保证20Mbps)
sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate 20mbit ceil 100mbit prio 1
# 普通流量队列(如HTTP,最大80Mbps)
sudo tc class add dev eth0 parent 1:1 classid 1:20 htb rate 80mbit ceil 100mbit prio 2
tc的burst参数控制突发流量大小,避免网络拥塞:sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate 20mbit ceil 50mbit burst 10kb
tc的red(随机早期检测)或fq_codel算法,防止队列溢出:sudo tc qdisc add dev eth0 parent 1:1 handle 10: red limit 1000000 avpkt 1000 burst 2000
tc -s qdisc show dev eth0查看队列状态,确认带宽分配和优先级是否正确。iperf模拟流量,验证QoS策略对关键业务的影响,例如:# 测试高优先级流量(VoIP)是否优先传输
iperf -c server_ip -p 5060 -t 30
root权限执行tc、nftables命令。/etc/rc.local或使用systemd服务,确保重启后生效。参考来源: