最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Linux怎么用iptables封禁IP地址
时间:2026-07-06 08:00:47 编辑:袖梨 来源:一聚教程网
iptables封IP必须加-s和-j DROP,顺序不能错;漏-s或误用-d会导致规则不匹配,-j DROP不可随意替换为-j REJECT,否则可能被扫描器误判为端口开放。
iptables封IP必须加 -s 和 -j DROP,顺序不能错
直接执行 iptables -A INPUT -s 192.168.1.100 -j DROP 就能生效,但很多人漏掉 -s(源地址)或写成 -d(目标地址),结果规则不匹配;-j DROP 也不能换成 -j REJECT 后不测试——前者静默丢包,后者会发 RST 包,某些扫描器反而会把它当“端口开放”信号继续试探。
常见错误现象:
- 执行命令没报错,但 IP 仍能连 SSH:多半是忘了
-s或写错了链名(比如用了OUTPUT而不是INPUT) - 封完后自己也连不上:规则插太靠前,挡住了本机回环或已建立连接,建议在
ESTABLISHED规则之后再加封禁规则
封单个IP和封网段用法不同,/24 不等于 “最后一位改成0”
封单个 IP:iptables -I INPUT -s 203.0.113.45 -j DROP;封网段必须用 CIDR 表示法,比如封整个 C 段要写 203.0.113.0/24,而不是 203.0.113.* 或 203.0.113.0/255.255.255.0——iptables 只认斜杠格式。
参数差异:
-
/24→ 覆盖 256 个地址(0–255) -
/16→ 覆盖 65536 个地址(如192.168.0.0/16) - 别用
/32封单个 IP,虽然语法合法,但语义冗余,直接写 IP 更清晰
规则删不掉?先看行号,再用 -D + 编号,别硬记完整规则
执行 iptables -L INPUT -n --line-numbers,输出里第一列就是编号。想删第 3 条,直接 iptables -D INPUT 3。如果用 -D 加完整规则(如 iptables -D INPUT -s 203.0.113.45 -j DROP),必须确保参数顺序、空格、大小写和原始添加时完全一致——哪怕多一个空格也会失败。
容易踩的坑:
- 误删其他规则:编号会随增删动态变化,删之前务必重新
--line-numbers查一次 - 删了没生效:规则还在内存里,但没保存,重启就恢复——这不是删失败,是忘了持久化
重启后规则消失?不同系统保存方式完全不同
Debian/Ubuntu 装 iptables-persistent,保存命令是 iptables-save > /etc/iptables/rules.v4;CentOS 7 用 service iptables save;CentOS 8+ 默认没 iptables 服务,得装 iptables-services 或切到 nftables。
性能影响:
- 规则越多,匹配越慢,超过 50 条建议改用
ipset(尤其要封几百个散 IP 时) - 别在
FORWARD链乱加 DROP——你不是路由器,大概率不需要碰这条链
DROP 远不够。
相关文章
- 原神菈乌玛技能是什么 07-06
- 《和平精英》野牛青春冒险家怎么升级-野牛青春冒险家的升级方法 07-06
- 和平精英陀螺仪怎么玩 07-06
- 《燕云十六声》无相皇BOSS通关攻略 07-06
- 《心动小镇》全粉色泡泡位置介绍 07-06
- 空洞骑士丝之歌育母怎么逃课 07-06