从流量入口理解firewall4

透明代理由网络设备处理符合条件的连接,客户端通常不需要逐个应用填写HTTP代理地址。OpenWrt从22.03开始默认使用firewall4,以nftables为后端;定制固件仍应以实际组件为准。fw4负责生成基础规则,插件可能通过自己的机制加入处理链路,不能把所有规则都视为同一个来源。

从LAN进入的转发流量通常涉及PREROUTING等钩子,路由器本地产生的流量涉及OUTPUT等路径。需要结合具体规则看数据包标记、连接跟踪、地址族和路由结果。先了解透明代理与规则范围,再核对当前设备,不要直接照搬旧fw3或iptables示例。

REDIRECT与TPROXY不是同一个动作

REDIRECT属于NAT处理,会改变目标地址或端口以送往本机服务,代理程序需要合适的原目标恢复方式。TPROXY提供不依赖这类目标地址改写的透明代理机制,需要支持透明套接字的程序,并通常结合标记与策略路由把流量送到本地监听。

两者在内核支持、程序能力、TCP与UDP处理及部署方式上有区别;不能断言PassWall的任意版本或核心固定使用某一种机制。IPv4规则正常也不能直接证明IPv6路径完整。代理监听地址、端口、链名、fwmark及路由表编号,都应从实际运行配置读取。

只读核对生成规则与实际规则

下面是演示查询,命令存在与权限取决于设备环境。fw4 print用于查看fw4生成的内容,nft list ruleset查看当前内核中的规则集;插件动态加入的规则未必全部出现在前者。再用策略路由和路由表检查,核对规则中引用的标记是否有相应的转送路径。

演示 · 只读查询,不修改防火墙
fw4 print
nft list ruleset
ip rule show
ip route show

默认路由表查询未必显示所有策略表,需要结合ip rule中的引用继续查询。观察已有计数器时,使用一次可复现的新连接对照;规则存在不等于请求命中。若域名结果与预期不同,先检查DNS与映射路径,不要在错误目标上反复调整转发规则。

观察规则时要区分链类型、钩子优先级与链内部顺序,不能把界面显示顺序当作内核所有处理步骤的全局顺序。连接跟踪和NAT通常还会影响同一连接的后续数据包;比较计数器时应控制新连接数量,并确认观察的是对应地址族及协议。

从最小测试设备逐步定位

核对代理进程是否运行、目标监听是否存在、LAN设备是否在接管范围,再分别测试TCP、UDP与实际应用。选择一个设备和明确目标,保持其余条件不变。若其他设备正常,继续看来源地址与ACL命中条件,而不是首先改写整台路由器的默认路由。

保留可用管理通道和配置备份。不要清空完整规则集、关闭系统防火墙或无备份改动LAN/WAN核心转发规则。尤其在远程SSH会话中,路由修改可能切断管理连接;先取得规则、核心日志与请求行为的对应证据,再按当前版本的文档实施单项修复。

技术参考:Linux透明代理文档 · OpenWrt防火墙配置。请结合实际版本核对。