在 Ubuntu 下使用 iptables 进行限速,通常要结合 Linux Traffic Control(tc) 或直接使用 iptables 的 hashlimit / limit 模块。下面按常见场景说明。
iptables -A INPUT -i eth0 -m hashlimit \
--hashlimit-name lim_in \
--hashlimit-mode srcip \
--hashlimit-above 1mb/s \
-j DROP
说明:
eth0:网卡名srcip:按源 IP 限速1mb/s:每秒 1 兆字节(也可用 1000/s 表示包数)iptables -A OUTPUT -o eth0 -m hashlimit \
--hashlimit-name lim_out \
--hashlimit-mode dstip \
--hashlimit-above 512kb/s \
-j DROP
iptables -A INPUT -p tcp --dport 80 -m hashlimit \
--hashlimit-name http_limit \
--hashlimit-mode srcip \
--hashlimit-above 100/s \
-j DROP
⚠️ limit 是全局限速,不是按 IP
iptables -A INPUT -p tcp --dport 22 -m limit --limit 3/s --limit-burst 5 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
含义:
适合整体带宽控制
tc qdisc add dev eth0 root tbf rate 10mbit burst 32kbit latency 400ms
iptables -A POSTROUTING -t mangle -j MARK --set-mark 1
(tc 可基于 mark 分类,配置较复杂,适合高级用户)
# 查看规则
iptables -L -n -v
# 删除规则(示例)
iptables -D INPUT -i eth0 -m hashlimit --hashlimit-name lim_in -j DROP
# 清除所有 iptables 规则
iptables -F
| 需求 | 推荐方式 |
|---|---|
| 单 IP 限速 | iptables + hashlimit |
| 防暴力破解 | iptables + limit |
| 整体带宽控制 | tc |
| 长期稳定 | nftables 或 tc + htb |
如果你能告诉我:
我可以给你直接用的一行命令。