iptables实战: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链下所有规则,可能导致服务器暴露风险,仅临时测试时使用,生产环境严禁随意执行!

3.1 验证限制是否解除

删除规则后,再次执行以下命令查看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),避免误操作。

如果需要更复杂的场景(如限制IP访问特定端口、批量添加/删除IP规则),可在评论区留言,后续将补充相关教程~

相关推荐
小明的叽喳2 小时前
linux 基础(二)
linux·运维·服务器
warton882 小时前
ubuntu24搭建mysql8.0.36 mgr
linux·运维·mysql
tokepson9 小时前
Mysql下载部署方法备份(Windows/Linux)
linux·服务器·windows·mysql
zz_nj11 小时前
工作的环境
linux·运维·服务器
极客先躯12 小时前
如何自动提取Git指定时间段的修改文件?Win/Linux双平台解决方案
linux·git·elasticsearch
suijishengchengde12 小时前
****LINUX时间同步配置*****
linux·运维
qiuqyue13 小时前
基于虹软Linux Pro SDK的多路RTSP流并发接入、解码与帧级处理实践
linux·运维·网络
切糕师学AI13 小时前
Linux 操作系统简介
linux
南烟斋..13 小时前
GDB调试核心指南
linux·服务器