Linux iptables 查看、设置、配置保存、备份和恢复

本文详细介绍了iptables的基本概念,包括其四个主要表:filter、nat、mangle和raw,重点讲解了filter表及其三个内置链:INPUT、OUTPUT和FORWARD的功能与应用场景。此外还提供了iptables命令的具体操作指南,包括规则查看、添加、删除、备份及恢复等。

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

what is iptables?

Iptables is used to set up, maintain, and inspect the tables of IPv4 packet filter rules in the Linux kernel.  Several different tables may be defined.  Each table contains a number of built-in chains and may also contain user-defined chains.

以上是itables man手册上的说明。


iptables包含4个表:filter,nat,mangle,raw。我们最常用的就是filter这个表。filte表有三个内建的chain:INPUT、OUTPUT和FORWORD。

INPUT:用来处理发给本机的数据包;如主机A发给本机的数据,数据通信路径会像这:主机A------>本机localhost

OUTPUT:用来处理本机发送出去的数据包;如本机访问百度服务器,数据通信路径会像这样,如本机localhost------>百度服务器

FORWORD:用来处理流经本机,但又不是发给本机的数据包;如主机A要给主机B发送数据包,经过了本机,路径会像这样:主机A--->本机localhost--->主机B。

前面两条chain好理解,但FORWORD怎么理解呢?

一般主机就一张网卡,什么时候会用到呢?

在做ARP中间人攻击时,我们需欺骗网关和被攻击的主机,使其两者的通信数据经过本机,这个时候就可需设置FORWORD 这个chain下的规则了,因为默认情况下,FORWORD这个CHAIN下有一条策略是拒绝所有的数据的。


接下来看下如何查看filter表的配置:

1、filter表查看

[root@localhost ~]# iptables -L -v
建议查看表时,带上-v参数,会显示in out 方向等信息,显示的信息更完整、详细。



2、filter表规则添加。

有两种方式添加规则

iptables -A 和iptables -I

iptables -A 添加的规则是添加在最后面。如针对INPUT链增加一条规则,接收从eth0口进入且源地址为192.168.0.0/16网段发往本机的数据。

[root@localhost ~]# iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j ACCEPT


iptables -I 添加的规则默认添加至第一条。


如果要指定插入规则的位置,则使用iptables -I 时指定位置序号即可。



3、删除规则

如果删除指定则,使用iptables -D命令,命令后可接序号。效果请对比上图。


或iptables -D 接详细定义;


如果想把所有规则都清除掉,可使用iptables -F。


4、备份iptabes rules

使用iptables-save命令,如:

[root@localhost ~]# iptables-save >/dd/iptables.bak

5、恢复iptables rules

使用iptables命令,如:

[root@localhost ~]# iptables-restore </dd/iptables.bak


6、iptables 配置保存

以上做的配置修改,在设备重启后,配置将丢失。可使用service iptables save进行保存。

[root@localhost ~]# service iptables save





<think>嗯,用户之前问过如何修改SSH端口,现在又接着问如何保存iptables规则到防火墙配置文件。看来他可能在配置服务器安全方面有需求,可能是在加固服务器,比如先改SSH端口,再设置防火墙规则。 首先,我需要确定用户的操作系统,因为不同的Linux发行版保存iptables的方式不同。比如,Debian/Ubuntu通常用iptables-persistent,而CentOS/RHEL则用service iptables save或者直接编辑配置文件。不过用户可能不太清楚这些区别,所以回答里要涵盖不同系统的方法。 用户的问题是关于保存iptables规则,所以需要分步骤说明,确保他理解如何导出当前规则,安装必要的工具,保存配置,并设置开机自动加载。可能还需要提到检查服务状态,或者测试重启后的规则是否生效。 另外,用户可能遇到保存失败的情况,比如权限问题,或者没有安装相应的工具。需要提醒使用sudo,以及安装iptables-persistent或相应包。同时,CentOS 7之后可能默认使用firewalld而不是iptables,所以如果用户使用的是firewalld,可能需要先停止并禁用firewalld,安装iptables-services,但这可能会让问题复杂化,需要视情况说明。 还要注意用户是否在远程操作,保存防火墙规则时如果规则中有阻断SSH的规则,可能导致连接断开,所以可能需要提醒谨慎操作,或者先确保规则正确。不过用户之前已经修改了SSH端口,可能已经考虑到这点。 最后,给出一些注意事项,比如备份原有规则,测试重启后的效果,以及不同发行版的差异。这样用户可以根据自己的系统选择正确的方法,避免出错。可能还需要提供示例命令,让用户可以直接复制粘贴,提高操作效率。</think>以下是保存iptables防火墙规则的完整操作指南: --- ### **一、通用保存方法** #### **1. 查看当前规则** ```bash sudo iptables -L -n -v --line-numbers ``` #### **2. 临时保存规则** ```bash sudo iptables-save > /tmp/iptables.rules ``` --- ### **二、永久保存配置** #### **Debian/Ubuntu 系统** ```bash # 安装持久化工具 sudo apt-get install iptables-persistent # 保存IPv4规则 sudo netfilter-persistent save # 或直接覆盖配置文件 sudo iptables-save > /etc/iptables/rules.v4 ``` #### **CentOS/RHEL 6 系统** ```bash # 保存规则到默认文件 sudo service iptables save # 或手动保存 sudo iptables-save > /etc/sysconfig/iptables ``` --- ### **三、开机自动加载** #### **所有系统通用** ```bash # 创建开机加载脚本 sudo tee /etc/network/if-pre-up.d/iptables << EOF #!/bin/sh /sbin/iptables-restore < /etc/iptables/rules.v4 EOF # 添加执行权限 sudo chmod +x /etc/network/if-pre-up.d/iptables ``` --- ### **四、规则恢复操作** ```bash # 从配置文件恢复 sudo iptables-restore < /etc/iptables/rules.v4 # 检查规则加载 sudo iptables -L -n ``` --- ### **五、特殊场景处理** #### **同时保存IPv6规则** ```bash sudo ip6tables-save > /etc/iptables/rules.v6 ``` #### **Docker兼容配置** ```bash # 在保存规则前添加Docker相关链 sudo iptables -I DOCKER-USER -j ACCEPT ``` --- ### **配置示例** ```bash # 1. 清空现有规则 sudo iptables -F # 2. 设置默认策略 sudo iptables -P INPUT DROP sudo iptables -P FORWARD DROP sudo iptables -P OUTPUT ACCEPT # 3. 添加放行SSH规则(假设SSH端口为2222) sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT # 4. 永久保存 sudo iptables-save | sudo tee /etc/iptables/rules.v4 ``` --- ### **注意事项** 1. **操作顺序**: - 先通过`iptables-save`测试规则有效性 - 确认无误后再写入配置文件 2. **文件权限**: ```bash sudo chmod 600 /etc/iptables/rules.v4 ``` 3. **系统差异**: - CentOS 7+ 默认使用firewalld,如需使用iptables需执行: ```bash sudo systemctl stop firewalld sudo systemctl disable firewalld sudo yum install iptables-services ``` 4. **规则验证**: ```bash # 测试重启后生效 sudo reboot sudo iptables -L ``` --- 通过以上步骤可以确保iptables规则在系统重启后仍然有效,建议每次修改规则后及时执行保存操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值