大家好!
首先,我不得不说我是 Linux 新手,也是 StackExchange 的新手,所以我希望我问的问题是正确的。
我想在新的 AlmaLinux 安装(v9.1,最小安装,无头管理和安全工具)上使用 nftables 作为防火墙。为了避免妨碍 firewalld,我禁用了 firewalld:
'''
# systemctl disable firewalld
# systemctl stop firewalld
# systemctl mask firewalld
'''
然后安装并更新 nfs 包到 1.0.4-2-el9 并启动服务:
'''
# systemctl enable nftables
# systemctl start nftables
'''
我的意图是为 ip(v4) 和 ip6 创建单独的表(而不是使用 inet),因为我不想使用 ip6。当创建一个单独的 ip6 表时,我可以使用它来丢弃所有 ip6 流量并专注于管理它自己的 ip 表中的 ip(v4)。设置有 2 个接口,一个用于传入 WAN 流量(在它通过防火墙/路由器之后),另一个面向 LAN,包括。服务器的管理。目前接口都在 10.0.0.0/24 上,但是当我想创建一个 DMZ 时,我只需要为 DMZ 配置 WAN 接口。
所以,我创建了表:
'''
# nft add table ip firewall4
# nft add table ip6 firewall6
# nft list tables
'''
确认两个表的存在。
我添加了一个新链并检查了它的内容:
'''
# nft add chain ip6 firewall6 input { type filter hook input priority 0\; }
# nft list table ip6 firewall6
'''
我不断得到的输出(无论我做什么或改变)是:
'''
table ip6 firewall6 {
chain input {
type filter hook input priority filter; policy accept;
}
}
'''
当我尝试另一个优先级(例如 1)时,我得到“type filter hook input priority filter +1; policy。通过键入完整命令(不仅仅是向上)再次删除和插入链
无处不在,在所有示例/操作方法/文档中,我都看到“优先级 0”。我不确定“优先过滤器”是否正确,并且担心要添加的链和规则可能会被忽略,因为显然“过滤器”不同于“0”而且我不明白“过滤器”将如何被优先化同一张表中的其他链。
所以我的问题是:
- “优先过滤器”可以吗,或者当我向表中添加更多时它会改变吗?
- 如果不行,我可以/应该怎么做才能获得优先价值?
非常感谢大家!
当用作链优先级时,关键字
filter
转换为 0,反之亦然(在值略有不同的桥系列中除外)。以前的版本nftables
没有显示这个。较新的版本可以。它的作用没有变化。为避免输出解析优先级,如手册页中所述:
那将是:
其他选项(如
-n
)也可能与其他选项一起执行。这个优先级值来自iptables或 Netfilter 自己的设施历史上使用的优先级,例如在nftables的 wiki 中有描述:Netfilter_hooks - Priority_within_hook
另请注意,优先级不是关于同一个表中的链优先级,而是关于同一个钩子中的链优先级。同一个表中但具有不同挂钩(例如:
prerouting
或forward
)的两条链永远不会比较它们的优先级:挂钩名称已经定义了顺序。只有在同一个 hook 和 family 中的链,即使不在同一个表中,也会有自己的优先级比较,以便知道首先评估哪个链。如果每个家庭的每个挂钩只使用一根链条,那么这个值就无关紧要了。对于 Netfilter 自己的设施,它仍然很重要:-400 的预路由/碎片整理,-200 的预路由/连接跟踪操作等。