nftables 不执行路由,仅匹配决策;SIEM 探针接入需分旁路镜像、桥接串联、本地重定向三种模式,常用 redirect 动作将未匹配流量导向本机 127.0.0.1:5040,或 mark+策略路由分流至远端探针。

不能让 nftables “天生路由”流量到 SIEM 探针网卡——nftables 本身不执行路由动作,它只做匹配与决策(accept、drop、log、redirect、mangle 等),真正的路由由内核路由子系统(FIB)和策略路由(ip rule + ip route)完成。所谓“将未匹配流量送至 SIEM 探针分析”,实际是两步协同:先用 nftables 标记(mark)或重定向(redirect)目标流量,再配合路由策略或透明代理机制,使其经由探针所在网卡路径转发或镜像。
明确 SIEM 探针的接入模式
SIEM 探针网卡通常有三种部署方式,配置逻辑完全不同:
- 旁路镜像(SPAN/TAP 模式):探针网卡仅接收交换机镜像端口的复制流量,不参与真实转发。此时无需 nftables 路由,只需确保镜像源覆盖关键链路;nftables 可用于在本机对原始流量做预筛选(如 log + counter),但不改变流向。
-
串联透明桥接模式:探针网卡作为 bridge 的一个端口(如 br0: eth0 + siem0),所有流量经桥转发。此时需启用 bridge netfilter(
br_netfilter模块),并把 nftables 规则挂到bridge input或forwardhook,配合meta iifname "siem0"或fib oifname "siem0"控制进出。 -
本地监听+流量重定向模式:SIEM 探针运行在本机(如 127.0.0.1:5040),需将指定流量透明重定向到本地端口。这是最常用且可控的方式,依赖 nftables 的
redirect或dnat动作。
使用 redirect 将未匹配流量导向本地 SIEM 进程
假设 SIEM 接收器监听 127.0.0.1:5040(如 Filebeat、Syslog-ng 或专用探针),你希望将所有未被其他规则显式放行的入向流量(如来自内网接口 eth0)重定向至此进行深度解析:
- 确保内核支持 socket redirect:
CONFIG_NETFILTER_XT_TARGET_REDIRECT=y(现代发行版默认开启) - 添加 nftables 规则,放在 filter 表的
prerouting链末尾(priority -100,早于连接跟踪但晚于 raw):
注意:redirect 仅适用于 IPv4 TCP/UDP 流量,且目标端口必须由本地进程绑定。若需覆盖 ICMP 或其他协议,改用 log + queue(需用户态程序如 nfqws 或自研工具从 netlink queue 拉取)。
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
用 mark + 策略路由实现非透明分流
若 SIEM 探针运行在另一台机器(如 192.168.100.200),而本机有独立探针网卡(如 siem0,IP 192.168.100.1/24),可组合标记与路由:
- 先用 nftables 标记未匹配流量:
nft add rule inet filter forward iifname "eth0" oifname != "siem0" meta mark set 0x100 - 创建专用路由表(如 ID 200)并添加规则:
echo "200 siemout" >> /etc/iproute2/rt_tablesip route add default via 192.168.100.200 dev siem0 table siemoutip rule add fwmark 0x100 table siemout - 确保
siem0网卡启用、无 IP 冲突,并关闭反向路径过滤:sysctl -w net.ipv4.conf.siem0.rp_filter=2
避免常见失效点
nftables 规则看似写对却无效果,往往卡在以下环节:
- hook 位置错误:想处理转发包却加在
input链;想拦截出向却用了prerouting - priority 冲突:未设 priority 或设为非常规值(如 999),导致规则插入位置异常,被 conntrack 或 br_netfilter 截断
- 流量未达 netfilter:启用了 eBPF TC/XDP 程序、SELinux 强制丢包、或云平台 VPC 插件劫持了转发路径
- SIEM 端口未监听或防火墙拦截:用
ss -tlnp | grep 5040和tcpdump -i siem0 port 5040双向验证










