Nftables

nftables 中是否有某種萬用字元?

  • May 10, 2022

在 iptables 中,可以使用eth+作為介面名稱來匹配以 開頭的任何介面eth(或者作為更實際的範例,這也可以匹配virbr+and veth+,即+似乎具有*shell glob 中的 a 的效果)。

nftables 是否提供類似的工具來匹配介面名稱?我該如何使用它?

是的,通常的萬用字元*nft的**iptables的等價物+。手冊頁直到最近才記錄此(相對較舊的)功能。

從最近足夠的nft手冊頁

與 iptables 一樣,介面名稱前綴上的萬用字元匹配可用於iifnameoifname通過附加星號 (*) 字元進行匹配。但是請注意,與 iptables 不同,nftables 不接受僅由萬用字元組成的介面名稱 - 使用者應該跳過那些始終匹配的表達式。為了匹配文字星號字元,可以使用反斜杠 () 對其進行轉義。

例如:

iifname "veth*" accept

此外,今天似乎不可能在元素中使用帶有萬用字元的一組介面(type ifname或)。typeof iifname

更新:nftables 中的這個2022-04 git commit以及其他一些相關的送出,可能還有足夠的核心支持,最終允許在集合中使用介面萬用字元,使用間隔作為方法:

允許在間隔集中介面名稱:

table inet filter {
        set s {
                type ifname
                flags interval
                elements = { eth*, foo }
        }

這應該在目前 1.0.2 之後的版本中可用。


管理介面動態出現和消失的一種完全不同的方法是,在它們被創建之後(並且可能在它們被啟動之前)用一個標記它們,並且具有匹配介面組的*nftables規則。*例如:

ip link set ppp7 group 42

同時有一個nftables規則重用此元資訊:

iifgroup 42 jump from-ppp

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