[Bug] 防火墙通信规则无法正确匹配IPv6后缀 (Interface ID)

ycsrc】 在 https://github.com/istoreos/istoreos/issues/2642 发布:

  1. 环境信息 (Environment)

路由器型号 (Router Model): EasePi-R1

固件版本 (Firmware Version): iStoreOS 24.10.2 2025080813

防火墙 (Firewall): fw4 (nftables)

  1. 问题描述 (Bug Description)
    此环境是光猫桥接,EasePi-R1作为主路由,eth3作为wan,ipv6正常(否也不会p2p成功)

在防火墙的“通信规则”中,创建一条从 wan 到 lan 的转发规则时,如果“目标地址”仅使用IPv6的后缀(Interface ID,例如 ::c0de:fade:bead:beef),该规则无法生效,流量会被拦截。

但是,如果将“目标地址”设置为一个完整的、包含动态前缀的IPv6地址,规则就能正常生效。

这使得在动态IPv6前缀(家庭宽带常见)环境下,无法为内网设备创建一条长期有效的、精准的P2P应用(如RustDesk)放行规则。

  1. 复现步骤 (Steps to Reproduce)

在内网(LAN)中,确保一台设备拥有一个稳定的公网IPv6地址(例如 2001:db8:abcd:1234:c0de:fade:bead:beef)。为确保稳定,已在该设备上禁用IPv6隐私扩展。

在 iStoreOS 的“网络” → “防火墙” → “通信规则”中,创建以下规则:

名称: Test-IPv6-Suffix-Rule

协议: TCP

源区域: wan

目标区域: lan

目标地址: ::c0de:fade:bead:beef (仅使用示例后缀)

操作: 接受

从外部网络(WAN)向内网设备的完整公网IPv6地址发起一个TCP连接。

观察: 连接失败。

将上述规则中的“目标地址”修改为完整的示例IPv6地址 2001:db8:abcd:1234:c0de:fade:bead:beef。或者不填写

再次从外部网络发起连接。

观察: 连接成功。