当前位置:

首页 > 系统应用 > Linux怎么使用iptables封禁IP地址

Linux怎么使用iptables封禁IP地址

使用iptables封禁IP需注意:添加-s源地址和-jDROP,规则顺序正确;封网段用CIDR斜杠格式;删除规则通过行号;重启后规则消失需持久化保存;规则过多时改用ipset提升性能。

先别急着敲命令,iptables 封 IP 这事儿,看着简单,但细节里全是坑。很多人以为只要一行 iptables -A INPUT -s 192.168.1.100 -j DROP 就完事了,结果要么没生效,要么把自己也封出去。真正让规则跑对、跑稳,至少得把下面这几个关键点掰扯清楚。

Linux怎么使用iptables封禁IP地址

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-sa ve > /etc/iptables/rules.v4;CentOS 7 用 service iptables sa ve;CentOS 8+ 默认没 iptables 服务,得装 iptables-services 或切到 nftables。

性能影响:

  • 规则越多,匹配越慢,超过 50 条建议改用 ipset(尤其要封几百个散 IP 时)
  • 别在 FORWARD 链乱加 DROP——你不是路由器,大概率不需要碰这条链

实际操作中,最常被忽略的是规则加载顺序和持久化机制。封 IP 看似一行命令,但生效依赖链位置、保存动作、以及是否与其他规则冲突——光加一条 DROP 远不够。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
作者最新文章
系统应用 Linux
相关文章 更多
linux删除用户与用户组的方法及命令教程
linux删除用户与用户组的方法及命令教程

掌握Linux中删除用户和用户组的正确方法,避免残留文件和进程冲突。本文深入解析userdel和groupdel命令的参数用法,提供处理“用户仍在使用”等常见错误的实战方案。

Linux如何开启端口号?开放端口命令详解
Linux如何开启端口号?开放端口命令详解

详细讲解Linux如何开启端口号以及常用的开放端口命令。

crossover卸载软件下载及重新安装教程
crossover卸载软件下载及重新安装教程

遇到CrossOver运行错误或需要更新版本时,如何彻底卸载旧版并干净重装?本教程详解macOS和Linux下的卸载步骤、残留文件清理方法及官方下载渠道,确保软件环境纯净稳定。

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

PDF教程
PDF教程

正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

Mac软件 更多
IntelliJ IDEA macOS版
IntelliJ IDEA macOS版
Mac

IntelliJ IDEA 是 JetBrains 推出的专业集成开发环境,重点服务于 Java、Kotlin 与 JVM 项目开发。软件集成代码补全、静态检查、重构、调试、测试、版本控制及构建工具,并可借助插件扩展语言和框架支持。

PyCharm macOS版
PyCharm macOS版
Mac

JetBrains PyCharm 是面向 Python 开发者的集成开发环境,提供智能补全、代码检查、重构、调试、测试、版本控制及虚拟环境管理功能。Mac 版兼容 Intel 与 Apple 芯片,核心功能可免费使用。

WebStorm macOS版
WebStorm macOS版
Mac

JetBrains WebStorm 是面向 JavaScript、TypeScript 和现代 Web 技术的专业集成开发环境,可智能理解项目结构,提供代码补全、重构、错误检查、运行调试、测试及 Git 工具。

WINDOWS 更多
IntelliJ IDEA Windows版
IntelliJ IDEA Windows版
Windows

JetBrains IntelliJ IDEA 是以 Java、Kotlin 和 JVM 项目为核心的专业集成开发环境,提供智能补全、代码检查、安全重构、调试、测试、版本控制及构建工具集成。统一发行版的核心功能可免费用于商业和非商业项目,

PhpStorm Windows版
PhpStorm Windows版
Windows

PhpStorm 是 JetBrains 面向 PHP 与现代 Web 开发打造的专业集成开发环境,提供代码补全、静态检查、重构、调试、测试、数据库、版本控制及前端语言支持。Windows 用户可直接下载安装程序,

PyCharm Windows版
PyCharm Windows版
Windows

PyCharm 是 JetBrains 推出的 Python 集成开发环境,提供智能代码补全、错误检查、重构、调试、测试、Git、终端及 Jupyter Notebook 支持。统一版安装后可体验 30 天 Pro 功能,