【iptables】规则查询

本文介绍了iptables的基本语法格式,包括表名、链名、命令选项、条件匹配和目标动作。重点讲解了如何查看指定表和链的规则,以及默认策略的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 iptables的基本语法格式

iptables [-t 表名] 命令选项 [链名] [条件匹配] [-j 目标动作或跳转]

说明:

        表名、链名用于指定 iptables命令所操作的表和链;

        命令选项用于指定管理iptables规则的方式(比如:插入、增加、删除、查看等;

        条件匹配用于指定对符合什么样条件的数据包进行处理;

        目标动作或跳转用于指定数据包的处理方式(比如允许通过、拒绝、丢弃、跳转给其它链处理)。

注意:

        在虚拟机上使用iptables查看表的规则时,需要进入先su模式

iptables命令的管理控制选项

2 查看指定表中的规则

查看对应表的所有规则

        iptables -t 表名 -L

        上图中绿色标记的部分为规则,蓝色标记的部分为链,INPUT链、FORWARD链、OUTPUT链,每条链都有自己的规则,所以可以看出这三条链都有“过滤”能力(因为filter表有过滤功能)。当我们要定义某条“过滤”规则时,我们会在filter表中定义,但是具体在哪条链上定义规则呢?

        这取决于我们的工作场景。当需要禁止某个IP地址访问我们主机时,则需要在INPUT链上定义规则,因为报文发往本机时,会经过PREROUTING链与INPUT链,所以如果我们想禁止某些报文发往主机,只能在PREROUTING链与INPUT链中定义规则,但是PREROUTING链并不存在与filter表中,换句话说,PREROUTING关卡天生就没有过滤能力,所以只能在INPUT链中定义。

        iptables -t nat -nvL --line-numbers

         -t :表示想要查看那个表,这里查看的是nat表。(iptables的所有命令如果不指定-t,默认是filter表

        -L:表示列出该表所有的链和规则

        -v:详细显示,会将规则匹配的进出网口也列出来

        --line-numbers :表示给规则进行编号处理,编号能方便我们后续对规则进行修改、删除等操作

如图,表头有如下信息

  • num 表示当前规则编号,从1开始
  • ptks 表示对应规则匹配到的报文的个数
  • bytes 表示对应匹配到的报文包的大小总和
  • target 表示规则对应的target,往往表示规则对应的动作,即规则匹配成功后需要采取的措施
  • prot 表示规则对应的协议,是否只针对某些协议应用此规则(TCP、UDP等)
  • opt 表示规则对应的选项
  • in 表示该规则会匹配那些的输入网口,如果包是由该网口输入,则会被匹配
  • out 表示该规则会匹配的目标网口,如果包的目标网口是该网口,则会被匹配
  • source 表示该规则匹配的具体源ip范围
  • destination 表示该规则匹配的具体目标ip范围

3 查看指定表中指定链的规则

查看指定表中指定链的规则

        iptables -t 表名 -L 链名

        图中显示filter表中INPUT链中的规则(省略-t默认为filter表),可以使用-v选项查看出更多更详细的信息

        再看上图绿色标注部分,发现表中的每个链后面都有一个括号,里面有一些信息:

  • policy表示当前链的默认策略,policy ACCEPT表示上图中INPUT链的默认动作是ACCEPT,换句话说就是,默认接受通过INPUT关卡的所有请求,所以我们在配置INPUT链的具体规则时,应该将需要拒绝的请求配置到规则中。当我们把INPUT链默认动作设置为接受(ACCEPT),就表示所有人都能通过这个关卡,此时就应该在具体的规则中指定需要拒绝的请求,就表示只有指定的人不能通过这个关卡,这就是黑名单机制
  • packets表示当前链默认策略匹配到的包的数量,0 packets表示默认策略匹配到0个包
  • bytes表示当前链默认策略匹配到的所有包的大小总和
<think>嗯,用户想了解如何还原iptables规则。首先,我需要确定还原iptables规则的不同方法。通常,用户可能之前保存过规则,所以应该先提到使用iptables-save和iptables-restore这两个工具。 然后,用户可能会遇到没有保存规则的情况,这时候可能需要从配置文件或者系统日志中恢复。比如,在Debian/Ubuntu系统中,/etc/iptables/rules.v4和v6可能保存了IPv4和IPv6的规则,可以通过iptables-restore来加载。 另外,有些用户可能使用过iptables-persistent这样的工具,这时候重启后规则会自动恢复。需要提醒用户检查是否有安装这类工具,并确认配置文件是否存在。 如果用户没有主动保存过规则,可能需要考虑从其他途径恢复,比如系统备份或者日志文件。不过这种情况比较复杂,可能需要手动重新配置。这时候可以建议用户养成定期备份iptables规则的习惯,避免丢失。 还要注意不同Linux发行版的配置文件路径可能不同,比如CentOS和Ubuntu的存储位置不一样,需要分开说明。另外,使用systemd的系统可能有不同的服务管理方式,需要确认服务是否启用。 最后,应该给出一个具体的例子,比如如何保存当前规则,如何从文件恢复,以及如何设置自动加载。这样用户能更直观地理解操作步骤。同时,提醒用户操作前做好备份,防止出错。</think>还原 iptables 规则主要有以下几种方法,具体操作步骤如下: 1. **通过保存的规则文件恢复** ```bash # 若之前保存过规则(默认路径 /etc/iptables/rules.v4 和 rules.v6) sudo iptables-restore < /etc/iptables/rules.v4 sudo ip6tables-restore < /etc/iptables/rules.v6 # 若保存到自定义文件 sudo iptables-restore < /path/to/your_iptables_backup.txt ``` 2. **通过 iptables-persistent 工具** ```bash # 安装工具(Debian/Ubuntu) sudo apt install iptables-persistent # 恢复已保存的规则(自动加载 /etc/iptables 中的规则) sudo systemctl restart netfilter-persistent ``` 3. **手动备份还原** ```bash # 备份当前规则 sudo iptables-save > iptables_backup.txt # 还原规则时 sudo iptables-restore < iptables_backup.txt ``` 4. **系统服务自动加载(CentOS/RHEL)** ```bash # 保存规则到系统配置文件 sudo service iptables save # 保存到 /etc/sysconfig/iptables sudo systemctl enable iptables sudo systemctl start iptables ``` **注意事项**: - 不同 Linux 发行版的配置路径可能不同 - 操作前建议先备份现有规则:`sudo iptables-save > current_rules_backup.txt` - 若未保存过规则,可通过 `dmesg | grep iptables` 尝试查找历史记录 - 重启后自动加载需要确保 iptables 服务已启用 **典型应用场景**: 1. 系统重启后恢复防火墙规则 2. 批量迁移规则到新服务器 3. 快速回滚错误配置 建议定期执行 `sudo iptables-save > /etc/iptables/rules.v4` 来更新持久化规则
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值