温馨提示×

ubuntu iptables如何限速

小樊
51
2026-09-25 05:24:42
栏目: 智能运维

在 Ubuntu 下使用 iptables 进行限速,通常要结合 Linux Traffic Control(tc) 或直接使用 iptables 的 hashlimit / limit 模块。下面按常见场景说明。


一、使用 iptables + hashlimit(推荐,按 IP 限速)

1️⃣ 限制单个 IP 的入站速率(如下行 1MB/s)

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 表示包数)
  • 超过速率的包被 DROP

2️⃣ 限制单个 IP 的出站速率(如上行 512KB/s)

iptables -A OUTPUT -o eth0 -m hashlimit \
  --hashlimit-name lim_out \
  --hashlimit-mode dstip \
  --hashlimit-above 512kb/s \
  -j DROP

3️⃣ 限制某个端口(如 80)的访问速率

iptables -A INPUT -p tcp --dport 80 -m hashlimit \
  --hashlimit-name http_limit \
  --hashlimit-mode srcip \
  --hashlimit-above 100/s \
  -j DROP

二、使用 iptables limit(简单但不够精准)

⚠️ 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

含义:

  • 每秒最多 3 个新连接
  • 突发最多 5 个

三、更专业方式:iptables + tc(队列限速)

适合整体带宽控制

1️⃣ 创建 tc 限速(下行 10M)

tc qdisc add dev eth0 root tbf rate 10mbit burst 32kbit latency 400ms

2️⃣ 配合 iptables 标记

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

如果你能告诉我:

  • 是 上行 / 下行
  • 限速对象(IP / 端口 / 网卡)
  • 目标速率

我可以给你直接用的一行命令。

0 踩