Ubuntu Sniffer与流量整形的正确关系
“Sniffer”通常指用于抓包与分析的工具(如tcpdump、Wireshark、dumpcap),它们本身不提供带宽限速或整形能力。若需要在Ubuntu上进行流量整形,应使用内核的tc(Traffic Control);抓包工具仅用于限速前后的流量观测与验证。常见抓包工具包括:tcpdump(命令行抓包)、Wireshark/dumpcap(图形化/命令行抓包),均可与tc配合验证限速效果。
使用 tc 实现流量整形的标准做法
示例(将接口eth0的上传限速为1 Mbps,下载限速为1 Mbps,可按需替换接口名与速率):
出方向限速(上传)
sudo tc qdisc add dev eth0 root handle 1: htb default 30
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit ceil 1mbit
sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate 512kbit ceil 1mbit
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src 0.0.0.0/0 flowid 1:10
入方向限速(下载)
sudo tc qdisc add dev eth0 ingress
sudo tc filter add dev eth0 parent ffff: protocol ip u32 match ip dst 0.0.0.0/0 police rate 1mbit burst 15k drop flowid :1
查看与验证
sudo tc -s qdisc ls dev eth0
sudo tc -s class ls dev eth0
sudo tc -s filter ls dev eth0
清理规则
sudo tc qdisc del dev eth0 root
sudo tc qdisc del dev eth0 ingress
以上命令展示了HTB分级限速与ingress policing的典型用法,数值可按需调整。
按源或目的进行整形与优先级控制
sudo tc class add dev eth0 parent 1:1 classid 1:20 htb rate 2mbit ceil 2mbit
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src 192.168.1.100 flowid 1:20
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 2 u32 match ip dport 80 0xffff flowid 1:10
用抓包工具验证限速效果
sudo tcpdump -i eth0 -w out.pcap -W 10 tcp port 80
抓包完成后用Wireshark分析pcap文件,对比限速前后的包间隔与吞吐趋势。sudo apt-get install iftop nload
sudo iftop -i eth0
nload eth0
这些工具可直观看到带宽占用是否接近你设置的限速值。常见问题与注意事项