You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让本地数据包经过nat/prerouting钩子而非直接进入filter/input

问题:服务器内部访问自身LAN地址无法触发DNAT规则

问题背景

服务器上有服务仅监听localhost,因限制无法改为监听0.0.0.0。已配置nftables的DNAT规则实现外部流量转发至该localhost服务,但从服务器内部访问自身LAN地址192.168.5.19时无法成功访问。

排查结果

外部来源的数据包会经过nat/prerouting钩子并完成DNAT转发,但服务器自身生成的数据包直接进入filter/input钩子,无法触发DNAT规则。

用于排查的nft trace脚本

table inet trace
delete table inet trace

table inet trace {
        chain input {
                type filter hook input priority filter;
                tcp dport 80 meta nftrace set 1;
        }
        chain prerouting {
                type nat hook prerouting priority -100;
                tcp dport 80 meta nftrace set 1;
        }
}

内部执行curl 192.168.5.19的trace日志

trace id 4a31a955 inet trace input packet: iif "lo" @ll,0,112 0x800 ip saddr 192.168.5.19 ip daddr 192.168.5.19 ip dscp cs0 ip ecn not-ect ip ttl 64 ip id 27513 ip protocol tcp ip length 60 tcp sport 56176 tcp dport 80 tcp flags == syn tcp window 65495 
trace id 4a31a955 inet trace input rule tcp dport 80 meta nftrace set 1 (verdict continue)
trace id 4a31a955 inet trace input verdict continue meta mark 0xffffffff 
trace id 4a31a955 inet trace input policy accept meta mark 0xffffffff 

求助需求

如何让服务器自身生成的数据包也能进入prerouting钩子,从而触发DNAT规则实现内部访问自身LAN地址的转发?


内容的提问来源于stack exchange,提问作者Mildred

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 09:05:31