温馨提示×

centosiptables如何限速

小樊
44
2026-08-29 10:10:32
栏目: 智能运维

CentOS 下使用 iptables 进行限速,本质是借助 iptables + 内核的流量控制(tc / 哈希限制) 来实现。
下面按常见需求给你几种可用的做法,从简单到专业


一、最简单:限制每个 IP 并发连接数(防刷)

适合:防止单个 IP 疯狂请求

限制单个 IP 最多 20 个并发连接

iptables -A INPUT -p tcp --dport 80 -m connlimit \
--connlimit-above 20 -j REJECT

✅ 不能限制“速率”,只能限制“连接数”


二、使用 hashlimit 限速(推荐 ✅)

适合:限制每秒/每分钟包数或流量

1️⃣ 限制每个 IP 每秒最多 10 个包

iptables -A INPUT -p tcp --dport 80 \
-m hashlimit \
--hashlimit 10/sec \
--hashlimit-mode srcip \
--hashlimit-name http_limit \
-j ACCEPT

2️⃣ 限制每个 IP 访问 80 端口(10 个包/秒,突发 20)

iptables -A INPUT -p tcp --dport 80 \
-m hashlimit \
--hashlimit 10/sec \
--hashlimit-burst 20 \
--hashlimit-mode srcip \
--hashlimit-name http_limit \
-j ACCEPT

3️⃣ 限制每个 IP 每秒 1MB(≈8Mbps)

iptables -A INPUT -p tcp --dport 80 \
-m hashlimit \
--hashlimit 1mb/sec \
--hashlimit-mode srcip \
--hashlimit-name speed_limit \
-j ACCEPT

常用单位

单位 含义
pkt/sec 包/秒
pkt/min 包/分钟
kb/sec KB/秒
mb/sec MB/秒

三、限制整台服务器总带宽(tc 方案)

适合:限制出口总带宽

限制出口 10Mbps

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

查看:

tc qdisc show dev eth0

删除:

tc qdisc del dev eth0 root

四、限制上行(上传)或下行(下载)

⚠️ iptables 本身不能直接限速下载

推荐方案:

场景 方案
限制下载 tc
限制上传 iptables + hashlimit
限制单 IP hashlimit
限制总带宽 tc

五、完整示例:限制单 IP 访问 HTTP 限速

iptables -A INPUT -p tcp --dport 80 \
-m hashlimit \
--hashlimit 20/sec \
--hashlimit-burst 50 \
--hashlimit-mode srcip \
--hashlimit-name http \
-j ACCEPT

iptables -A INPUT -p tcp --dport 80 -j DROP

六、注意事项(非常重要 ⚠️)

  1. CentOS 7 默认用 firewalld

    systemctl stop firewalld
    systemctl disable firewalld
    yum install iptables-services -y
    systemctl enable iptables
    
  2. 规则重启会丢失

    service iptables save
    
  3. 不建议限制 ICMP(ping),否则影响网络诊断


七、我可以进一步帮你

你可以直接告诉我:

  • 限制上传还是下载?
  • 限制单 IP 还是总带宽?
  • CentOS 6 / 7 / 8?
  • 针对哪个端口?(80 / 443 / SSH)

我可以给你一份可直接复制执行的完整脚本 ✅

0