关于nftables在output hook中设置mark路由不通的问题

我这里排查到两点原因
1. output hook只能是rotue链,不能是filter链,而prerouting则只能是filter链
要这样写
nft add chain inet fw4 gfw_output { type route hook output priority mangle\; policy accept\; }
filter的优先级是比route低的
官方是这么写的

filter: Supported by arp, bridge, ip, ip6 and inet table families.
route: Mark packets (like mangle for the output hook, for other hooks use the type filter instead), supported by ip and ip6.
nat: In order to perform Network Address Translation, supported by ip and ip6.
2. 本地出口源IP的问题
可能因为默认路由在wan口上,所以本地发包源IP始终是wan口上的IP,而这个IP是运营商分配的100.64.0.0/10段的IP,这样就导致远端服务器找不到到100.64.0.0/10的路由,数据包有去无回,需要在服务器上配置这个网段的路由
如果是wireguard在AllowedIPs中添加100.64.0.0/10网段即可。

参考:
https://forums.gentoo.org/viewtopic-t-1136379-start-0.html

发表回复