重新封装一个iptables防止规则重复
来源:互联网 发布:mac铁锈红图片 编辑:程序博客网 时间:2024/05/06 00:19
相信很多人都遇到过iptables规则重复的问题,即iptables规则在添加的时候并不会检查该规则是否已经存在,即便已经存在,它还时会再次添加一遍,这一点和添加路由是完全不同的。很多基于iptables的管理系统都会面对规则的增删该查的触发时机问题,稍不注意,后台iptables-save查看的时候,就会发现一大堆重复的规则。然后你就会绞尽脑汁思考到底在哪个触发点上该删除规则却没有删除规则...
我本来想修改一下iptables的代码来订正这个问题,在添加规则之前,首先检查一下是否已经存在,若存在就不再添加了。但是最终还是决定用脚本封装,把iptables重新封装一下,它的逻辑如下:
1.使用iptables -C命令先检查一下是否已经有这个规则;
2.如果返回非0,说明没有这个规则,添加之;
3.如果返回0,直接exit 0。
脚本很简单:
有了上述脚本,就可以非常放心地执行任意iptbales命令了,要说明的是,上述的脚本还十分粗糙!
我本来想修改一下iptables的代码来订正这个问题,在添加规则之前,首先检查一下是否已经存在,若存在就不再添加了。但是最终还是决定用脚本封装,把iptables重新封装一下,它的逻辑如下:
1.使用iptables -C命令先检查一下是否已经有这个规则;
2.如果返回非0,说明没有这个规则,添加之;
3.如果返回0,直接exit 0。
脚本很简单:
#!/bin/bashcheck=$(echo $@ | sed -e 's/-A/-C/g')echo $checkxtables-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命令了,要说明的是,上述的脚本还十分粗糙!
2 0
- 重新封装一个iptables防止规则重复
- 配置一个生产的iptables防火墙规则
- django防止页面重新载入,刷新重复提交表单解决方案
- iptables规则
- iptables 规则
- iptables规则
- iptables 规则
- 服务器端防止重复提交的一个实现
- 一个表单加密;防止重复提交问题
- iptables学习与研究五(一个由James C. Stephens整理的iptables的规则脚本)
- iptables设置防止攻击
- 修改和重新封装了一个GHOST XP
- 防止一个没有窗体的WINDOWS程序的重复运行
- 如何防止按钮重复提交的一个实践
- Android 防止一个控件被过快重复点击
- 一个简单的防止同一ID重复登陆的方法
- 每天一个JavaScript实例-防止重复表单提交
- Android 防止一个控件被过快重复点击
- Linux 常用命令
- tomcat部署solr步骤
- 【UVaOJ】196 - Spreadsheet
- jffs2根文件系统制作
- 多线程通信(生产者与消费者)
- 重新封装一个iptables防止规则重复
- nodejs实现通过邮件代理发送邮件功能(cs)
- 如何在项目中开始使用ARC(Automatic Reference Counting)
- 利用开源ASN1C库实现asn.1的编解码
- java.lang.AbstractMethodError: com.microsoft.jdbc.base.BaseDatabaseMetaData.getJDBCMajorVersion()
- QT button 的三态
- struts2的resultType类型
- HTML5 下利用 csrf 上传文件
- openssl unsupported inline asm 出错处理方法