1.
概述与准备工作
- 目的:在
香港服务器上通过网络层与应用层限速,并结合QoS策略优先保证重要业务流量。
- 前提:Linux(CentOS/Ubuntu)有root权限,安装tc(iproute2)、iptables、ifconfig/ethtool、nginx或应用程序可配置限流模块。建议先备份配置文件。
2.
确认网络接口与带宽基线
- 查看接口和链路速率:ip addr; ethtool eth0; 查看公网带宽合同(例如100Mbps)。
- 测试当前流量峰值:使用iftop、nload或vnstat实时监测,记录正常与峰值数值作为限速基准。
3.
使用tc+htb做总体带宽分配(示例)
- 创建根队列并分配:tc qdisc add dev eth0 root handle 1: htb default 20
- 建立父类与子类:tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit
- 为业务分配:tc class add dev eth0 parent 1:1 classid 1:10 htb rate 80mbit ceil 100mbit(web); tc class add dev eth0 parent 1:1 classid 1:20 htb rate 20mbit ceil 100mbit(其他)
4.
结合iptables标记流量并用tc过滤(按IP/端口限速)
- 标记要限速的流量:iptables -t mangle -A PREROUTING -p tcp --dport 80 -j MARK --set-mark 10
- 用tc按mark分流:tc filter add dev eth0 protocol ip parent 1:0 prio 1 handle 10 fw flowid 1:20
- 说明:通过改变iptables匹配条件(-s/-d/--dport)可实现按源IP、目的端口或子网分配带宽。
5.
简单按IP限速:TBF(令牌桶)示例
- 单IP直接限速(不需class复杂):tc qdisc add dev eth0 root tbf rate 2mbit burst 32k latency 50ms
- 针对单连接或指定IP可结合iptables和tc的多qdisc/ifb设备实现入方向限速,若需入方向限速需用ifb重定向。
6.
应用层限流:Nginx 配置示例
- 请求速率限制:在http段声明 zone 与限速:limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s
- 在location使用:limit_req zone=one burst=10 nodelay; 连接数限制:limit_conn_zone $binary_remote_addr zone=addr:10m; limit_conn addr 10
- 说明:配合缓存(proxy_cache)、gzip和connection timeout可有效减轻突发流量。
7.
QoS策略:DSCP/优先级与内核调优
- 使用iptables设置DSCP,优先重要流量:iptables -t mangle -A PREROUTING -p tcp --dport 443 -j DSCP --set-dscp-class AF21
- tc中按DSCP优先分流到高优先级class;调整内核参数提高并发接受:sysctl -w net.core.somaxconn=1024; sysctl -w net.ipv4.tcp_max_syn_backlog=4096
8.
监控、测试与回滚步骤
- 测试:先在低流量时间做试验,使用iperf3做端到端带宽测试,使用ab或wrk做HTTP并发压测。
- 监控:部署iftop、ntop或Grafana+Prometheus采集tc/iptables指标。
- 回滚:记录所有tc/iptables变更命令,出现问题可用tc qdisc del dev eth0 root 和iptables -F -t mangle 回退。
9.
问:如何给单个用户IP设置月流量上限并断流?
答:可以用iptables配合connbytes模块或使用nftables计数后触发标记,再由脚本每日/实时检查使用量写入黑名单。示例:使用iptables -m quota --quota 104857600 -j ACCEPT (100MB示例),超出后走另一路由或DROP;更灵活的做法是用计费系统或流量代理(如vnStat+cron)统计并通过ipset更新黑名单。
10.
问:限速会不会影响正常业务体验,有什么避免方法?
答:会影响,但可通过QoS优先重要端口(HTTPS、API)与对短包(ACK)优先处理,合理设置burst与ceil允许突发,结合应用层限流(平滑突发请求)与缓存减少真实后端压力,从而把用户感知降到最低。
11.
问:香港机房做默认限速值如何设置比较合适?
答:根据带宽合同与业务类型:例如100Mbps链路可把Web设80mbit保证性,管理/备份留20mbit;对每个IP按业务分配常见值为2-5Mbps(普通用户)、20-50Mbps(企业级)。最终以实际监测与SLA调整为准。
来源:香港服务器流量设置方法 对外服务限速与QoS策略保障访问体验的做法