iptables进行持久化配置,重启不丢失

小熊 Linux1 1,920字数 1163阅读3分52秒阅读模式

操作文档针对ubuntu20和centos系统,其他系统类似。iptables-save命令其实只是把配置文件打印出来,并不会真的save,这个有点容易让人误解。

原理

netfilter-persistent 是 Linux 系统中用于管理 netfilter 防火墙规则的工具。

Netfilter 是 Linux 内核中的一个框架,它支持包过滤、网络地址转换(NAT)和端口转换。它负责在 Linux 中实现防火墙功能。

Netfilter 持久化的基本原理包括将当前的防火墙规则写入两个单独的文件: 一个用于 IPv4,另一个用于 IPv6。在系统启动的时候,netfilter-persistent 服务读取这些文件,并使用 iptables-restore 命令应用这些规则。

所以我们可以用systemctl来管理这个服务的生命周期。

针对ubuntu平台

ubuntu20 需要安装 iptables-persistent 才能实现持久化

apt install iptables-persistent
  • iptables-persistent 包含了netfilter-persistent服务,所以安装它可以自动依赖安装好。

保存后的配置文件位置于,一会讲解如何保存

# 针对ipv4
/etc/iptables/rules.v4

# 针对ipv6
/etc/iptables/rules.v6

针对centos平台

安装包 iptables-services

sudo dnf install iptables-services

一些老版本用yum代替dnf命令,语法一样的。

配置文件位置于

/etc/sysconfig/iptables
/etc/sysconfig/ip6tables

需要关闭firewalld然后启动iptables(在RHEL 7系统中,firewalld防火墙取代了iptables防火墙,我们都改用iptables来管理,以前的知识也能复用)

systemctl disable --now firewalld
systemctl enable --now iptables

netfilter-persistent命令

当有规则变更的时候,执行此命令可以保存当前规则,达到持久化的目的。

netfilter-persistent save

如果无法连外网

如果没办法连外网,安装不了 iptables-persistent,则尝试手动保存。

systemctl save iptables
# 或
service iptables save

如果是centos7需要安装iptables-services这个包,才能用iptables save的功能。

重启后手动加载规则,使用 iptables-restore 命令可以从指定文件中重载规则,示例如下

iptables-restore < /etc/sysconfig/iptables

weinxin
公众号
扫码订阅最新深度技术文,回复【资源】获取技术大礼包
小熊