Linux避免重复添加,重新封装一个iptables防止规则重复

相信很多人都遇到过iptables规则重复的问题,即iptables规则在添加的时候并不会检查该规则是否已经存在,即便已经存在,它还时会再次添加一遍,这一点和添加路由是完全不同的。很多基于iptables的管理系统都会面对规则的增删该查的触发时机问题,稍不注意,后台iptables-save查看的时候,就会发现一大堆重复的规则。然后你就会绞尽脑汁思考到底在哪个触发点上该删除规则却没有删除规则...

我本来想修改一下iptables的代码来订正这个问题,在添加规则之前,首先检查一下是否已经存在,若存在就不再添加了。但是最终还是决定用脚本封装,把iptables重新封装一下,它的逻辑如下:

1.使用iptables -C命令先检查一下是否已经有这个规则;

2.如果返回非0,说明没有这个规则,添加之;

3.如果返回0,直接exit 0。

脚本很简单:

#!/bin/bash

check=$(echo $@ | sed -e 's/-A/-C/g')

echo $check

xtables-multi iptables $check ;ret=$?

if [ "$ret" -eq 0 ]; then

exit 0;

else

xtables-multi iptables $@;

fi

唯一值得注意的是,系统中的iptables是一个指向iptables-multi的链接,而且它的执行是基于main函数中的argv[0]来识别子命令的,如果你将iptables的名字改为了aaa,由于aaa并不是一个正规的子命令,因此将不会执行。

有了上述脚本,就可以非常放心地执行任意iptbales命令了,要说明的是,上述的脚本还十分粗糙!

推荐阅读:

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值