Linux

檢查是否在使用 iptables 或 nftables

  • May 26, 2020

給定一個處於未知配置狀態的主機,我想知道是否有一種有效的方法可以非互動地確定防火牆規則集是否由iptablesor管理nftables

聽起來很簡單,我已經考慮了很多,但還沒有給出有意義的答案來編寫腳本……

最近在 Kubernetes 中解決了這個問題的一個變體,因此值得看看那裡做了什麼。(變體是是否使用iptables-legacyiptables-nft及其 IPv6 變體來驅動主機的規則。)

Kubernetes 採用的方法是查看各個“保存”命令和(及其 IPv6 變體)輸出的iptables-legacy-saveiptables-nft-save。如果前者產生十行或更多的輸出,或者產生的輸出比後者多,則認為iptables-legacy應該使用;否則,iptables-nft應該使用它。

在您的情況下,決策樹可能如下所示:

  • 如果iptables未安裝,請使用nft;
  • 如果nft未安裝,請使用iptables;
  • 如果iptables-save不產生任何定義規則的輸出,請使用nft;
  • 如果nft list tables並且nft list ruleset不產生任何輸出,請使用iptables.

如果iptables-savenft list ...都產生輸出,而iptables不是iptables-nft,我不確定自動化過程可以決定。

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