91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux防火墻iptables中mark模塊分析及怎么進行編寫

發布時間:2021-10-21 17:51:31 來源:億速云 閱讀:502 作者:柒染 欄目:云計算

這篇文章將為大家詳細講解有關Linux防火墻iptables中mark模塊分析及怎么進行編寫,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

在linux系統中為了更好的實現網絡流量的管理,使用了內核的mark來標識網絡流量。這樣造成了用戶層再使用mark來標記多線負載,兩種mark會互相覆蓋,達不到想要的結果。在此種情況下,通過研究發現可以擴展mark模塊來解決這種沖突。 
  1 Iptables的結構和命令格式分析 
  1.1 Iptables的結構分析 
  Iptables是linux系統為用戶提供的一個配置防火墻的工具。它提供一個命名規則集。在linux中iptables防火墻實現的核心模塊是netfilter,它負責維護防火墻的規則鏈表,實現防火墻安全防御能力。Netfilter主要有三種功能:數據包過濾、網絡地址轉換(nat)以及數據包處理(mangle)。數據包過濾模塊的功能是過濾報文,不作任何修改,或者接受,或者拒絕。Nat是網絡地址轉換,該模塊以connection tracking模塊為基礎,僅對每個連接的第一個報文進行匹配和處理,然后交由connection tracking模塊將處理結果應用到該連接之后的所有報文。Mangle是屬于可以進行報文內容修改的ip tables,可供修改的報文內容包括mark、tos、ttl等。同時該模塊帶有用戶空間和內核交流的接口。 
  1.2 Iptables命令格式分析 
  一個最簡單的規則可以描述為拒絕所有轉發報文,用iptables命令表示就是:iptables -A FORWORD -j DROP。Iptables應用程序將命令行輸入轉換為程序可讀的格式,然后再調用libiptc庫提供的iptc_commit()函數向核心提交該操作請求。它根據請求設置了一個struct ipt_replace結構,用來描述規則所涉及的表和HOOK點等信息,并在其后附接當前這條規則,一個struct ipt_entry結構。組織好這些數據后,iptc_commit()調用setsockopt()系統調用來啟動核心處理這一請求。 
  2 Netfilter的結構分析 
  Netfilter是linux系統中的內核防火墻框架,主要進行包過濾,連接跟蹤,地址轉換的功能,是防火墻的基礎。其主要通過表、鏈實現。在netfilter中,每種網絡協議都有自己的一套hook函數。數據報經過協議棧的幾個關鍵點時調用hook函數,hook函數標號和協議棧數據報作為參數,傳遞給netfilter框架。其主要框架如圖1所示: 
  3 Netfilter和 Iptables相關模塊屬性分析 
  3.1 與netfilter有關的結構 
  Netfilter一個重大修正思想就是將netfilter作為一個協議無關的框架,表現在內核結構樹中單獨建立net/netfilter目錄,在net/netfilter下的匹配和目標模塊文件名稱以“xt_”開頭。 
  為了和iptables兼容,這些文件中增加了一個新的宏定義:module_alias,來表示模塊的別名。所有擴展程序的名稱也是以xt開頭。 
  Netfilter擴展的程序框架: 
  Xt_kzmark.c: 
  Static unsigned int kzmark_tg(struct sk_buff *skb, const struct xt_action_param *par) 
  Static int kzmark_tg_check(const struct xt_tgchk_param *par) 
  Static void kzmark_tg_destroy(const struct xt_tgdtor_param *par) 
  Static boool kzmark_mt(const struct sk_buff *skb, struct xt_action_param *par) 
  Static int kzmark_mt_check(const struct xt_mtchk_param *par) 
  Static void kzmark_mt_destroy(const struct xt_mtdtor_param *par) 
  Static struct xt_target kzmark_tg_reg __read_mostly = {} 
  Static struct xt_match kzmark_mt_reg __read_mostly = {} 
  Static int __init kzmark_mt_init(void) 
  {Int ret; 
  Need_ipv4_conntrack(); 
  Ret = xt_register_target(&kzmark_tg_reg); 
  Ret = xt_register_match(&kzmark_mt_reg);} 
  Static void_exit kzmark_mt_exit(void) 
  {Xt_unregister_match(&kzmark_mt_reg); 
  Xt_unregister_target(&kzmark_tg_reg);}   Module_init(kzmark_mt_init); 
  Module_exit(kzmark_mt_exit); 
  3.2 與Iptables有關的擴展 
  Iptables是一個用戶可自行配置狀態防火墻的應用程序,其實現由extension來完成,其機制類似于插件,可以有效的擴展iptables功能。Iptables是由模塊化集成的,它所有的功能都在模塊中實現。如一個很簡單的配置項:-m state,-m是一個match,而state是match的一個模塊,對于-m這個match,其它可選的模塊許多。在iptables結構中,模塊和模塊名稱是相關的。此次擴展的iptables代碼libxt_kzmark.c,libxt_KZMARK.c要放入extension文件夾中。 
  匹配模塊的程序框架: 
  Libxt_kzmark.c: 
  Static const struct option kzmark_opts[] = {}; 
  Static void parse_range(const char *arg, struct xt_kzmark_mtinfo *si) 
  Static int kzmark_parse(int c, char **argv, int invert, unsigned int *flags, const void *entry, struct xt_entry_match **match) 
  Static void kzmark_print(const void *ip, const struct xt_entry_match *match, int numeric) 
  Static void kzmark_save(const void *ip, const struct xt_entry_match *match) 
  Static struct xtables_match kzmark_match = {//Todo something}; 
  Void _init(void) 
  {Xtables_register_match(&kzmark_match);} 
  4 程序使用及效果 
  Kzmark的使用: 
  Iptables -A INPUT -d 192.168.1.11/32 -m kzmark -j DROP 
  KZMARK的使用: 
  Iptables -A INPUT -d 192.168.1.11/32 -j KZMARK --set-mark 3000 
  通過對以上模塊的測試,使用效果良好。Netfilter/iptables可以很好地擴展新的匹配模塊,但需要使用者按照一定的方式編寫程序,使其注意力集中在功能的具體實現上,而不再考慮其他因素。在具體程序的實現上以現成的匹配模塊為基礎進行修改,不需要了解內部結構的定義就可以完成編碼,因此netfilter/iptables是一個程序模塊化實現很好的實例,可以推廣應用。 

關于Linux防火墻iptables中mark模塊分析及怎么進行編寫就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

延长县| 元氏县| 屏东县| 隆子县| 资兴市| 井研县| 衢州市| 吉安市| 宜丰县| 贵港市| 土默特右旗| 巴青县| 息烽县| 长治县| 广宁县| 瓦房店市| 营山县| 江川县| 翁牛特旗| 余江县| 龙川县| 荆门市| 呼图壁县| 灵丘县| 怀宁县| 繁峙县| 安图县| 晋中市| 玉门市| 曲靖市| 栖霞市| 黎城县| 沙坪坝区| 莱芜市| 突泉县| 宣威市| 沁水县| 社旗县| 清河县| 赣州市| 泸溪县|