1.
准备与评估
步骤:1) 用 iftop/ nethogs /vnstat/ss 确认流量峰值与常用端口;2) 列出需要优先的业务(如VoIP/SIP端口5060、SSH、业务API端口);3) 决定优先级分配(示例:高优先保留4Mbps,中优先5Mbps,低优先1Mbps)。
2.
在内核上开启转发与必要模块
步骤:1) 编辑 /etc/sysctl.conf net.ipv4.ip_forward=1 并 sysctl -p;2) 确保已加载tc、sch_htb、sch_fq_codel、act_mirred、cls_u32、ipt_mangle 等模块(modprobe 加载)。
3.
用iptables/ mangle打标(DSCP或fwmark)
步骤:1) 为实时语音打标:iptables -t mangle -A PREROUTING -p udp --dport 5060 -j DSCP --set-dscp-class EF;2) 为关键业务打标(例如TCP 5000端口):iptables -t mangle -A PREROUTING -p tcp --dport 5000 -j MARK --set-mark 10;3) 保存规则(iptables-save)。
4.
用tc建立HTB队列和类(上行出口限速很重要)
步骤示例(假设出口网卡为 eth0,总带宽10mbit):1) tc qdisc add dev eth0 root handle 1: htb default 30;2) tc class add dev eth0 parent 1: classid 1:1 htb rate 10mbit ceil 10mbit;3) tc class add dev eth0 parent 1:1 classid 1:10 htb rate 4mbit ceil 10mbit(高);4) tc class add dev eth0 parent 1:1 classid 1:20 htb rate 5mbit ceil 10mbit(中);5) tc class add dev eth0 parent 1:1 classid 1:30 htb rate 1mbit ceil 10mbit(低)。
5.
把打标的包绑定到类(filter)并加智能队列
步骤:1) 用fwmark做连接:tc filter add dev eth0 parent 1:0 protocol ip prio 1 handle 10 fw flowid 1:10;2) 对未打标流量默认进入1:30;3) 在每个类下用 fq_codel 降延迟:tc qdisc add dev eth0 parent 1:10 handle 110: fq_codel 等(或在根使用 cake:tc qdisc add dev eth0 root cake bandwidth 10mbit)。
6.
对下行也做控制(必要时在交换机或路由器侧)
步骤:1) 下行控制要在ISP侧或路由器做,可在边界路由器用相同HTB+DSCP策略;2) 如使用MikroTik,在Queue Tree里按DSCP创建队列并设置优先级;3) 若无法控制下行,使用应用层优化(压缩、缓存、CDN)。
7.
实施限速与防滥用(细化到IP/端口)
步骤示例:1) 对P2P或大流量IP用tc tbf限速:tc qdisc add dev eth0 parent 1:30 tbf rate 512kbit burst 32k latency 50ms;2) 用conntrack/iptables限制新连接速率;3) 对非工作时间放宽或完全封禁非必要端口。
8.
测试、监控与调整
步骤:1) 用 iperf3 本地或跨站测试各类带宽分配;2) 实时观察 iftop、nload、netdata 或 Prometheus+Grafana 指标;3) 根据延迟与丢包调整 HTB rate/ceil 与 fq_codel 参数;4) 记录并逐周优化配额。
9.
常见问题问答一
问:在10Mbps下如何保证VoIP不被占满导致断音? 答:优先把VoIP标为EF/高优先并在HTB中为其保留至少2–3Mbps,同时在根队列启用fq_codel或cake,限制P2P/下载流量,测试并保留突发带宽以应对峰值。
10.
常见问题问答二
问:服务器上如何快速验证规则生效? 答:用 iperf3 指定端口和标记模拟业务;用 tc -s class show dev eth0 查看各类使用情况;用 tcpdump/wireshark 检查DSCP值或fwmark是否正确标记。
11.
常见问题问答三
问:如果ISP不透传DSCP或有NAT,怎么办? 答:在边界路由器或服务器上用fwmark(iptables MARK)再由tc过滤匹配fwmark;如ISP丢弃DSCP,可通过在路由器端直接按端口/源IP分类并应用HTB规则。
来源:业务分级策略在菲律宾服务器带宽10兆 情况下如何实现资源优先级