当前位置:首页 > 技术知识 > 正文内容

Linux系统iptables配置持久化的技巧

maynowei9个月前 (08-23)技术知识79


前言

iptables是Linux系统传统的防火墙配置工具,在老版本的RHEL/Centos6及以前的版本默认安装有iptables-services服务可以方便的进行iptables配置持久化,能在系统启动时自动加载 iptables 规则。但是到了RHEL/Centos7及以后的版本中并没有默认安装该服务,而且默认使用的防火墙配置工具变成了firewalld或者xftables,在这种新版linux环境如果你还是用iptables,是没有办法实现配置的持久化(重启后配置会消失)。

本文主要分享在现代linux系统(采用systemd)中,通过systemd自定义服务实现iptables配置持久化的一个技巧。如果你的环境
RHEL/Centos7/Rockylinux/Almalinux、ubuntu22.04及以后等新版本的linux,同时还希望使用iptables这种传统防火墙管理工具,本文分享的内容就比较适合你;但如果你在新版linux环境使用的firewalld、ufw、nft等现代防火墙工具就可以略过此文。

配置思路

本文使用的环境是Centos 7

因在Centos 7系统环境里,iptables的规则配置都是在内存中保留,一旦重启系统规则配置就会丢失。如果希望在系统重启后规则仍然自动生效,可以按如下思路:

1. 将iptables规则手动保存在自定义的文本文件中。

2. 编写自定义的一个关于iptabls配置保存和自启动的systemd服务,该服务配置为开启自启动。

配置方法

先进行iptables规则的配置(关于iptables的规则请结合实际场景配置),比如我的系统配置了如下规则:

将iptables规则保存到root目录下的iptables.txt文件(文件名称请结合实际配置)

重点来了,本文的重点!开始我们的关于iptables规则持久化的systemd服务编写,在/usr/lib/systemd/system目录下创建名为iptables.service的文件(请注意,要是后缀.service的文件),自定义systemd服务的内容写入iptables.service文件。

请注意,如果你不更改规则保存文件名称,可以直接复制以下我编写的服务文件内容即可。

cat > /usr/lib/systemd/system/iptables.service << EOF

[Unit]

Description= iptables #描述服务名称

After=network.target #表示在网络服务启动后启动此服务

[Service]

Type=oneshot #服务类型为 oneshot,表示该服务是一次启动任务

ExecStart=/bin/bash -c '
/usr/sbin/iptables-restore < /root/iptables.txt' # 启动加载规则文件内容

ExecStop=/bin/bash -c '/usr/sbin/iptables-save > /root/iptables.txt' #关机或者重启时自动保存规则到文件

RemainAfterExit=yes #适配 oneshot 类型服务管理需求

[Install]

WantedBy=multi-user.target #多用户模式启动时会加载 iptables 服务

EOF


最后配置服务自启动及查看服务运行状态

systemctl enable iptables.service #配置服务开机自启动

systemctl start iptables.service #启动服务

systemctl status iptables.service #查看服务运行状态

通过定义的systemd服务,实现的功能就是在系统关机时自动保存iptables规则到文件;系统开机时会自动加载规则文件的规则到内存运行。这样就实现了通过systemd服务方式对iptables规则的关机自动保存和开机自动加载。

相关文章

惊现!iOS 16.5 kfd 漏洞利用,成功隐藏 Dock 栏

最近!kfd漏洞比较活跃,进展也是很顺利,今天就有大神成功使用 kfd 漏洞实现隐藏 Dock 栏,到底怎么回事?请继续往下看。-- kfd 漏洞说明 --kfd漏洞适合在 iOS 16.2 - 16...

高考一词多义考点! 30个高频词汇,完形填空再也不怕啦

1. address·/a'dres/ v.处理(问题)We must address the issue of climate change.·/'aedres/ n.地址Pleas...

微软宣布SQL Server 2016,2005版将结束支持

IT之家讯 在芝加哥Ignite大会上,微软宣布了SQL Server 2016,并将于今年夏季发布公开预览版。SQL Server是由微软开发的关系型数据库管理系统,用于软件应用请求数据的存储和管理...

android培训学习的大纲(安卓app培训)

第一阶段android基础:1.基础javaJava概述,进制,数据类型,常量变量,运算符,表达式关系运算符,逻辑运算符,if语句,switch语句while循环,do...while循环,for循环...

Django 官方推荐的姿势:类视图(django类视图和函数视图哪个好)

作者:HelloGitHub-追梦人物在开发网站的过程中,有一些视图函数虽然处理的对象不同,但是其大致的代码逻辑是一样的。比如一个博客和一个论坛,通常其首页都是展示一系列的文章列表或者帖子列表。对处理...

C++并发同步核心-mutex深度解析:守护共享数据的关键

在多线程编程中,当多个线程需要访问和修改共享数据时,如果没有任何同步机制,就可能发生数据竞争(Data Race),导致程序行为不可预测、数据损坏甚至崩溃。C++标准库通过<mutex>头...