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

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

maynowei6个月前 (08-23)技术知识53


前言

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规则的关机自动保存和开机自动加载。

相关文章

Axure RP设计伸缩导航、遮罩弹窗、返回顶部的方法

以下几小教程使用的是Axure的动态面板来实现,内容简单,适合菜鸟查阅,老鸟可飘过,顺便帮忙点个赞哈/偷笑。一.伸缩/隐藏导航栏例如:鼠标移动到一级导航上,二级导航会下拉方式显示1.打开Axure,拖...

去哪儿暑期PM实习一月记:在互联网公司做产品实习是怎样一种体验

人人都是产品经理旗下【起点学院】推出产品经理“365天”成长计划,BAT大牛带你学产品! 在毕业前的最后一个暑假,缘分使然找了几个月暑期实习之后进入了去哪儿,申请提前入职工作至今正好满一个月。原先有在...

Win10系统除了移植Objective C,还要有Swift

IT之家讯Build2015大会最让人震惊的莫属微软推出工具,Win10系统可以移植安卓/iOS应用,特别是后者使用的Objective C编程语言,不过最新消息表明,微软连苹果最新的Swift移植也...

机器人需求驱动导航新SOTA,成功率提升15%!浙大&amp;vivo联手打造

CogDDN团队 投稿量子位|公众号QbitAI让机器人像人一样边看边理解,来自浙江大学和vivo人工智能实验室的研究团队带来了新进展。正如视频所展示的,机器人在复杂的室内环境中不仅能自主探索,还具备...

Flutter 之 ListView(flutter框架)

在 Flutter 中,ListView 可以沿一个方向(垂直或水平方向)来排列其所有子 Widget,常被用于需要展示一组连续视图元素的场景ListView 构造方法ListView:仅适用于列表中...

Go 语言中的 RWMutex 源码解析、使用场景及应用分析

Go 语言标准库的 sync 包提供了一些非常重要的并发原语来帮助程序开发者处理并发任务。本文将详细解析 sync 包中的 RWMutex,即读写互斥锁(Reader/Writer Mutex),并结...