Welcome 微信登录

首页 / 操作系统 / Linux / 重新封装一个iptables防止规则重复

相信很多人都遇到过iptables规则重复的问题,即iptables规则在添加的时候并不会检查该规则是否已经存在,即便已经存在,它还时会再次添加一遍,这一点和添加路由是完全不同的。很多基于iptables的管理系统都会面对规则的增删该查的触发时机问题,稍不注意,后台iptables-save查看的时候,就会发现一大堆重复的规则。然后你就会绞尽脑汁思考到底在哪个触发点上该删除规则却没有删除规则...我本来想修改一下iptables的代码来订正这个问题,在添加规则之前,首先检查一下是否已经存在,若存在就不再添加了。但是最终还是决定用脚本封装,把iptables重新封装一下,它的逻辑如下:1.使用iptables -C命令先检查一下是否已经有这个规则;2.如果返回非0,说明没有这个规则,添加之;3.如果返回0,直接exit 0。脚本很简单:#!/bin/bashcheck=$(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命令了,要说明的是,上述的脚本还十分粗糙!推荐阅读:iptables—包过滤(网络层)防火墙 http://www.linuxidc.com/Linux/2013-08/88423.htmLinux防火墙iptables详细教程 http://www.linuxidc.com/Linux/2013-07/87045.htmiptables+L7+Squid实现完善的软件防火墙 http://www.linuxidc.com/Linux/2013-05/84802.htmiptables的备份、恢复及防火墙脚本的基本使用 http://www.linuxidc.com/Linux/2013-08/88535.htmLinux下防火墙iptables用法规则详解 http://www.linuxidc.com/Linux/2012-08/67952.htmLinux纵向截取工具之cutLinux平台下安装SSH相关资讯      IpTables  iptables规则 
  • CentOS Samba 服务器 Iptables 和   (今 07:14)
  • iptables超全详解  (09月01日)
  • Iptables防火墙 基础知识  (08月19日)
  • Iptables工作原理使用详解  (09月06日)
  • iptables中NAT表  (08月25日)
  • Linux 为FTP 服务器添加iptables规  (08月11日)
本文评论 查看全部评论 (0)
表情: 姓名: 字数


评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任