使用 nftables 和 ipv6 基于 MAC 的路由

使用 nftables 和 ipv6 基于 MAC 的路由

我想匹配来自服务器的每个流量,但它位于同一接口。

MAC 88:7e:25:d3:90:0b > ens19 > table 147

所以我制定了这个nftables规则

table ip filter { # handle 3
    chain input { # handle 1
            type filter hook input priority filter; policy accept;
            iif "ens19" ether saddr 88:7e:25:d3:90:0b meta mark set 0x00000093 # handle 2
            iif "ens19" ether saddr 08:05:e2:04:ce:b3 meta mark set 0x00003417 # handle 3
    }

}

以及指定路由表的 ip 规则

ip rule add from all fwmark 0x93 lookup 147
ip rule add from all fwmark 13335 lookup 147
ip -6 rule add from all fwmark 0x93 lookup 147
ip -6 rule add from all fwmark 13335 lookup 147

沙克信息

但我用它tshark来查看它是否有效,它显示没有传入的包,并且我无法 ping 该地址。所以匹配收入流是有问题的。

如果我使用

 from all iif ens19 lookup 147

代替

ip -6 rule add from all fwmark 0x93 lookup 147
ip -6 rule add from all fwmark 13335 lookup 147

nftables它有效,所以我的规则一定有问题。

有谁知道为什么?

答案1

hook input专门用于本地主机是最终目的地的数据包 – 它只能到达路由决策已经做出,因为 netfilter 就是这样知道哪些数据包通过“钩子输入”链处理以及哪些数据包通过“钩子转发”链处理。所以到那时,你的政策规则就不再重要了。

相反,我认为你需要hook prerouting(并且可能需要priority raw?)。

相关内容