Networking

iptables、xtables、iptables-nft、xtables-nft、nf_tables、nftables有什麼關係或區別

  • January 26, 2022

我已經讀了一段時間了。

我的理解是:

  • 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 規則集。

問候。

引用自:https://unix.stackexchange.com/questions/687857