引言

Iptables是Linux系统上常用的防火墙工具,它提供了强大的包过滤、网络地址转换(NAT)和网络端口转发等功能。在CentOS系统上,Iptables的使用频率非常高,但由于其配置较为复杂,常常会面临手动配置和保存配置的烦恼。本文将详细介绍如何在CentOS上使用Iptables,并教你如何轻松保存配置,让防火墙管理变得更加简单。

一、Iptables基础

1.1 Iptables结构

Iptables分为四个表(Table)、五个链(Chain)和多个规则(Rule)。以下是Iptables的基本结构:

  • 表(Table):Iptables有四个表:filter、nat、mangle、raw。其中,filter是默认表,用于包过滤;nat用于网络地址转换;mangle用于修改包的头部信息;raw用于处理特殊协议的包。
  • 链(Chain):每个表包含多个链,如INPUT、OUTPUT、FORWARD等。链用于定义包的过滤逻辑。
  • 规则(Rule):每个链包含多条规则,规则用于匹配特定的包,并指定相应的动作。

1.2 Iptables命令

以下是常用的Iptables命令:

  • iptables -L:列出当前Iptables规则。
  • iptables -A:添加规则到链的末尾。
  • iptables -D:删除链中的规则。
  • iptables -S:保存Iptables规则到配置文件。

二、保存Iptables配置

2.1 保存配置文件

将Iptables规则保存到配置文件中,可以在重启系统后保持防火墙设置。

  1. 使用iptables-save命令将当前规则保存到/etc/sysconfig/iptables文件中。
iptables-save > /etc/sysconfig/iptables
  1. 编辑/etc/sysconfig/iptables文件,添加以下内容:
# Generated by iptables-save v1.4.21 on Thu Feb  4 14:48:27 2021
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 80 -j ACCEPT
COMMIT
  1. 使用iptables-restore命令将配置文件中的规则加载到Iptables。
iptables-restore < /etc/sysconfig/iptables

2.2 使用Systemd服务

CentOS 8及以上版本使用Systemd管理服务,可以使用以下命令保存Iptables配置:

  1. 创建一个新的Systemd服务文件,如/etc/systemd/system/iptables.service
[Unit]
Description=iptables service
After=network.target

[Service]
Type=forking
ExecStart=/usr/sbin/iptables-restore < /etc/sysconfig/iptables
ExecStop=/bin/kill -s TERM $MAINPID

[Install]
WantedBy=multi-user.target
  1. 启用并启动iptables服务。
systemctl enable iptables.service
systemctl start iptables.service

三、自动化Iptables配置

为了简化Iptables配置,可以使用脚本自动化添加和删除规则。以下是一个简单的示例:

#!/bin/bash

# 定义规则
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --sport 80 -j ACCEPT

# 保存配置
iptables-save > /etc/sysconfig/iptables

将上述脚本保存为iptables.sh,并赋予执行权限。

chmod +x iptables.sh

现在,每次运行iptables.sh脚本,都会自动添加和保存防火墙规则。

总结

本文详细介绍了CentOS Iptables的配置和保存方法,旨在帮助用户轻松管理防火墙设置。通过使用Systemd服务或脚本自动化配置,可以大大简化防火墙管理过程。希望本文能对您有所帮助!