在 Debian 下使用 iptables 进行“限流量”(带宽/速率限制),通常不是直接靠 iptables 本身完成的,而是配合 tc(traffic control) 或 iptables 的 limit / hashlimit / quota 模块来实现。下面按常见需求分类说明。
iptables -A INPUT -p icmp --icmp-type echo-request \
-m limit --limit 1/s --limit-burst 5 \
-j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
说明:
--limit 1/s:每秒最多 1 个包--limit-burst 5:突发最多 5 个iptables -A INPUT -p tcp --dport 80 -m state --state NEW \
-m hashlimit \
--hashlimit-name http \
--hashlimit-mode srcip \
--hashlimit-above 10/min \
--hashlimit-burst 5 \
-j DROP
说明:
iptables -A OUTPUT -p tcp --dport 80 \
-m quota --quota 104857600 \
-j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -j DROP
说明:
iptables 本身不能限制带宽,必须配合 tc
tc qdisc add dev eth0 root tbf \
rate 1mbit \
burst 32kbit \
latency 400ms
# 打标记
iptables -A FORWARD -s 192.168.1.100 -j MARK --set-mark 10
# tc 限速
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: prio 1 handle 10 fw flowid 1:10
| 需求 | 推荐 |
|---|---|
| 防攻击 | iptables + hashlimit |
| 限速 | tc (HTB / TBF) |
| 简单用 | wonder shutdown / trickle |
| 高级 | nftables |
lsmod | grep xt_hashlimit
apt install iptables-persistent
netfilter-persistent save
如果你能说清楚:
我可以给你一套可直接用的完整配置。