iptables、xtables、iptables-nft、xtables-nft、nf_tables、nftables有什麼關係或區別
我已經讀了一段時間了。
我的理解是:
- nftables 是現代 Linux 核心數據包分類框架。nftables 是 iptables 的繼承者。它取代了現有的 iptables、ip6tables、arptables 和 ebtables 框架。
- x_tables 是核心模組的名稱,帶有 iptables、ip6tables、arptables 和 ebtables 使用的共享程式碼部分,因此,Xtables 或多或少用於指代整個防火牆(v4、v6、arp 和 eb)架構。作為系統管理員,我不應該擔心 xtables / x_tables(有些人使用下劃線,所以不確定 xtables 是否與 x_tables 相同)實際上是核心中的一些程式碼。
- nftables 使用 nf_tables,其中 nf_tables 是核心模組的名稱。作為系統管理員,我不應該擔心 nf_tables 實際上是核心中的一些程式碼。
- iptables-nft 看起來像 iptables,但行為卻像 nftables。它的全部目的是從 iptables 遷移到 nftables。
- iptables-nft 使用 xtables-nft,其中 xtables-nft 是核心模組的名稱。作為系統管理員,我不應該擔心 xtables-nft。
請讓我知道以上陳述是對還是錯。如果錯了,請給我正確的說法。
我的觀點是 iptables、ip6tables、ebtables 和 arptable 是 Netfilter 的前端工具集。
它們是一個使用者空間工具集,用於格式化和編譯規則以將它們載入到核心中執行的核心 Netfilter 中。您可以在模組目錄中找到 Netfilter 的所有核心部分,
ls /lib/modules/$(uname -r)/kernel/net/netfilter/
它們具有您的nf_*, nft_*, xt_*
核心模組的形式。這些工具的問題在於它們以規則粒度執行,因此每次調整規則都意味著下載所有核心規則,在二進制 blob 上進行修改,然後將其上傳回核心。當規則變得太多時,此過程會佔用大量 CPU 負載。
nftables 是在一個獨特的工具中重寫了這個工具系列(統治他們所有…啊哈姆),這使它更易於使用且性能更高,但它仍然是 Netfilter 的前端,但主要區別在於它具有一種平滑的語法,能夠解決 Netfilter 的每個部分,並且它能夠直接在 Netfilter 內部修改整個二進制規則集,而無需下載並逐個上傳,這代表了一個很大的收益表現。
這也說明您可以同時使用 iptables 和 nftables 來修改規則,但不建議這樣做,因為您看不到不同規則之間的優先級,或者這種優先級可能不是您想要的。
現在,根據分發策略,可以找到不同的軟體包集來與新的 Netfilter 核心核心集模組一起使用。您提到了 xtables-nft :它只是指定使用者空間工具的中間集(或包)的快捷方式,這些工具
{ip|ip6,eb,arp}tables
可以在新的 Netfilter 核心上工作,就像以前的工具一樣,所以它有幫助和簡化從舊方式到 nftables(新方式)的遷移。還有一個名為 iptables-legacy 的包,可以讓
ip{,6}tables
一組傳統工具與新的 Netfilter 核心以相同的方式工作,而無需將規則直接轉換為 nftables,因此防火牆腳本工具ferm
可以繼續在新安裝的現代核心上工作。橋接兩者,例如
iptables-legacy-save |iptables-nft-restore
,可以將一組舊的 iptables 規則直接轉換為新的 nftables 規則集。問候。