重新封裝一個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
相關文章
- 25個常用的Linux iptables規則Linux
- 25 個常用的 Linux iptables 規則Linux
- iptables防火牆規則防火牆
- 遮蔽埠 iptables 規則
- iptables常用規則列表
- iptables詳解及docker的iptables規則Docker
- 建立iptables NAT規則(轉)
- 防止Toast重複提醒AST
- Debian使用iptables-persistent持久化iptables規則持久化
- iptables 常用規則使用例項
- Iptables防火牆規則使用梳理防火牆
- js 防止重複提交方案JS
- 20條IPTables防火牆規則用法!防火牆
- iptables 預設安全規則指令碼指令碼
- PHP 防止表單重複提交PHP
- 前端如何防止介面重複提交前端
- 使用IPtables搭建防火牆的規則(轉)防火牆
- 詳解網路知識:iptables規則
- WinForm MDIParent如何防止重複開啟ORM
- 防止指令碼重複執行方法指令碼
- Linux IPTables:如何新增防火牆規則Linux防火牆
- 封裝一個元件 + 函式惰性思想(重寫應用)封裝元件函式
- 重構複雜條件的規則設計模式 - levelup設計模式
- [轉載]防止JAVA程式重複啟動的一個另類解決辦法Java
- 前端防止使用者重複提交-js前端JS
- 防止表單重複提交的程式碼
- 如何防止jQuery物件動畫重複執行jQuery物件動畫
- jquery防止重複提交程式碼例項jQuery
- MQ 如何防止訊息重複入隊MQ
- Ubuntu系統iptables規則的檢視和清除Ubuntu
- Flutter之封裝一個下拉重新整理上拉載入的listviewFlutter封裝View
- PHP防止使用者重複提交表單PHP
- 防止表單重複提交的幾種策略
- Nginx 重寫規則指南Nginx
- 四則運算----封裝封裝
- linux系統中檢視己設定iptables規則Linux
- 資料包如何遊走於 Iptables 規則之間?
- #每日一記#防止按鈕在短時間內重複點選