相信很多人都遇到过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 ]; thenexit 0;
elsextables-multi iptables $@;
fi

唯一值得注意的是,系统中的iptables是一个指向iptables-multi的链接,而且它的执行是基于main函数中的argv[0]来识别子命令的,如果你将iptables的名字改为了aaa,由于aaa并不是一个正规的子命令,因此将不会执行。
       有了上述脚本,就可以非常放心地执行任意iptbales命令了,要说明的是,上述的脚本还十分粗糙!

转载于:https://blog.51cto.com/dog250/1348732

重新封装一个iptables防止规则重复相关推荐

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

    相信很多人都遇到过iptables规则重复的问题,即iptables规则在添加的时候并不会检查该规则是否已经存在,即便已经存在,它还时会再次添加一遍,这一点和添加路由是完全不同的.很多基于iptabl ...

  2. 函数模板案例_利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序 分别利用char数组和int数组进行测试

    案例描述: 利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序 分别利用char数组和int数组进行测试 #include <iostream& ...

  3. 角谷猜想:所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘 3 加 1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到 1。如假定初始整数为 5,计算过程分别为 16、

    角谷猜想 Description 所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘 3 加 1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到 1.如,假定初始整数为 5 ...

  4. 蒜头君:所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘 33 加 11,如果是偶数,则除以 22,得到的结果再按照上述规则重复处理,最终总能够得到 11。如,假定初始整数为 5

    蒜头君:所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘 33 加 11,如果是偶数,则除以 22,得到的结果再按照上述规则重复处理,最终总能够得到 11.如,假定初始整数为 55,计算过程分别 ...

  5. Python之网络爬虫(验证码、代理IP、防反爬策略、封装一个抓取页面的函数)

    文章目录 一.使用tesseract做OCR验证码识别 二.代理服务器设置 三.反爬与防反爬 四.封装一个抓取页面的函数 一.使用tesseract做OCR验证码识别 1.cookie, sessio ...

  6. Linux下防火墙iptables用法规则详及其防火墙配置

    原博主文章更美丽: http://www.cnblogs.com/yi-meng/p/3213925.html iptables规则 规则--顾名思义就是规矩和原则,和现实生活中的事情是一样的,国有国 ...

  7. iptables —— Iptables防火墙规则使用梳理

    iptables是组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤.封包重定向和网络地址转换(NAT)等功能 ...

  8. 【iptables】编写iptables防火墙规则-1

    来自书籍:防线-企业Linux安全运维理念和实战 Iptables一般规则如下: Iptables [-t table] command [match] target 一般,一条iptables规则包 ...

  9. 从零开始学_JavaScript_系列(21)——dojo(8)(手把手教你封装一个widget)

    (73)封装一个widget 醒目:必须在web环境下使用,无论是python的web.py或者是通过http访问网站环境,都可以,但纯本地是不可行的. 首先,什么是widget? 简单来说,就是一个 ...

最新文章

  1. CVE-2018-4878
  2. sql2005/sql2000 向表中循环插入100万条记录
  3. 10个开源免费的电子商务平台(转自伯乐在线)
  4. 零基础转行web前端,如何高效的去学习web前端?
  5. java中ares框架_ARES辅助开发工具-用户手册.doc
  6. Ubuntu执行脚本报错-bash: ./send.py: /usr/bin/python: bad interpreter: Permission denied
  7. 解决vmware“二进制转换与此平台长模式不兼容.....”的问题
  8. Cookie, Session, LocalStorage, SessionStorage, Etag, Expire
  9. 关于FLEX中找不到目标对象或通道未定义错误
  10. win2008php一键,WIN2008 一键安装PHP环境PHP5.3+FastCGI
  11. 联想e470加装固态硬盘_ThinkPad E470C怎么安装固态硬盘?
  12. 通达信f10接口是什么?
  13. 在细粒度与高密度场景下的 基于人头的 人流量监测方法【神经网络】
  14. python处理csv文件里的空值_如何处理csv中的空值
  15. MySQL load data 快速导入大批量数据
  16. house-robber-iii
  17. 基于HttpClient接口开发实例(一)
  18. android adb没反应,Android adb无法发现设备处理方法
  19. H5游戏开发:一笔画
  20. 《营销管理必读12篇》读书小记

热门文章

  1. VTK:Qt之RenderWindowUISingleInheritance
  2. VTK:PolyData之CleanPolyData
  3. OpenCV演示代码以查找图像中的轮廓(附完整代码)
  4. OpenCV均值漂移的跟踪mean-shift based tracking的实例(附完整代码)
  5. OpenGL shader uniform的实例
  6. OpenGL indexedCube索引多维数据集的实例
  7. OpenGL 几何着色器剔除的实例
  8. OpenGL 变换Transformations
  9. c++判断一个数字是否为buzz number的算法(附完整源码)
  10. C++longest palindromic subsequence最长回文子序列算法实现(附完整源码)