天天看點

iptables,nftables sucks?

折騰了一下午空壓機,失敗,作罷!作為一個搞IT的,雖然不會去關注怎麼修主機闆,但起碼還是會持續關注自己感興趣的那一面的,比如iptables,Netfilter等,對于空氣壓縮機,Python,氣缸,C++對象模型之類的,不是我的菜啊!

       在論壇看到有人吐嘈,簡短的一句話:

ipfwadm.. ipchains.. iptables.. nftables... progress sucks. :(

是啊,我也這麼覺得!

記 得2006年畢業後的實習,曹老師讓我第一次知道有個東西叫做iptables,好幾個月,真的是好幾個月,我都搞不清楚 table,chain,rule的差別,此後換工作後再也沒有遇到過曹老師那樣肯不厭其煩教我的人,是以對于iptables的了解也就暫時擱置了,直 到後來知道了Netfilter之後,才真正徹底了解了iptables。對iptables,談不上什麼感覺,我一直把它當成一個基于 Netfilter的工具,并且一直對它的周遊比對方式不認可。

       既然有了iptables,工程師就有了工具,大家都是隻是用用而已,加上幾年前都是100M網絡,它的性能問題基本不是問題,是以iptable也就不 僅僅是用用而已了,簡直成了一件利器,直到1000M卡的到來,iptables基本就被排除在高性能網關之外了。那麼以前精通iptables的人會受 冷落嗎?會的。但是如果你精通Netfilter,那就不會。你可以用ipset,你可以用nf-hipac,你可以用conntrack解除安裝硬體,它們 都是基于Netfilter的架構實作的,即它們都是對Netfilter的填充。

       事實上,懂iptables,甚至精通iptables的人從來都沒有懂JAVA或者C++的人吃香,因為iptables并不是程式設計範疇,注定永遠被排 出在程式員圈子之外,對于系統管理範疇,Python,Perl也比Linux上的某個單獨的工具比如iptables,snort受關注更普遍,那麼對 于網管呢?很顯然,Cisco,H3C認證工程師是看不上iptables的。是以iptables就這樣被排除了,它和任何職業的挂鈎都顯得很勉強,它 成了雞肋。類似的,snort也一樣。然而,我卻獨愛這類小工具,并一直保持着對它們的跟蹤,當我深入了解了它們之後,發現,雖然它們可能并不會獨自登上 大雅之堂,但是你可以在很多地方發現它們的身影,以及它們的思想。

       OpenWRT,這是一個我極端看不上的項目,有點欺世盜名的感覺,但是它卻極端成功!也許很多人都知道這個OpenWRT,但是卻不知道WRT。 OpenWRT其實就是保留了WRT的功能接口而已,旨在複制一個自由的WRT,那麼WRT是什麼?它是Cisco公司的Linksys路由器版本。我不 曉得WRT使用了什麼技術,但是我知道OpenWRT使用了iptables這類很多人都看不上的小東西。

       iptables sucks?yes!自 Linux初創,一直都在尋找高效的包分類架構,直到有了Netfilter之後,架構的建構工作才徹底交給了架構的填充者,核心mainline本身隻 提供了Netfilter本身之後,再也不過問江湖之事了。一路跌跌撞撞的探索,從BSD的ipfw到ipchains,然後就是iptables,後來 發現iptables結構太不妙,代碼不緊湊,于是有了nftables,總之坎坷依然正在進行,但是已經和核心沒有關系了。即便和核心沒有關系,核心中 不還是有x_tables.c嗎?将這部分替換成nftables嗎?如何聯絡這部分的kernel維護人員?這都是問題。

       按照Linux子產品的開發風格,一般都是一個核心子產品外加一個使用者utils工具集,也就是說程式的開發者需要提供這兩部分的内容。這一點 上,xtables-addons項目做的比較好。然而xtables-addons是在iptables的架構内執行的,它可分離開發的隻是 match/target子產品而已,iptables的主幹卻還是不敢傷筋動骨。也就是說,xtables-addons隻是iptables的擴充,正 如它的名字所表達的那樣。是以nftables替換iptables的程序就不再僅僅是一個子產品/utils配對開發的過程,而是一個平滑過渡的過程,兼 容性的支援又一次成了撒旦。

       平滑過渡的需求也最終确定了nftables進入核心的過程将是一個漫長的過程。

       nftables相比iptables性能有提高嗎?能駕馭10G環境嗎?no,no,no...這不是nftables的職責範圍,它要是能作為一個通 用架構存在,使得nf-hipac這樣的好東西不再需要自己注冊nf_hook_ops的話,那就是它的成功。它要是能提供一套簡單易用的API,可以快 速開發match/target,像xtables-addons一樣,那就是它的成功,如果它甚至可以讓你自定義比對方式,比如使用hipac算法,使 用hash tuple算法,或者可以自定義包分類算法,那就是它的成功。

            nftables sucks?NO!

 本文轉自 dog250 51CTO部落格,原文連結:http://blog.51cto.com/dog250/1581339