Linux使用iptables实现IP访问限制与解除限制的详细教程

 更新时间:2026年03月04日 09:29:56   作者:墨着染霜华  
在Linux服务器运维中,iptables是一款强大的防火墙工具,常用于IP访问控制、端口管理等场景,本文将聚焦IP访问限制与限制解除两大核心需求,结合实战命令详细拆解操作流程,需要的朋友可以参考下

在Linux服务器运维中,iptables是一款强大的防火墙工具,常用于IP访问控制、端口管理等场景。本文将聚焦“IP访问限制”与“限制解除”两大核心需求,结合实战命令详细拆解操作流程,适合运维新手及需要快速解决问题的开发者参考。

核心场景:当我们需要禁止某个特定IP(如恶意攻击IP、非法访问IP)访问服务器时,可通过iptables添加DROP规则;后续若需恢复该IP访问权限,则需精准删除对应限制规则。本文以192.168.1.101 为例进行演示。

一、前置知识:iptables基础规则说明​

在操作前,先明确几个核心概念,避免误操作:​

链(Chain):iptables默认包含INPUT(入站规则)、OUTPUT(出站规则)、FORWARD(转发规则)等链,IP访问限制主要操作INPUT链(控制外部IP访问服务器)。​

目标动作(Target):

规则优先级:iptables按规则添加顺序匹配,匹配到第一条符合条件的规则后,不再执行后续规则。

二、实战1:添加IP访问限制(禁止特定IP访问)

需求:禁止IP192.168.1.101访问服务器(入站方向)。

2.1 核心命令(添加限制规则)

iptables -A INPUT -s 192.168.1.101 -j DROP

2.2 命令参数详解

  • -A:Append(追加),将规则添加到指定链的末尾;
  • INPUT:指定操作的链为入站链;
  • -s:Source(源IP),指定需要限制的IP地址(此处为192.168.1.101,支持网段,如192.168.1.0/24);
  • -j:Jump(跳转),指定匹配规则后执行的目标动作(此处为DROP,丢弃数据包)。

2.3 验证限制是否生效

添加规则后,可通过以下命令查看INPUT链规则,确认规则已添加:

iptables -nL INPUT --line-numbers

输出结果类似如下(重点看包含192.168.1.101的规则):

Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    DROP       all  --  192.168.1.101        0.0.0.0/0           
2    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED

说明:num列是规则编号(后续删除需用到),source列显示限制的IP,target列显示动作(DROP),表示规则已生效。

三、实战2:解除IP访问限制(恢复特定IP访问)

需求:后续若需恢复IP 192.168.1.101 的访问权限,需删除上述添加的DROP规则。推荐两种方法,优先选择“精准删除”(避免影响其他规则)。

方法1:按规则编号精准删除(推荐)

此方法需先获取限制规则的编号,再删除,适合规则较多的场景。

  1. 步骤1:查看规则编号:执行以下命令,获取192.168.1.101对应规则的num值(参考2.3节,假设编号为1): iptables -nL INPUT --line-numbers
  2. 步骤2:删除指定编号的规则iptables -D INPUT 1参数说明:-D(Delete,删除),INPUT为链名,1为规则编号。

方法2:按规则内容直接删除(无需查编号)

若明确知道添加限制时的完整命令,可直接按规则内容删除,适合规则较少的场景:

iptables -D INPUT -s 192.168.1.101 -j DROP

说明:此命令与添加规则的命令仅将-A(追加)改为-D(删除),即可精准匹配并删除目标规则。

方法3:临时清空INPUT链所有规则(慎用)

若仅用于临时测试,且不在乎清空INPUT链的所有规则(包括其他合法规则),可执行:

iptables -F INPUT

警告:此命令会删除INPUT链下所有规则,可能导致服务器暴露风险,仅临时测试时使用,生产环境严禁随意执行!

验证限制是否解除

删除规则后,再次执行以下命令查看INPUT链:

iptables -nL INPUT

若输出结果中无“192.168.1.101 + DROP”的条目,说明限制已成功解除。

四、关键补充:保存iptables规则(避免重启失效)

注意:上述添加/删除规则的操作仅在当前系统运行时有效,服务器重启后规则会全部丢失!需执行保存命令,将规则持久化到配置文件。

不同Linux发行版的保存命令略有差异,重点介绍两种主流系统:

4.1 CentOS/RHEL 系统

# 方法1:通过service命令保存
service iptables save

# 方法2:直接导出规则到配置文件(推荐)
iptables-save > /etc/sysconfig/iptables

4.2 Debian/Ubuntu 系统

Debian/Ubuntu默认未安装规则持久化工具,需先安装iptables-persistent

# 安装工具
apt update && apt install iptables-persistent -y

# 保存IPv4规则(核心)
iptables-save > /etc/iptables/rules.v4

