Nftables

nftables 刪除鏈中的所有規則

  • January 19, 2020

mytable我在錶鍊中有許多規則mychain

> sudo nft -a list table mytable
table ip mytable { # handle 8
       chain mychain { # handle 1
               type filter hook input priority filter; policy accept;
               tcp dport 5550 accept # handle 18
               tcp dport 5551 accept # handle 19
               tcp dport 5552 accept # handle 20
               tcp dport 5553 accept # handle 21
               tcp dport 5554 accept # handle 22
       }
}

根據nftables wiki,應該可以從指定的鏈中刪除所有規則。但是以下命令返回錯誤:

> sudo nft delete rule mytable mychain
Error: syntax error, unexpected newline, expecting handle
delete rule mytable mychain
                          ^

mychain在不迭代規則句柄的情況下刪除所有規則的正確命令是什麼?

nftables wiki 中仍然存在一些錯誤。實際的語法非常合乎邏輯:

  • 刪除一切
nft flush ruleset
  • 清空一個表(ip如果未指定,預設為家庭)。例如對於my table
nft flush table mytable
  • 刪除一個表(這也先清空它)。例如對於mytable
nft delete table mytable
  • 清空鏈條(同上)。例如對於mytable mychain
nft flush chain mytable mychain
  • 刪除鏈(同上)。例如對於mytable mychain
nft delete chain mytable mychain
  • 刪除規則(這仍然只能通過句柄引用來完成)。例如對於tcp dport 5550 accept # handle 18
nft delete rule mytable mychain handle 18

要記住的是該動作是做什麼的。如果你想在級別做一個操作,那很正常,有chain關鍵字。

如有疑問,nft手冊頁通常更準確,但當然必須提前知道資訊位於CHAINS部分而不是RULES部分:

鏈條

{添加 | 創建}鏈

$$ family $$錶鍊$$ { type type hook hook [device device] priority priority ; [policy policy ;] } $$

{刪除 | 列表 | 沖洗} $$ family $$ 錶鍊 刪除
$$ family $$表句柄句柄

重命名鏈$$ family $$錶鍊新名稱 $$ … $$

flush刷新指定鏈的所有規則。

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