ubuntu22.04 下 iptables规则保存,持久化保存规则

使用 iptables命令定义的规则,手动删除前,其生效期限为 kernel 存活期限,当系统重启之后,定义的规则会消失。

iptables持久化方案,如何让防火墙规则重启后依旧有效?

在这里插入图片描述

  • 推荐使用 iptables-persistent 工具:
#首先安装
apt install iptables-persistent
#保存当前设置的iptables防火墙规则,
/etc/init.d/netfilter-persistent save
#重新载入防火墙规则
netfilter-persistent reload
#保存的规则文件路径如下:
/etc/iptables/rules.v4
/etc/iptables/rules.v6
  • 原理:iptalbes-persistent save 和 reload 脚本内调用的命令
    • netfilter-persistent save
    • netfilter-persistent reload
save_rules()
{
    if [ ! "${IPTABLES_SKIP_SAVE}x" = "yesx" ]; then
        touch /etc/iptables/rules.v4
        chmod 0640 /etc/iptables/rules.v4
        iptables-save > /etc/iptables/rules.v4
    fi
}

load_rules()
{
    if [ "${IPTABLES_RESTORE_NOFLUSH}x" = "yesx" ]; then
        NOFLUSH='--noflush'
    else
        NOFLUSH=''
    fi

 #load IPv4 rules
    if [ ! -f /etc/iptables/rules.v4 ]; then
        echo "Warning: skipping IPv4 (no rules to load)"
    else
        iptables-restore $NOFLUSH < /etc/iptables/rules.v4
    fi
}

命令行实现

1. 保存现有规则导出到文件:
iptables-save > /etc/iptables/rules.v4   
2. 加载保存的规则:	
iptables-restore < /etc/iptables/rules.v4
3. 实现开机自动加载规则:
 rocky: vim /etc/rc.d/rc.local  增加如下行:
 iptables-restore < /etc/iptables/rules.v4
ubuntu 中没有 rc.local文件,要自行在/etc目录下创建
vim /etc/rc.local
#
#有时候会因为依赖关系 ,无法成功开机加载配置。
#建议使用 service管理启动或使用上面的iptables-persistent 工具
### 确保iptables配置立即生效并持久化 为了确保`iptables`配置能够立即生效并且在系统重启后仍然保持不变,在Ubuntu 22.04环境中可以通过安装`iptables-persistent`包来达成这一目标[^1]。 #### 安装`iptables-persistent` 首先,执行如下命令以安装必要的软件包: ```bash sudo apt update && sudo apt install iptables-persistent ``` 在安装期间,会出现提示询问是否要保存当前存在的`iptables`规则。此时应选择“yes”,以便将现有规则分别存储至`/etc/iptables/rules.v4`(针对IPv4)以及`/etc/iptables/rules.v6`文件中用于后续加载[^2]。 #### 手动保存与恢复规则 如果希望手动保存已设置好的规则,则可利用下面这条指令完成操作: ```bash sudo iptables-save -f /etc/iptables/rules.v4 ``` 而当需要重新应用之前所保存下来的规则集时,只需运行下列命令即可: ```bash sudo netfilter-persistent reload ``` 这一步骤会使得服务读取位于上述路径下的`.v4/.v6`文件中的内容,并据此重建相应的网络过滤器链表结构。 对于想要移除特定条目的情况,比如取消对某个IP地址的封禁措施,可以采用如下的方式来进行调整: ```bash sudo iptables -t filter -D INPUT -s {target_ip} -j DROP sudo iptables -t filter -D OUTPUT -d {target_ip} -j DROP ``` 其中`{target_ip}`代表被封锁的目标主机地址。此过程即是从输入(`INPUT`)和输出(`OUTPUT`)两个方向上解除对该地址的数据包丢弃动作[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值