- 主题:output 链重路由到 prerouting 的问题
需要把本机产生的部分流量重新路由,发给 prerouting 来处理,
在网上搜到好多地方说给 output 链的数据包打个标记,meta mark set 1,
这个包就会因为 netfilter 的特性重路由。
但是我在 openwrt kernel 5.10 的系统里通过跟踪数据包,发现打了标记的数据包
并没有重路由,而是继续进入 output 链,然后走 postrouting。
用的是 nftables,创建一个特定的 ip 集合,然后给 output 加钩子:
type route hook output priority -100; policy accept;
ip daddr @iplist ip protocol tcp meta mark set 1 meta nftrace set 1
请问一下这个问题要怎么才能解决?
--
FROM 58.48.87.*
花了几天时间终于搞明白了是怎么回事。
你说的是正解,在 output 里给有需要的数据包打标记 meta set mark,
然后用策略路由 ip rule ip route 重新发给本机,这样才能回到 prerouting,
在 prerouting 里发给 tproxy。
总算搞定用 tproxy 转发 ipv4/v6 的 tcp/udp 了。
设置总共不超过10行,搞清楚并通过测试却费老鼻子劲了。
【 在 pheyx 的大作中提到: 】
: 没用过nftables,iptables有过类似的需求是mangle表里的output打标记,然后ip rule让标记的流量走不同的路由表。源自本机的流量确实不走prerouting。另外做SNAT或MASQUERADE的话,本机的这部分流量需要在nat的postrouting里针对该标记单独处理。
--
FROM 58.48.87.*