我已经读了一段时间了。
我的理解是:
请告知我上述说法是否正确或错误。如果错误的话请给我正确的说法。
在 nftables 中配置链时,必须提供一个priority值。几乎所有在线示例都将 a 设置piority为 0;有时,值 100 会与某些挂钩 ( output, postrouting) 一起使用。
nftables wiki不得不说:
优先级可用于对链进行排序或将它们放在某些 Netfilter 内部操作之前或之后。例如,将在连接跟踪操作之前放置优先级为 -300 的 prerouting hook 上的链。
作为参考,这里是 iptables 中使用的不同优先级的列表:
- NF_IP_PRI_CONNTRACK_DEFRAG (-400):碎片整理的优先级
- NF_IP_PRI_RAW (-300):在连接跟踪操作之前放置的原始表的传统优先级
- NF_IP_PRI_SELINUX_FIRST (-225):SELinux 操作
- NF_IP_PRI_CONNTRACK (-200):连接跟踪操作
- NF_IP_PRI_MANGLE (-150): mangle 操作
- NF_IP_PRI_NAT_DST (-100):目标 NAT
- NF_IP_PRI_FILTER(0):过滤操作,过滤表
- NF_IP_PRI_SECURITY (50):例如可以设置secmark的安全表的位置
- NF_IP_PRI_NAT_SRC (100): 源 NAT
- NF_IP_PRI_SELINUX_LAST (225):包退出时的 SELinux
- NF_IP_PRI_CONNTRACK_HELPER (300):退出时的连接跟踪
这说明了priority控件与内部 Netfilter 操作的交互,但仅提及了 iptables 使用的值作为示例。
在哪些情况下是priority相关的(即必须设置为值?0)?仅适用于具有相同钩子的多个链条?结合 nftables 和 iptables 怎么样?哪些内部 Netfilter 操作与确定正确priority值有关?