祝大家有个愉快的一天!
首先,我必须说我是 Linux 新手并且刚接触 StackExchange,所以我希望我能以正确的方式提出我的问题。
我想在新的 AlmaLinux 安装(v9.1,最小安装,无头管理和安全工具)上使用 nftables 作为防火墙。为了避免防火墙妨碍,我使用以下命令禁用了防火墙:
'''
# 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)时,我得到“类型过滤器钩子输入优先级过滤器 +1;策略。通过键入完整命令(而不仅仅是 up up)再次删除并插入链
在所有示例/操作方法/文档中,我都看到“优先级 0”。我不确定“优先级过滤器”是否正确,担心要添加的链和规则可能会被忽略,因为“过滤器”显然不同于“0”,我不明白“过滤器”如何与同一张表中的其他链一起优先排序。
我的问题是:
- “优先级过滤器”可以吗?或者当我在表中添加更多内容时它会改变吗?
- 如果不行,我能/应该做什么来获得优先值?
在此向大家表示衷心的感谢!
答案1
当用作链优先级时,关键字filter
将转换为 0,反之亦然(桥系列除外,因为桥系列的值略有不同)。以前的版本nftables
没有显示这一点。新版本会显示。其角色没有变化。
为了避免输出解决优先级问题,如手册页:
-y
,--numeric-priority
以数字形式显示基础链优先级。
那将是:
nft -y list ruleset
其他选项(如-n
)也可能与其他事项一起完成。
此优先级值来自于iptables或者通过 Netfilter 自己的工具,例如在nftables' 维基百科那里:Netfilter_hooks — Priority_within_hook
nftables 家庭 典型的钩子 nft 关键字 价值 Netfilter 内部优先级 描述 [...] inet、ip、ip6、arp、netdev 全部 筛选 0 NF_IP_PRI_过滤器 过滤操作,过滤表 [...]
还要注意的是,优先级不是同一张表中的链优先级,而是同一张表中的链优先级。钩。同一表中但具有不同钩子的两个链(例如:prerouting
或forward
)永远不会比较它们的优先级:钩子名称已经定义了顺序。只有同一钩子和系列中的链(即使不在同一表中)才会比较它们的优先级,以了解哪个链首先被评估。如果每个系列中每个钩子只使用一个链,那么这个值就无关紧要了。它仍然可能与 Netfilter 自己的设施有关:预路由/碎片整理在 -400,预路由/连接跟踪操作在 -200 等。