在 Debian 系统中,使用 iptables 进行限速(流量控制)通常通过 hashlimit 或 limit 模块实现。下面按常见场景给你说明,并附上可直接用的示例。
hashlimit 限速(推荐,功能更强)hashlimit 可以按 IP、端口、协议 等维度限速,适合防止单 IP 突发流量。
iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW \
-m hashlimit \
--hashlimit-name http \
--hashlimit 10/sec \
--hashlimit-burst 20 \
--hashlimit-mode srcip \
-j ACCEPT
含义:
iptables -A INPUT -p tcp -m hashlimit \
--hashlimit-name limit1 \
--hashlimit 100/sec \
--hashlimit-burst 200 \
--hashlimit-mode srcip \
-j ACCEPT
⚠️ 注意:
limit 模块(简单但不够精细)iptables -A INPUT -p icmp --icmp-type echo-request \
-m limit \
--limit 1/sec \
--limit-burst 5 \
-j ACCEPT
超出限制的包会被后面的规则丢弃。
⚠️ iptables 本身不适合做带宽限速
✅ 正确方式是:iptables + tc(Traffic Control)
tc 限制接口带宽(推荐方案)tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms
说明:
eth0:网卡名1mbit:限制为 1Mbpsiptables -t mangle -A POSTROUTING -s 192.168.1.100 -j MARK --set-mark 10
tc qdisc add dev eth0 root handle 1: htb
tc class add dev eth0 parent 1: classid 1:10 htb rate 512kbit
tc filter add dev eth0 protocol ip parent 1: handle 10 fw flowid 1:10
iptables -L -n -v
iptables -D INPUT -p tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT
✅ iptables ≠ 带宽限速器
✅ 防攻击、防突发 → hashlimit
✅ 限制带宽 → tc
✅ 生产环境建议:
如果你愿意,可以告诉我:
我可以给你一套 完全可落地的配置方案。