重新封装一个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命令了,要说明的是,上述的脚本还十分粗糙!


 本文转自 dog250 51CTO博客,原文链接: http://blog.51cto.com/dog250/1348732

相关文章
|
安全
SCP文件上传中断的问题
SCP文件上传中断的问题
2493 1
|
网络协议 Unix Linux
计算机网络 套接字函数 | socket、bind、listen、accept、connect
计算机网络 套接字函数 | socket、bind、listen、accept、connect
489 0
|
9月前
|
开发者 Windows
NDM多线程下载器!实用的下载器,绿色版下载及安装教程
NDM是一款小巧高效的多线程下载器,支持Windows、Mac及浏览器插件,绿色单文件仅904KB,无需安装。已汉化,操作简单,下载速度快,支持HTTP/HTTPS/FTP协议,不支持磁力链接。使用前需关闭杀毒软件,配合7-ZIP解压,浏览器插件可自动嗅探音视频资源。
3186 2
|
人工智能 自然语言处理 程序员
产品测评 | AI编程界的集大成者——通义灵码AI程序员
通义灵码AI程序员是阿里云推出的一款基于先进自然语言处理和深度学习技术的编程助手,集成于VS Code和JetBrains IDEs中。它覆盖从前端到后端的开发流程,支持多文件级别的代码修改、单元测试生成、多版本快照管理等高级功能,显著提升开发效率和项目管理能力。开发者可通过对话式交互完成需求理解到产品发布的全过程,实现高效敏捷开发。最新2.0版本在代码生成、跨语言编程、单元测试自动生成及图生代码等方面有显著提升,进一步优化了用户体验。
|
XML 存储 数据安全/隐私保护
PyMuPDF 1.24.4 中文文档(五)(4)
PyMuPDF 1.24.4 中文文档(五)
516 0
|
监控 安全 Ubuntu
挡不住的入侵者?试试Fail2ban,拦截黑客攻击
挡不住的入侵者?试试Fail2ban,拦截黑客攻击
1801 0
|
缓存 监控 前端开发
WEB前端三大主流框架:React、Vue与Angular
在Web前端开发中,React、Vue和Angular被誉为三大主流框架。它们各自具有独特的特点和优势,为开发者提供了丰富的工具和抽象,使得构建复杂的Web应用变得更加容易。
4445 6
|
JavaScript Java 关系型数据库
springboot+vue餐厅点餐系统(源码+文档)
这是一篇关于基于SpringBoot的餐厅点餐系统的介绍。该系统由Java开发者风歌分享,提供完整的源码。项目支持多种Java框架,包括SSM和SpringBoot,适用于Java毕设项目。开发环境包括Java 1.8、MySQL 5.7+、Node.js、Vue等。系统架构包括管理员、用户和食堂三个角色的功能模块,涵盖用户注册登录、食堂管理、菜单管理、订单处理、消息留言、留言板和系统管理等全面功能。文章还展示了部分界面截图。如有需要,可联系作者获取更多详情和源码。