#13915·1Panel

[Bug] IPv6 forwarding falsely blocked by Docker veth interfaces

Author: ZeonXrCreated Sep 24, 2026Updated Sep 30, 2026
Labelstype: optimization

Contact Information

No response

1Panel Version

v2.3.2 (stable)

Problem Description

在 1Panel v2.3.2 的“防火墙 → 端口转发”页面添加 IPv6 转发规则时,RA 安全检查阻止操作,并将多个 Docker veth* 列为 accept_ra=1、可能依赖 RA/SLAAC 的网卡。

实际接收 RA 的上联网卡 eth0 已设置 accept_ra=2,有全局 IPv6 地址和 RA 默认路由,宿主机 IPv6 通信正常。告警中的 veth* 全部连接到 Docker bridge,只有 fe80:: 链路本地地址,没有全局 IPv6 地址或 RA 路由;对应的 Docker 网络均为 IPv4-only(EnableIPv6=false)。

初步定位:IPv6RAInterfaces() 会把“没有全局 IPv6 地址”的网卡也加入 RA 候选,再因 accept_ra=1 阻止操作,从而误判这些临时 veth:https://github.com/1Panel-dev/1Panel/blob/v2.3.2/agent/utils/firewall/forwarding/sysctl.go#L100-L123

这与 #13876 中启用转发后实际 IPv6 断网的现象不同:当前上联网卡的 RA 工作正常,是保护检查对 Docker veth 的误判。

Steps to Reproduce

  1. 在 1Panel v2.3.2 主机上运行多个连接 Docker bridge 网络的容器,使宿主机出现 veth*;这些 Docker 网络未启用 IPv6。
  2. 确认 net.ipv6.conf.all.forwarding=1、实际上联网卡 eth0.accept_ra=2,且 eth0 有 RA 默认路由。
  3. 在“防火墙 → 端口转发”页面添加 IPv6 转发规则。
  4. 1Panel 提示多个 veth* 的 accept_ra=1 可能依赖 RA/SLAAC,并阻止操作。
Image

The expected correct result

RA 安全检查应识别实际依赖 RA 的网卡;仅有链路本地地址、连接到 IPv4-only Docker bridge 且没有 RA 路由的临时 veth,不应因默认的 accept_ra=1 阻止 IPv6 转发。实际上联网卡已设置 accept_ra=2 时,应允许创建规则。

Related log output

bash

Additional Information

No response