# 若需保存IPv6规则(可选)
ip6tables-save > /etc/iptables/rules.v6

五、常见问题与注意事项

  1. 问题1:执行iptables命令提示“Permission denied”:原因是未使用root权限,需在命令前加sudo(如sudo iptables -A INPUT ...)或切换到root用户(su - root)。
  2. 问题2:删除规则后仍无法访问:可能是存在其他限制规则(如网段限制),可通过iptables -nL INPUT --line-numbers 全面检查;或存在防火墙叠加(如firewalld、ufw),需关闭其他防火墙或同步规则。
  3. 注意事项1:添加规则时,避免误将自己的IP加入DROP列表,否则会导致无法远程连接服务器(解决方案:若有物理机访问权限,直接在服务器本地操作删除规则;若无物理机权限,需联系机房运维)。
  4. 注意事项2:生产环境中,建议先添加ACCEPT规则(如允许管理员IP访问),再添加DROP规则,避免锁死自己。示例: # 先允许管理员IP(如192.168.1.100)访问 iptables -A INPUT -s 192.168.1.100 -j ACCEPT # 再禁止目标IP访问 iptables -A INPUT -s 192.168.1.101 -j DROP

六、总结

本文通过实战案例讲解了iptables添加IP限制(iptables -A INPUT -s 目标IP -j DROP)与解除限制(按编号/内容删除规则)的完整流程,核心要点如下:

  • 精准删除规则是首选,避免使用清空链命令(iptables -F);
  • 规则添加/删除后,务必保存规则,防止重启失效;
  • 操作前优先查看规则(iptables -nL INPUT --line-numbers),避免误操作。

以上就是Linux使用iptables实现IP访问限制与解除限制的详细教程的详细内容,更多关于Linux iptables实现IP访问与解除限制的资料请关注脚本之家其它相关文章!

相关文章

  • vagrant如何启动虚拟机

    vagrant如何启动虚拟机

    本文介绍了使用Vagrant和VirtualBox快速搭建Linux虚拟机的过程,包括创建Vagrantfile、配置网络、使用SSH连接以及账户配置等步骤
    2024-11-11
  • 新版ubuntu20.04 使用root用户登录系统的详细教程

    新版ubuntu20.04 使用root用户登录系统的详细教程

    这篇文章主要介绍了新版ubuntu20.04 使用root用户登录系统的详细教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • Linux CentOS 定时运行脚本配置的方法

    Linux CentOS 定时运行脚本配置的方法

    今天小编就为大家分享一篇Linux CentOS 定时运行脚本配置的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • linux应用软件编程之多任务(进程)详解

    linux应用软件编程之多任务(进程)详解

    文章介绍了进程与多任务的概念,涵盖进程定义、状态(运行、就绪、等待、僵尸等)、调度算法及资源回收机制,并列举了ps、top、kill等系统命令和fork、exit等编程方法,说明如何创建、管理及终止进程
    2025-08-08
  • Linux 远程管理及sshd服务验证知识点详解

    Linux 远程管理及sshd服务验证知识点详解

    在本篇文章里小编给大家整理了一篇关于Linux 远程管理及sshd服务验证知识点总结,有需要的朋友们跟着学习参考下。
    2021-12-12
  • 在Linux/WSL2环境下安装和配置Claude Code的全过程

    在Linux/WSL2环境下安装和配置Claude Code的全过程

    这篇文章就带你从0开始,在Linux/WSL2环境下完成安装、API配置到成功启动的Claude Code 全流程,我会用API中转服务简化 国内直连,避免翻 墙和海外账户问题,尽量把每个步骤讲清楚,让你少踩坑,需要的朋友可以参考下
    2026-05-05
  • Apache提示 the requested operation has failed无法启动的解决方法大全

    Apache提示 the requested operation has failed无法启动的解决方法大全

    这是我这两天频繁遇到的问题。Apache服务器还真是问题少年!任何点改动都可能导致它无法使用,下面结合网上搜来的内容,总结下自己关于此问题的解决方法,分享给大家
    2014-08-08
  • 详解Centos下YUM安装PHP的两种方式

    详解Centos下YUM安装PHP的两种方式

    本篇文章主要介绍了Centos下YUM安装PHP的两种方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • 关闭Apache的目录浏览功能的方法

    关闭Apache的目录浏览功能的方法

    这篇文章主要介绍了如何关闭Apache的目录浏览功能,需要的朋友可以参考下
    2014-02-02
  • CentOS搭建PHP服务器环境简明教程

    CentOS搭建PHP服务器环境简明教程

    这篇文章主要介绍了CentOS搭建PHP服务器环境的方法,简单讲述了CentOS平台安装Apache、mysql、php环境及相关测试代码,非常简单实用,需要的朋友可以参考下
    2018-03-03

最新评论