在 nftables 中我有这个
table inet my_table {
chain badips {
ip saddr 185.165.190.17 counter packets 0 bytes 0 drop
}
type filter hook input priority filter; policy drop;
# Block badips
counter packets 0 bytes 0 jump badips
}
计划将一长串 IP 放入badips
链中。如何只添加唯一的IP?有什么可以避免添加相同IP的吗?
现在我跑
nft add rule inet my_table badips "ip saddr <IP> counter packets 0 bytes 0 drop"
在nft规则中,我看到没有什么nft create rule
不同的链。
答案1
不要为每个 ip 添加一条规则。只需创建一个规则,然后使用放。例如:
table inet my_table {
set badips_v4 {
type ipv4_addr
}
set badips_v6 {
type ipv6_addr
}
chain badips {
type filter hook input priority filter; policy accept;
counter ip saddr @badips_v4 drop
counter ip6 saddr @badips_v6 drop
}
}
有了这些规则,您可以通过将 IP 添加到适当的集合来阻止它:
nft add element inet my_table badips_v4 { 185.165.190.17 }
如果多次运行该语句,它不会将多个项目添加到set
-- aset
是唯一项目的集合,因此如果 中已存在项目set
,则再次添加它是无操作的。