Firewall

在命令行上使用 nftables 更改策略

  • August 9, 2020

使用 iptables,我可以將例如 INPUT 策略更改為iptables -P INPUT DROPdrop。有什麼選擇可以做同樣的事情nft嗎?

編輯/etc/nftables.conf當然可以,但這不是我想要的。

是的,您可以在不更改其內容的情況下重新定義已經存在的基礎鏈的策略。沒有單獨的關鍵字,它仍然是add

nft add chain family mytable mychain '{ policy drop; }'

命名空間中的完整範例:

test.nft:

flush ruleset

table ip t {
   chain c {
       type filter hook output priority 0; policy accept;
       oif lo accept
       counter
   }
}

設置:

# ip netns add test
# ip netns exec test nft -f test.nft

改造:

# ip netns exec test nft add 'chain ip t c { policy drop; }'
# ip netns exec test nft list ruleset
table ip t {
   chain c {
       type filter hook output priority filter; policy drop;
       oif "lo" accept
       counter packets 0 bytes 0
   }
}

政策改變了,規則沒有改變。在這裡使用 nft 0.9.5 和 kernel 5.7.x 。根據版本行為可能會有所不同。

2015 年的核心送出只允許這樣做:

netfilter:nf_tables:如果存在,則允許在沒有鉤子的情況下更改鏈策略

如果存在現有的基礎鏈,我們必須允許更改預設策略而不指示掛鉤資訊。

但是,如果鏈不存在,我們必須強制掛鉤屬性的存在。

簽字人:Pablo Neira Ayuso pablo@netfilter.org

在此之前(圍繞核心 4.1),必須再次提供基本鏈定義(順便說一下不能更改):

# ip netns exec test nft add 'chain ip t c { type filter hook output priority 0;  policy drop; }'

引用自:https://serverfault.com/questions/1026644